summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 eed29d3952..6414dd6e0e 100644
--- a/meta/lib/oeqa/runtime/systemd.py
+++ b/meta/lib/oeqa/runtime/systemd.py
@@ -32,8 +32,36 @@ class SystemdBasicTests(SystemdTest):
32 def test_systemd_list(self): 32 def test_systemd_list(self):
33 self.systemctl('list-unit-files') 33 self.systemctl('list-unit-files')
34 34
35 def settle(self):
36 """
37 Block until systemd has finished activating any units being activated,
38 or until two minutes has elapsed.
39
40 Returns a tuple, either (True, None) if all units have finished
41 acitvating, or (False, message string) if there are still units
42 activating (generally, failing units that restart).
43 """
44 import time
45 settled = False
46 endtime = time.time() + (60 * 2)
47 while time.time() < endtime:
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')
58 return (settled, output)
59
35 @skipUnlessPassed('test_systemd_basic') 60 @skipUnlessPassed('test_systemd_basic')
36 def test_systemd_failed(self): 61 def test_systemd_failed(self):
62 settled, output = self.settle()
63 self.assertTrue(settled, msg="Timed out waiting for systemd to settle:\n" + output)
64
37 output = self.systemctl('list-units', '--failed') 65 output = self.systemctl('list-units', '--failed')
38 match = re.search("0 loaded units listed", output) 66 match = re.search("0 loaded units listed", output)
39 if not match: 67 if not match: