From 0026c2804f764b08a606de02dfecf4b487e944f3 Mon Sep 17 00:00:00 2001 From: Ramiro Polla Date: Fri, 16 Jan 2015 19:03:07 +0100 Subject: [PATCH] validate: launcher: Use a Queue to test for test completion TestManager will use a Queue to track progress for all tests. This commit implements a queue inside Test to simplify the transition. Patch 3/4 to make TestManager handle waiting for processes instead of expecting each Test to do it. https://bugzilla.gnome.org/show_bug.cgi?id=743063 --- validate/launcher/baseclasses.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/validate/launcher/baseclasses.py b/validate/launcher/baseclasses.py index 393e401106..b4414225cb 100644 --- a/validate/launcher/baseclasses.py +++ b/validate/launcher/baseclasses.py @@ -29,6 +29,7 @@ import signal import urlparse import subprocess import threading +import Queue import reporters import ConfigParser import loggable @@ -62,6 +63,7 @@ class Test(Loggable): self.process = None self.proc_env = None self.thread = None + self.queue = Queue.Queue() self.duration = duration self.clean() @@ -194,7 +196,10 @@ class Test(Loggable): def wait_process(self): while True: # Check process every second for timeout - self.thread.join(1.0) + try: + self.queue.get(timeout=1) + except Queue.Empty: + pass if self.process_update(): break @@ -272,6 +277,8 @@ class Test(Loggable): shell=True, env=self.proc_env) self.process.wait() + if self.result is not Result.TIMEOUT: + self.queue.put(None) def run(self): self.open_logfile()