summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/runtime/systemd.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/meta/lib/oeqa/runtime/systemd.py b/meta/lib/oeqa/runtime/systemd.py
index d0b9b2f4b9..03c56ef9f0 100644
--- a/meta/lib/oeqa/runtime/systemd.py
+++ b/meta/lib/oeqa/runtime/systemd.py
@@ -127,3 +127,50 @@ class SystemdJournalTests(SystemdTest):
127 def test_systemd_journal(self): 127 def test_systemd_journal(self):
128 (status, output) = self.target.run('journalctl') 128 (status, output) = self.target.run('journalctl')
129 self.assertEqual(status, 0, output) 129 self.assertEqual(status, 0, output)
130
131 @skipUnlessPassed('test_systemd_basic')
132 def test_systemd_boot_time(self, systemd_TimeoutStartSec=90):
133 """
134 Get the target boot time from journalctl and log it
135
136 Arguments:
137 -systemd_TimeoutStartSec, an optional argument containing systemd's
138 unit start timeout to compare against
139 """
140
141 # the expression chain that uniquely identifies the time boot message
142 expr_items=["Startup finished","kernel", "userspace","\.$"]
143 try:
144 output = self.journalctl(args="-o cat --reverse")
145 except AssertionError:
146 self.fail("Error occurred while calling journalctl")
147 if not len(output):
148 self.fail("Error: unable to obtain the startup time from\
149 systemd journal")
150
151 # check for the regular expression items that match the startup time
152 for line in output.split('\n'):
153 check_match = "".join(re.findall(".*".join(expr_items), line))
154 if check_match: break
155 # put the startup time in the test log
156 if check_match:
157 print "%s" % check_match
158 else:
159 self.fail("Error while obtaining the boot time from journalctl")
160 boot_time_sec = 0
161
162 # get the numeric values from the string and convert them to seconds
163 # same data will be placed in list and string for manipulation
164 l_boot_time = check_match.split(" ")[-2:]
165 s_boot_time = " ".join(l_boot_time)
166 # Obtain the minutes it took to boot
167 if l_boot_time[0].endswith('min') and l_boot_time[0][0].isdigit():
168 boot_time_min = s_boot_time.split("min")[0]
169 # convert to seconds and accumulate it
170 boot_time_sec += int(boot_time_min) * 60
171 # Obtain the seconds it took to boot and accumulate
172 boot_time_sec += float(l_boot_time[1].split("s")[0])
173 #Assert the target boot time against systemd's unit start timeout
174 if boot_time_sec > systemd_TimeoutStartSec:
175 print "Target boot time %s exceeds systemd's TimeoutStartSec %s"\
176 %(boot_time_sec, systemd_TimeoutStartSec)