summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/testimage.bbclass12
-rw-r--r--meta/lib/oeqa/oetest.py6
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):
236 import os 236 import os
237 import oeqa.runtime 237 import oeqa.runtime
238 import time 238 import time
239 import signal
239 from oeqa.oetest import loadTests, runTests 240 from oeqa.oetest import loadTests, runTests
240 from oeqa.targetcontrol import get_target_controller 241 from oeqa.targetcontrol import get_target_controller
241 from oeqa.utils.dump import get_host_dumper 242 from oeqa.utils.dump import get_host_dumper
@@ -273,12 +274,20 @@ def testimage_main(d):
273 self.imagefeatures = d.getVar("IMAGE_FEATURES", True).split() 274 self.imagefeatures = d.getVar("IMAGE_FEATURES", True).split()
274 self.distrofeatures = d.getVar("DISTRO_FEATURES", True).split() 275 self.distrofeatures = d.getVar("DISTRO_FEATURES", True).split()
275 manifest = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME", True) + ".manifest") 276 manifest = os.path.join(d.getVar("DEPLOY_DIR_IMAGE", True), d.getVar("IMAGE_LINK_NAME", True) + ".manifest")
277 self.sigterm = False
278 self.origsigtermhandler = signal.getsignal(signal.SIGTERM)
279 signal.signal(signal.SIGTERM, self.sigterm_exception)
276 try: 280 try:
277 with open(manifest) as f: 281 with open(manifest) as f:
278 self.pkgmanifest = f.read() 282 self.pkgmanifest = f.read()
279 except IOError as e: 283 except IOError as e:
280 bb.fatal("No package manifest file found. Did you build the image?\n%s" % e) 284 bb.fatal("No package manifest file found. Did you build the image?\n%s" % e)
281 285
286 def sigterm_exception(self, signum, stackframe):
287 bb.warn("TestImage received SIGTERM, shutting down...")
288 self.sigterm = True
289 self.target.stop()
290
282 # test context 291 # test context
283 tc = TestContext() 292 tc = TestContext()
284 293
@@ -293,8 +302,8 @@ def testimage_main(d):
293 302
294 target.deploy() 303 target.deploy()
295 304
296 target.start()
297 try: 305 try:
306 target.start()
298 if export: 307 if export:
299 exportTests(d,tc) 308 exportTests(d,tc)
300 else: 309 else:
@@ -311,6 +320,7 @@ def testimage_main(d):
311 else: 320 else:
312 raise bb.build.FuncFailed("%s - FAILED - check the task log and the ssh log" % pn ) 321 raise bb.build.FuncFailed("%s - FAILED - check the task log and the ssh log" % pn )
313 finally: 322 finally:
323 signal.signal(signal.SIGTERM, tc.origsigtermhandler)
314 target.stop() 324 target.stop()
315 325
316testimage_main[vardepsexclude] =+ "BB_ORIGENV" 326testimage_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):
145 super(oeRuntimeTest, self).__init__(methodName) 145 super(oeRuntimeTest, self).__init__(methodName)
146 146
147 def setUp(self): 147 def setUp(self):
148 self.assertTrue(self.target.check(), msg = "Qemu not running?") 148 # Check if test needs to run
149 if self.tc.sigterm:
150 self.fail("Got SIGTERM")
151 elif (type(self.target).__name__ == "QemuTarget"):
152 self.assertTrue(self.target.check(), msg = "Qemu not running?")
149 153
150 def tearDown(self): 154 def tearDown(self):
151 # If a test fails or there is an exception 155 # If a test fails or there is an exception