diff options
-rw-r--r-- | meta/classes/testimage.bbclass | 12 | ||||
-rw-r--r-- | meta/lib/oeqa/oetest.py | 6 |
2 files changed, 16 insertions, 2 deletions
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass index 7c783ea065..19a37cb037 100644 --- a/meta/classes/testimage.bbclass +++ b/meta/classes/testimage.bbclass @@ -236,6 +236,7 @@ def testimage_main(d): import os import oeqa.runtime import time + import signal from oeqa.oetest import loadTests, runTests from oeqa.targetcontrol import get_target_controller from oeqa.utils.dump import get_host_dumper @@ -273,12 +274,20 @@ def testimage_main(d): self.imagefeatures = d.getVar("IMAGE_FEATURES", True).split() self.distrofeatures = d.getVar("DISTRO_FEATURES", True).split() manifest = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME", True) + ".manifest") + self.sigterm = False + self.origsigtermhandler = signal.getsignal(signal.SIGTERM) + signal.signal(signal.SIGTERM, self.sigterm_exception) try: with open(manifest) as f: self.pkgmanifest = f.read() except IOError as e: bb.fatal("No package manifest file found. Did you build the image?\n%s" % e) + def sigterm_exception(self, signum, stackframe): + bb.warn("TestImage received SIGTERM, shutting down...") + self.sigterm = True + self.target.stop() + # test context tc = TestContext() @@ -293,8 +302,8 @@ def testimage_main(d): target.deploy() - target.start() try: + target.start() if export: exportTests(d,tc) else: @@ -311,6 +320,7 @@ def testimage_main(d): else: raise bb.build.FuncFailed("%s - FAILED - check the task log and the ssh log" % pn ) finally: + signal.signal(signal.SIGTERM, tc.origsigtermhandler) target.stop() testimage_main[vardepsexclude] =+ "BB_ORIGENV" diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py index ff62c30268..0fe68d4d52 100644 --- a/meta/lib/oeqa/oetest.py +++ b/meta/lib/oeqa/oetest.py @@ -145,7 +145,11 @@ class oeRuntimeTest(oeTest): super(oeRuntimeTest, self).__init__(methodName) def setUp(self): - self.assertTrue(self.target.check(), msg = "Qemu not running?") + # Check if test needs to run + if self.tc.sigterm: + self.fail("Got SIGTERM") + elif (type(self.target).__name__ == "QemuTarget"): + self.assertTrue(self.target.check(), msg = "Qemu not running?") def tearDown(self): # If a test fails or there is an exception |