summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2014-02-04 12:41:15 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-04 12:43:07 +0000
commitc8962ab4db259be4356be09bac527ac4dd5c6e13 (patch)
treef30257c05dee684c11b4778d0ca5d360945916da
parent6b7b9ea316d0ddf4e9ab27d96ecad2f8ae5dc1c8 (diff)
downloadpoky-c8962ab4db259be4356be09bac527ac4dd5c6e13.tar.gz
oeqa/runtime/systemd: remove race in settle()
The settle() function had a race where services could still be activating at two minutes but then when the final log is output, they've activated. Remove this race and generally clean up the code. (From OE-Core rev: 8d107e0a828868702cfe035104c1f0b51da4291e) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oeqa/runtime/systemd.py22
1 files changed, 8 insertions, 14 deletions
diff --git a/meta/lib/oeqa/runtime/systemd.py b/meta/lib/oeqa/runtime/systemd.py
index 6414dd6e0e..6de84f891b 100644
--- a/meta/lib/oeqa/runtime/systemd.py
+++ b/meta/lib/oeqa/runtime/systemd.py
@@ -37,25 +37,19 @@ class SystemdBasicTests(SystemdTest):
37 Block until systemd has finished activating any units being activated, 37 Block until systemd has finished activating any units being activated,
38 or until two minutes has elapsed. 38 or until two minutes has elapsed.
39 39
40 Returns a tuple, either (True, None) if all units have finished 40 Returns a tuple, either (True, '') if all units have finished
41 acitvating, or (False, message string) if there are still units 41 activating, or (False, message string) if there are still units
42 activating (generally, failing units that restart). 42 activating (generally, failing units that restart).
43 """ 43 """
44 import time 44 import time
45 settled = False
46 endtime = time.time() + (60 * 2) 45 endtime = time.time() + (60 * 2)
47 while time.time() < endtime: 46 while True:
48 status = self.target.run('systemctl --state=activating | grep -q "0 loaded units listed"')
49 if status == 0:
50 settled = True
51 break
52 time.sleep(10)
53
54 if settled:
55 return (True, None)
56 else:
57 status, output = self.target.run('systemctl --state=activating') 47 status, output = self.target.run('systemctl --state=activating')
58 return (settled, output) 48 if "0 loaded units listed" in output:
49 return (True, '')
50 if time.time() >= endtime:
51 return (False, output)
52 time.sleep(10)
59 53
60 @skipUnlessPassed('test_systemd_basic') 54 @skipUnlessPassed('test_systemd_basic')
61 def test_systemd_failed(self): 55 def test_systemd_failed(self):