From 4d268abc2fc892c5d34449f78c8e9f2b1a9d6bac Mon Sep 17 00:00:00 2001 From: Markus Lehtonen Date: Fri, 9 Sep 2016 11:27:11 +0300 Subject: oeqa.runtime.smart: work around smart race issues Yucku hack around test failures which ultimately are caused by a race in smartpm itself. Issuing smartpm commands in quick succession causes races in package cache of smartpm on some systems. This patch mitigates the problem by sleeping for 1 second after each smartpm command that modifies the system. [YOCTO #10244] Signed-off-by: Markus Lehtonen Signed-off-by: Richard Purdie --- meta/lib/oeqa/runtime/smart.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/meta/lib/oeqa/runtime/smart.py b/meta/lib/oeqa/runtime/smart.py index 6cdb10d631..a15e4027d8 100644 --- a/meta/lib/oeqa/runtime/smart.py +++ b/meta/lib/oeqa/runtime/smart.py @@ -2,6 +2,7 @@ import unittest import re import oe import subprocess +from time import sleep from oeqa.oetest import oeRuntimeTest, skipModule from oeqa.utils.decorators import * from oeqa.utils.httpserver import HTTPService @@ -144,13 +145,21 @@ class SmartRepoTest(SmartTest): @skipUnlessPassed('test_smart_channel_add') def test_smart_install(self): self.smart('remove -y psplash-default') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) self.smart('install -y psplash-default') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) @testcase(728) @skipUnlessPassed('test_smart_install') def test_smart_install_dependency(self): self.smart('remove -y psplash') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) self.smart('install -y psplash-default') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) @testcase(723) @skipUnlessPassed('test_smart_channel_add') @@ -158,6 +167,8 @@ class SmartRepoTest(SmartTest): self.smart('remove -y psplash-default') self.smart('download psplash-default') self.smart('install -y ./psplash-default*') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) @testcase(725) @skipUnlessPassed('test_smart_channel_add') @@ -166,19 +177,29 @@ class SmartRepoTest(SmartTest): url = re.search('(http://.*/psplash-default.*\.rpm)', output) self.assertTrue(url, msg="Couln't find download url in %s" % output) self.smart('remove -y psplash-default') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) self.smart('install -y %s' % url.group(0)) + # NOTE: this sleep is a hack for working around #10244 + sleep(1) @testcase(729) @skipUnlessPassed('test_smart_install') def test_smart_reinstall(self): self.smart('reinstall -y psplash-default') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) @testcase(727) @skipUnlessPassed('test_smart_channel_add') def test_smart_remote_repo(self): self.smart('update') self.smart('install -y psplash') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) self.smart('remove -y psplash') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) @testcase(726) def test_smart_local_dir(self): @@ -192,6 +213,8 @@ class SmartRepoTest(SmartTest): self.smart('channel --disable '+str(i)) self.target.run('cd $HOME') self.smart('install psplash') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) for i in output.split("\n"): if ("rpmsys" != str(i)) and ("myrpmdir" != str(i)): self.smart('channel --enable '+str(i)) @@ -215,4 +238,6 @@ class SmartRepoTest(SmartTest): @skipUnlessPassed('test_smart_channel_add') def test_smart_remove_package(self): self.smart('install -y psplash') + # NOTE: this sleep is a hack for working around #10244 + sleep(1) self.smart('remove -y psplash') -- cgit 1.2.3-korg