Add a 2 minutes timeout on xpcshell tests
authorMike Hommey <mh@glandium.org>
Mon, 27 Dec 2010 09:44:28 +0000 (10:44 +0100)
committerMike Hommey <glandium@debian.org>
Thu, 14 Feb 2019 09:35:06 +0000 (09:35 +0000)
Gbp-Pq: Topic debian-hacks
Gbp-Pq: Name Add-a-2-minutes-timeout-on-xpcshell-tests.patch

testing/xpcshell/runxpcshelltests.py

index 8c9b11e077c8d87ea70ff11ecd3dcc5e853987e5..96b9fc840a670f0aad20549bcbe03741a509b923 100755 (executable)
@@ -12,6 +12,7 @@ import mozdebug
 import os
 import random
 import re
+import select
 import shutil
 import signal
 import sys
@@ -700,9 +701,23 @@ class XPCShellTestThread(Thread):
             if self.interactive:
                 self.log.info("%s | Process ID: %d" % (name, self.proc_ident))
 
-            # Communicate returns a tuple of (stdout, stderr), however we always
-            # redirect stderr to stdout, so the second element is ignored.
-            process_output, _ = self.communicate(proc)
+            if self.pStdout == PIPE:
+                process_stdout = ""
+                while True:
+                    (r, w, e) = select.select([proc.stdout], [], [], 120)
+                    if len(r) == 0:
+                        process_stdout += "TEST-UNEXPECTED-FAIL | %s | application timed out after 120 seconds with no output" % (test)
+                        proc.kill()
+                        break
+                    line = proc.stdout.read(1)
+                    if line == "":
+                        break
+                    process_stdout += line
+                proc.wait()
+            else:
+                # Communicate returns a tuple of (stdout, stderr), however we always
+                # redirect stderr to stdout, so the second element is ignored.
+                process_output, _ = self.communicate(proc)
 
             if self.interactive:
                 # Not sure what else to do here...