summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@intel.com>2014-01-09 16:01:51 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-01-14 11:33:50 +0000
commitcc8170f1181c855e230ab08c5cae387d740fef61 (patch)
treea66ffebc6277932a999d94381d985dbf89e08c45 /meta/lib
parent1b636173ca88e5ccca1992f9a12367a1189fa674 (diff)
downloadast2050-yocto-poky-cc8170f1181c855e230ab08c5cae387d740fef61.zip
ast2050-yocto-poky-cc8170f1181c855e230ab08c5cae387d740fef61.tar.gz
oeqa/runtime/systemd: wait for services to start/fail
When checking that no services have failed to start, actually wait for services to finish starting by waiting for there not be no units in the "activating" state. (From OE-Core rev: 4d6422a84eba005a6fd788ce18c9dd42b079e2a8) Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oeqa/runtime/systemd.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/meta/lib/oeqa/runtime/systemd.py b/meta/lib/oeqa/runtime/systemd.py
index eed29d3..6414dd6 100644
--- a/meta/lib/oeqa/runtime/systemd.py
+++ b/meta/lib/oeqa/runtime/systemd.py
@@ -32,8 +32,36 @@ class SystemdBasicTests(SystemdTest):
def test_systemd_list(self):
self.systemctl('list-unit-files')
+ def settle(self):
+ """
+ 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
+ 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:
+ status, output = self.target.run('systemctl --state=activating')
+ return (settled, output)
+
@skipUnlessPassed('test_systemd_basic')
def test_systemd_failed(self):
+ settled, output = self.settle()
+ self.assertTrue(settled, msg="Timed out waiting for systemd to settle:\n" + output)
+
output = self.systemctl('list-units', '--failed')
match = re.search("0 loaded units listed", output)
if not match:
OpenPOWER on IntegriCloud