harness: Added possibility to set test timeout on per-machine basis.
authorSimon Gerber <simon.gerber@inf.ethz.ch>
Fri, 5 Dec 2014 14:26:08 +0000 (15:26 +0100)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Fri, 5 Dec 2014 14:26:14 +0000 (15:26 +0100)
+ set gem5 test timeout to 15 mins.

tools/harness/machines/__init__.py
tools/harness/machines/gem5.py
tools/harness/tests/common.py

index 4e4231d..fba0f0d 100644 (file)
@@ -52,6 +52,10 @@ class Machine(object):
         """Returns a machine-specific timeout (in seconds), or None for the default"""
         return None
 
+    def get_test_timeout(self):
+        """Returns a machine-specific timeout (in seconds), or None for the default"""
+        return None
+
     def get_tftp_dir(self):
         """Return a unique TFTP boot directory for this machine."""
         raise NotImplementedError
index 3bbda57..7f66eb5 100644 (file)
@@ -43,6 +43,11 @@ class Gem5MachineBase(Machine):
         # we set this to 10 mins since gem5 is very slow
         return 600
 
+    def get_test_timeout(self):
+        # give gem5 tests enough time to complete
+        # 20 mins
+        return 15 * 60
+
     def get_machine_name(self):
         return self.name
 
index 20416f1..c28046b 100644 (file)
@@ -54,13 +54,13 @@ class TestCommon(Test):
     def setup(self, build, machine, testdir):
         # build the default set of targets
         targets = self.get_build_targets(build, machine)
-        # HACK: we write menu.lst here for arm_gem5 target, since it must
-        # be known at compile time, also set test time out to 20 mins
-        # this should really be set per test, since multihop_latency won't complete in 20 mins
-        if machine.get_bootarch() == "arm_gem5":
-               path = os.path.join(build.build_dir, 'menu.lst')
-               machine._write_menu_lst(self.get_modules(build,machine).get_menu_data('/'), path)
-               self.test_timeout_delta = datetime.timedelta(seconds=1200)
+        # set custom test timeout if machine specifies one
+        test_timeout_secs = machine.get_test_timeout()
+        if not test_timeout_secs:
+            test_timeout_secs = DEFAULT_TEST_TIMEOUT
+        else:
+            test_timeout_secs = datetime.timedelta(seconds=test_timeout_secs)
+        self.test_timeout_delta = test_timeout_secs
         build.build(targets)
 
         # lock the machine