[OE-core] [PATCH] runtime/systemd: Fix for boot time string parse error
Benjamin Esquivel
benjamin.esquivel at linux.intel.com
Mon Feb 15 17:32:17 UTC 2016
On Mon, 2016-02-01 at 10:48 -0800, Khem Raj wrote:
> On Mon, Feb 1, 2016 at 7:53 AM, Benjamin Esquivel
> <benjamin.esquivel at linux.intel.com> wrote:
> > boot time string can change its format of the output of the amount
> > of time
> > it took to boot. It is required to handle graceful fail of the
> > parsing
> > errors that it provokes
> >
> > [YOCTO #8889]
> >
> > Signed-off-by: Benjamin Esquivel <benjamin.esquivel at linux.intel.com
> > >
> > ---
> > meta/lib/oeqa/runtime/systemd.py | 22 ++++++++++++----------
> > 1 file changed, 12 insertions(+), 10 deletions(-)
> >
> > diff --git a/meta/lib/oeqa/runtime/systemd.py
> > b/meta/lib/oeqa/runtime/systemd.py
> > index 03c56ef..2b2f10d 100644
> > --- a/meta/lib/oeqa/runtime/systemd.py
> > +++ b/meta/lib/oeqa/runtime/systemd.py
> > @@ -145,8 +145,7 @@ class SystemdJournalTests(SystemdTest):
> > except AssertionError:
> > self.fail("Error occurred while calling journalctl")
> > if not len(output):
> > - self.fail("Error: unable to obtain the startup time
> > from\
> > - systemd journal")
> > + self.fail("Error, unable to get startup time from
> > systemd journal")
> >
> > # check for the regular expression items that match the
> > startup time
> > for line in output.split('\n'):
> > @@ -156,20 +155,23 @@ class SystemdJournalTests(SystemdTest):
> > if check_match:
> > print "%s" % check_match
> > else:
> > - self.fail("Error while obtaining the boot time from
> > journalctl")
> > + self.skipTest("Error at obtaining the boot time from
> > journalctl")
> > boot_time_sec = 0
> >
> > # get the numeric values from the string and convert them
> > to seconds
> > # same data will be placed in list and string for
> > manipulation
> > l_boot_time = check_match.split(" ")[-2:]
> > s_boot_time = " ".join(l_boot_time)
> > - # Obtain the minutes it took to boot
> > - if l_boot_time[0].endswith('min') and
> > l_boot_time[0][0].isdigit():
> > - boot_time_min = s_boot_time.split("min")[0]
> > - # convert to seconds and accumulate it
> > - boot_time_sec += int(boot_time_min) * 60
> > - # Obtain the seconds it took to boot and accumulate
> > - boot_time_sec += float(l_boot_time[1].split("s")[0])
> > + try:
> > + # Obtain the minutes it took to boot
> > + if l_boot_time[0].endswith('min') and
> > l_boot_time[0][0].isdigit():
> > + boot_time_min = s_boot_time.split("min")[0]
> > + # convert to seconds and accumulate it
> > + boot_time_sec += int(boot_time_min) * 60
> > + # Obtain the seconds it took to boot and accumulate
> > + boot_time_sec += float(l_boot_time[1].split("s")[0])
>
> is float right to use here I wonder,
float is what the seconds are expressed in at the journal, like in:
systemd[1]: Startup finished in 1.616s (kernel) + 13.561s (initrd) +
3.195s (userspace) = 26.632s
> > + except ValueError:
> > + self.skipTest("Error when parsing time from boot
> > string")
> > #Assert the target boot time against systemd's unit start
> > timeout
> > if boot_time_sec > systemd_TimeoutStartSec:
> > print "Target boot time %s exceeds systemd's
> > TimeoutStartSec %s"\
> > --
> > 2.5.1
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
More information about the Openembedded-core
mailing list