diff options
Diffstat (limited to 'meta/lib/oeqa/runtime/systemd.py')
| -rw-r--r-- | meta/lib/oeqa/runtime/systemd.py | 28 |
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: |
