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>
This commit is contained in:
parent
6b7b9ea316
commit
c8962ab4db
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue