[Lldb-commits] [lldb] r223423 - Kill any python test script that takes more than 5 minutes
Vince Harron
vharron at google.com
Thu Dec 4 16:41:02 PST 2014
This submit was authored by Chaoren Lin, BTW.
On Thu, Dec 4, 2014 at 4:23 PM, Vince Harron <vharron at google.com> wrote:
> Author: vharron
> Date: Thu Dec 4 18:23:03 2014
> New Revision: 223423
>
> URL: http://llvm.org/viewvc/llvm-project?rev=223423&view=rev
> Log:
> Kill any python test script that takes more than 5 minutes
>
> There is at least one test that hangs on the Linux debian buildbot.
>
> When that test hangs, the buildbot kills dosep which loses all test
> results. This change kills just the hung test and should let us see
> which test is hanging. This is useful for that test and any others
> in the future which start hanging.
>
>
> Modified:
> lldb/trunk/test/dosep.py
>
> Modified: lldb/trunk/test/dosep.py
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/test/dosep.py?rev=223423&r1=223422&r2=223423&view=diff
>
> ==============================================================================
> --- lldb/trunk/test/dosep.py (original)
> +++ lldb/trunk/test/dosep.py Thu Dec 4 18:23:03 2014
> @@ -7,15 +7,29 @@ Run the test suite using a separate proc
> import multiprocessing
> import os
> import platform
> +import shlex
> +import subprocess
> import sys
>
> from optparse import OptionParser
>
> -# Command template of the invocation of the test driver.
> -template = '%s %s/dotest.py %s -p %s %s'
> +def try_timeout(command):
> + if not sys.platform.startswith("win32"):
> + try:
> + return {0: "passed", 124: "timed out"}.get(
> + subprocess.call(["timeout", "5m"] + command), "failed")
> + except OSError:
> + pass
> + try:
> + return {0: "passed", 124: "timed out"}.get(
> + subprocess.call(["gtimeout", "5m"] + command), "failed")
> + except OSError:
> + pass
> + return "passed" if subprocess.call(command) == 0 else "failed"
>
> def process_dir(root, files, test_root, dotest_options):
> """Examine a directory for tests, and invoke any found within it."""
> + timed_out = []
> failed = []
> passed = []
> for name in files:
> @@ -29,12 +43,17 @@ def process_dir(root, files, test_root,
> if os.path.islink(path):
> continue
>
> - command = template % (sys.executable, test_root, dotest_options
> if dotest_options else "", name, root)
> - if 0 != os.system(command):
> + command = ([sys.executable, "%s/dotest.py" % test_root] +
> + (shlex.split(dotest_options) if dotest_options else
> []) +
> + ["-p", name, root])
> + exit_status = try_timeout(command)
> + if "passed" != exit_status:
> + if "timed out" == exit_status:
> + timed_out.append(name)
> failed.append(name)
> else:
> passed.append(name)
> - return (failed, passed)
> + return (timed_out, failed, passed)
>
> in_q = None
> out_q = None
> @@ -66,15 +85,17 @@ def walk_and_invoke(test_root, dotest_op
> for work_item in test_work_items:
> test_results.append(process_dir_worker(work_item))
>
> + timed_out = []
> failed = []
> passed = []
>
> for test_result in test_results:
> - (dir_failed, dir_passed) = test_result
> + (dir_timed_out, dir_failed, dir_passed) = test_result
> + timed_out += dir_timed_out
> failed += dir_failed
> passed += dir_passed
>
> - return (failed, passed)
> + return (timed_out, failed, passed)
>
> def main():
> test_root = sys.path[0]
> @@ -107,7 +128,8 @@ Run lldb test suite using a separate pro
> num_threads = 1
>
> system_info = " ".join(platform.uname())
> - (failed, passed) = walk_and_invoke(test_root, dotest_options,
> num_threads)
> + (timed_out, failed, passed) = walk_and_invoke(test_root,
> dotest_options,
> + num_threads)
> num_tests = len(failed) + len(passed)
>
> print "Ran %d tests." % num_tests
> @@ -115,7 +137,9 @@ Run lldb test suite using a separate pro
> failed.sort()
> print "Failing Tests (%d)" % len(failed)
> for f in failed:
> - print "FAIL: LLDB (suite) :: %s (%s)" % (f, system_info)
> + print "%s: LLDB (suite) :: %s (%s)" % (
> + "TIMEOUT" if f in timed_out else "FAIL", f, system_info
> + )
> sys.exit(1)
> sys.exit(0)
>
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
>
--
Vince Harron | Technical Lead Manager | vharron at google.com | 858-442-0868
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20141204/05895cc8/attachment.html>
More information about the lldb-commits
mailing list