[pypy-commit] pypy default: add watchdog_nt.py lost in split-rpython

bdkearns noreply at buildbot.pypy.org
Mon Jan 28 09:14:14 CET 2013


Author: Brian Kearns <bdkearns at gmail.com>
Branch: 
Changeset: r60575:c73d9156092a
Date: 2013-01-28 03:08 -0500
http://bitbucket.org/pypy/pypy/changeset/c73d9156092a/

Log:	add watchdog_nt.py lost in split-rpython

diff --git a/rpython/tool/watchdog_nt.py b/rpython/tool/watchdog_nt.py
new file mode 100644
--- /dev/null
+++ b/rpython/tool/watchdog_nt.py
@@ -0,0 +1,33 @@
+import sys, os
+import threading
+import ctypes
+
+def childkill(pid):
+    global timedout
+    timedout = True
+    sys.stderr.write("==== test running for %d seconds ====\n" % timeout)
+    sys.stderr.write("="*26 + "timedout" + "="*26 + "\n")
+    ctypes.windll.kernel32.TerminateProcess(pid, 1)
+
+if __name__ == '__main__':
+    PROCESS_TERMINATE = 0x1
+
+    timeout = float(sys.argv[1])
+    timedout = False
+
+    pid = os.spawnv(os.P_NOWAIT, sys.argv[2], sys.argv[2:])
+
+    t = threading.Timer(timeout, childkill, (pid,))
+    t.start()
+    while True:
+        try:
+            pid, status = os.waitpid(pid, 0)
+        except KeyboardInterrupt:
+            continue
+        else:
+            t.cancel()
+            break
+
+    #print 'status ', status >> 8
+    sys.exit(status >> 8)
+


More information about the pypy-commit mailing list