You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
3.1 KiB

# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Routines for printing boot time performance test results."""
import resultset
def PrintRawData(reader, dirlist, keytype, keylist):
"""Print 'bootperf' results in "raw data" format.
@param reader Function for reading results from results
directories.
@param dirlist List of directories to read results from.
@param keytype Selector specifying the desired key set (e.g.
the boot time keyset, the disk stats keyset, etc.)
@param keylist List of event keys to be printed in the report.
"""
for dir_ in dirlist:
results = reader(dir_)
keyset = results.KeySet(keytype)
for i in range(0, keyset.num_iterations):
if len(dirlist) > 1:
line = "%s %3d" % (results.name, i)
else:
line = "%3d" % i
if keylist is not None:
markers = keylist
else:
markers = keyset.markers
for stat in markers:
(_, v) = keyset.PrintableStatistic(keyset.RawData(stat)[i])
line += " %5s" % str(v)
print line
def PrintStatisticsSummary(reader, dirlist, keytype, keylist):
"""Print 'bootperf' results in "summary of averages" format.
@param reader Function for reading results from results
directories.
@param dirlist List of directories to read results from.
@param keytype Selector specifying the desired key set (e.g.
the boot time keyset, the disk stats keyset, etc.)
@param keylist List of event keys to be printed in the report.
"""
if (keytype == resultset.TestResultSet.BOOTTIME_KEYSET or
keytype == resultset.TestResultSet.FIRMWARE_KEYSET):
header = "%5s %3s %5s %3s %s" % (
"time", "s%", "dt", "s%", "event")
tformat = "%5s %2d%% %5s %2d%% %s"
else:
header = "%7s %3s %7s %3s %s" % (
"diskrd", "s%", "delta", "s%", "event")
tformat = "%7s %2d%% %7s %2d%% %s"
havedata = False
for dir_ in dirlist:
results = reader(dir_)
keyset = results.KeySet(keytype)
if keylist is not None:
markers = keylist
else:
markers = keyset.markers
if havedata:
print
if len(dirlist) > 1:
print "%s" % results.name,
print "(on %d cycles):" % keyset.num_iterations
print header
prevvalue = 0
prevstat = None
for stat in markers:
(valueavg, valuedev) = keyset.Statistics(stat)
valuepct = int(100 * valuedev / valueavg + 0.5)
if prevstat:
(deltaavg, deltadev) = keyset.DeltaStatistics(prevstat, stat)
if deltaavg == 0:
deltaavg=1
print "deltaavg is zero! (delta is %s to %s)" % (prevstat, stat)
deltapct = int(100 * deltadev / deltaavg + 0.5)
else:
deltapct = valuepct
(valstring, val_printed) = keyset.PrintableStatistic(valueavg)
delta = val_printed - prevvalue
(deltastring, _) = keyset.PrintableStatistic(delta)
print tformat % (valstring, valuepct, "+" + deltastring, deltapct, stat)
prevvalue = val_printed
prevstat = stat
havedata = True