[Piglit] [PATCH] framework: Humanize time values in the HTML report
Dylan Baker
baker.dylan.c at gmail.com
Fri Nov 15 08:11:07 PST 2013
On Friday, November 15, 2013 09:06:51 AM Damien Lespiau wrote:
> It's a bit hard to parse raw seconds, so make those time values easier
> to read while trying to preserve roughly enough relevant precision to be
> useful.
>
> It gives strings like:
>
> 22.4ms
> 7.798s
> 42s
> 7min 25s
> ...
>
> Signed-off-by: Damien Lespiau <damien.lespiau at intel.com>
> ---
> framework/summary.py | 36 ++++++++++++++++++++++++++++++++++--
> 1 file changed, 34 insertions(+), 2 deletions(-)
>
> diff --git a/framework/summary.py b/framework/summary.py
> index 8fbe2a8..c42ee03 100644
> --- a/framework/summary.py
> +++ b/framework/summary.py
> @@ -38,6 +38,38 @@ __all__ = [
> ]
>
>
> +INTERVALS = (1, 60, 3600, 86400, 604800, 2419200, 29030400)
> +NAMES = ('s', 'min', 'hr', 'day', 'week', 'month', 'year')
> +
> +# Gives a human readable elapsed time
> +# @amount is a string with a number of seconds
> +def humanize_time(amount):
> + result = []
> +
> + if amount == 'None':
> + return 'None'
the python idiom is 'if not amount: return None'
> +
> + amount_f = float(amount)
> + if (amount_f < 1):
> + amount_ms = amount_f * 1000
> + if amount_ms < 1:
> + return "< 1ms"
> + return "%.1fms" % amount_ms
> +
> + # if < 10s, consider ms are important
> + if amount_f < 10:
> + return "%.03fs" % amount_f
> +
> + amount = int(amount_f)
> +
> + for i in range(len(NAMES) - 1, -1, -1):
in python2 avoid range, use xrange instead (xrange is range's lazy cousin) in
python3 range is xrange.
> + a = amount / INTERVALS[i]
> + if a > 0:
> + result.append("%d%s" % (a, NAMES[i]))
> + amount -= a * INTERVALS[i]
> +
> + return " ".join(result)
> +
on a more practicle note, why roll all of this instead of just using
datetime.timedelta?
> class HTMLIndex(list):
> """
> Builds HTML output to be passed to the index mako template, which will
> be @@ -420,7 +452,7 @@ class Summary:
>
> with open(path.join(destination, each.name, "index.html"), 'w')
> as out: out.write(testindex.render(name=each.name,
> - time=each.time_elapsed,
> +
> time=humanize_time(each.time_elapsed), options=each.options,
> glxinfo=each.glxinfo,
> lspci=each.lspci))
> @@ -447,7 +479,7 @@ class Summary:
> # disapear at somepoint
> env=value.get('environment', None),
> returncode=value.get('returncode', 'None'),
> - time=value.get('time', 'None'),
> + time=humanize_time(value.get('time', 'None')),
> info=value.get('info', 'None'),
> traceback=value.get('traceback', 'None'),
> command=value.get('command', 'None'),
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20131115/caadac63/attachment.pgp>
More information about the Piglit
mailing list