From c8962ab4db259be4356be09bac527ac4dd5c6e13 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 4 Feb 2014 12:41:15 +0000 Subject: 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 Signed-off-by: Richard Purdie --- meta/lib/oeqa/runtime/systemd.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'meta/lib/oeqa/runtime/systemd.py') 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): Block until systemd has finished activating any units being activated, or until two minutes has elapsed. - Returns a tuple, either (True, None) if all units have finished - acitvating, or (False, message string) if there are still units + Returns a tuple, either (True, '') if all units have finished + activating, or (False, message string) if there are still units activating (generally, failing units that restart). """ import time - settled = False endtime = time.time() + (60 * 2) - while time.time() < endtime: - status = self.target.run('systemctl --state=activating | grep -q "0 loaded units listed"') - if status == 0: - settled = True - break - time.sleep(10) - - if settled: - return (True, None) - else: + while True: status, output = self.target.run('systemctl --state=activating') - return (settled, output) + if "0 loaded units listed" in output: + return (True, '') + if time.time() >= endtime: + return (False, output) + time.sleep(10) @skipUnlessPassed('test_systemd_basic') def test_systemd_failed(self): -- cgit v1.2.3-54-g00ecf