[oe-commits] [openembedded-core] 03/05: selftest/eSDK.py: Cleanup when there is an error in setUpClass

git at git.openembedded.org git at git.openembedded.org
Mon Sep 11 09:48:32 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch morty-next
in repository openembedded-core.

commit 5dc68a378d9f4ec2c313ac395e91225a02e5b2c7
Author: Mariano Lopez <mariano.lopez at linux.intel.com>
AuthorDate: Wed Feb 22 13:12:55 2017 +0000

    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.
    
    (From OE-Core rev: eb1383949f76c6eb36f86c051057f761a71016a3)
    
    Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
    Signed-off-by: Ross Burton <ross.burton at intel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/lib/oeqa/selftest/eSDK.py | 46 +++++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 21 deletions(-)

diff --git a/meta/lib/oeqa/selftest/eSDK.py b/meta/lib/oeqa/selftest/eSDK.py
index c95ca6d..4c58d2b 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)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list