Re: [OE-core] [PATCH 1/1] selftest/eSDK.py: Cleanup when there is an error in setUpClass

2017-02-23 Thread akuster808

Mariano,


On 02/22/2017 05:12 AM, mariano.lo...@linux.intel.com wrote:

From: Mariano Lopez 

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.

Any issue if Morty gets this?
- armin

This patch will ensure tearDownClass will be run if there
is an error in setUpClass.

Signed-off-by: Mariano Lopez 
---
  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 ee1ca6a..b68e997 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)


--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH 1/1] selftest/eSDK.py: Cleanup when there is an error in setUpClass

2017-02-22 Thread mariano . lopez
From: Mariano Lopez 

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 
---
 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 ee1ca6a..b68e997 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)
-- 
2.6.6

-- 
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core