aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMariano Lopez <mariano.lopez@linux.intel.com>2017-02-22 13:12:55 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-02-23 12:29:20 -0800
commiteb1383949f76c6eb36f86c051057f761a71016a3 (patch)
treeb1af56caf2919f81a1581e229792d3bd97a3f23e
parent0148bb131b2ac68f168562e9eaedce8aa4e4a875 (diff)
downloadopenembedded-core-contrib-eb1383949f76c6eb36f86c051057f761a71016a3.tar.gz
selftest/eSDK.py: Cleanup when there is an error in setUpClass
Lately autobuilders are experiencing hangs with selftest, it seems it is cause if an error happens in setUpClass method of oeSDKExtSelfTest class because HTTP server keeps running in background. This patch will ensure tearDownClass will be run if there is an error in setUpClass. Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/lib/oeqa/selftest/eSDK.py46
1 files changed, 25 insertions, 21 deletions
diff --git a/meta/lib/oeqa/selftest/eSDK.py b/meta/lib/oeqa/selftest/eSDK.py
index ee1ca6a4ec..b68e997ba9 100644
--- a/meta/lib/oeqa/selftest/eSDK.py
+++ b/meta/lib/oeqa/selftest/eSDK.py
@@ -64,7 +64,7 @@ class oeSDKExtSelfTest(oeSelfTest):
runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
-
+
sstate_config="""
SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
SSTATE_MIRRORS = "file://.* http://%s/PATH"
@@ -73,37 +73,41 @@ CORE_IMAGE_EXTRA_INSTALL = "perl"
with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
f.write(sstate_config)
-
@classmethod
def setUpClass(cls):
- # Start to serve sstate dir
- sstate_dir = get_bb_var('SSTATE_DIR')
- cls.http_service = HTTPService(sstate_dir)
- cls.http_service.start()
+ # If there is an exception in setUpClass it will not run tearDownClass
+ # method and it leaves HTTP server running forever, so we need to be
+ # sure tearDownClass is run.
+ try:
+ cls.tmpdir_eSDKQA = tempfile.mkdtemp(prefix='eSDKQA')
- cls.http_url = "http://127.0.0.1:%d" % cls.http_service.port
-
- cls.image = 'core-image-minimal'
+ # Start to serve sstate dir
+ sstate_dir = get_bb_var('SSTATE_DIR')
+ cls.http_service = HTTPService(sstate_dir)
+ cls.http_url = "http://127.0.0.1:%d" % cls.http_service.port
+ cls.http_service.start()
- cls.tmpdir_eSDKQA = tempfile.mkdtemp(prefix='eSDKQA')
- oeSDKExtSelfTest.generate_eSDK(cls.image)
+ cls.image = 'core-image-minimal'
+ oeSDKExtSelfTest.generate_eSDK(cls.image)
- # Install eSDK
- cls.ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(cls.image)
- runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
+ # Install eSDK
+ cls.ext_sdk_path = oeSDKExtSelfTest.get_eSDK_toolchain(cls.image)
+ runCmd("%s -y -d \"%s\"" % (cls.ext_sdk_path, cls.tmpdir_eSDKQA))
- cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
+ cls.env_eSDK = oeSDKExtSelfTest.get_esdk_environment('', cls.tmpdir_eSDKQA)
- # Configure eSDK to use sstate mirror from poky
- sstate_config="""
+ # Configure eSDK to use sstate mirror from poky
+ sstate_config="""
SDK_LOCAL_CONF_WHITELIST = "SSTATE_MIRRORS"
SSTATE_MIRRORS = "file://.* http://%s/PATH"
- """ % cls.http_url
- with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
- f.write(sstate_config)
+ """ % cls.http_url
+ with open(os.path.join(cls.tmpdir_eSDKQA, 'conf', 'local.conf'), 'a+') as f:
+ f.write(sstate_config)
+ except:
+ cls.tearDownClass()
+ raise
-
@classmethod
def tearDownClass(cls):
shutil.rmtree(cls.tmpdir_eSDKQA)