[OE-core] [PATCH] runtime/systemd: Fix for boot time string parse error

Khem Raj raj.khem at gmail.com
Mon Feb 15 19:53:15 UTC 2016


On Mon, Feb 15, 2016 at 9:32 AM, Benjamin Esquivel
<benjamin.esquivel at linux.intel.com> wrote:
> 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
>

so its in 100th thats ok,.

>> > +        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