cosmetic - when displaying Completer short timeouts (in the order of seconds and...
[tests.git] / system / Completer.py
index 3cf724e..9839ce7 100755 (executable)
@@ -9,18 +9,26 @@ import utils
 ### takes in argument a list of tasks that are instances 
 ### of a CompleterTask subclass
 class Completer:
-    def __init__ (self, tasks, verbose=True):
+    def __init__ (self, tasks, verbose=True, message=None):
         self.tasks=tasks
         self.verbose=verbose
-    def run (self, timeout_timedelta, silent_timedelta, period=None):
-        timeout = datetime.now()+timeout_timedelta
-        timeout_minutes = timeout_timedelta.total_seconds()/60
+        self.message="({})".format(message) if message else ""
+    def run (self, timeout_timedelta, silent_timedelta, period):
+        begin = datetime.now()
+        timeout = begin+timeout_timedelta
+        timeout_seconds = timeout_timedelta.total_seconds()
+        timeout_minutes = timeout_seconds/60
         graceout = datetime.now()+silent_timedelta
-        silent_minutes = silent_timedelta.total_seconds()/60
+        silent_seconds = silent_timedelta.total_seconds()
+        silent_minutes = silent_seconds/60
         period_seconds=int(period.total_seconds())
         if self.verbose:
-            utils.header("max timeout is %d minutes, silent for %d minutes (period is %s s)"%\
+            if timeout_seconds >= 120:
+                utils.header("max timeout is %d minutes, silent for %d minutes (period is %s s)"%\
                              (timeout_minutes,silent_minutes,period_seconds))
+            else:
+                utils.header("max timeout is %d seconds, silent for %d seconds (period is %s s)"%\
+                             (timeout_seconds,silent_seconds,period_seconds))
         tasks=self.tasks
         while tasks:
             fine=[]
@@ -28,7 +36,12 @@ class Completer:
                 success=task.run (silent=datetime.now() <= graceout)
                 if success: fine.append(task)
             for task in fine: tasks.remove(task)
-            if not tasks: return True
+            if not tasks:
+                if self.verbose:
+                    duration = datetime.now()-begin
+                    print "total completer {} {}s".format(self.message,
+                                                          int(duration.total_seconds()))
+                return True
             if datetime.now() > timeout:
                 for task in tasks: 
                     task.failure_epilogue()