From 3e8d11b409cabf002552aa41a295b3cd943e7c9a Mon Sep 17 00:00:00 2001 From: Warren Usui Date: Thu, 21 Feb 2013 14:51:54 -0800 Subject: [PATCH] Add timer.py and display summary info in run.py. Signed-off-by: Warren Usui --- teuthology/run.py | 7 +++++- teuthology/task/timer.py | 50 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 teuthology/task/timer.py diff --git a/teuthology/run.py b/teuthology/run.py index ef9947f499..f1955bea2c 100644 --- a/teuthology/run.py +++ b/teuthology/run.py @@ -1,6 +1,8 @@ import argparse import os import yaml +import StringIO +import contextlib def config_file(string): config = {} @@ -183,7 +185,10 @@ def main(): if ctx.archive is not None: with file(os.path.join(ctx.archive, 'summary.yaml'), 'w') as f: yaml.safe_dump(ctx.summary, f, default_flow_style=False) - + with contextlib.closing(StringIO.StringIO()) as f: + yaml.safe_dump(ctx.summary, f) + log.info('Summary data:\n%s' % f.getvalue()) + if ctx.summary.get('success', True): log.info('pass') else: diff --git a/teuthology/task/timer.py b/teuthology/task/timer.py new file mode 100644 index 0000000000..f85ae8cc86 --- /dev/null +++ b/teuthology/task/timer.py @@ -0,0 +1,50 @@ +import logging +import contextlib +import datetime + +from ..orchestra import run + +log = logging.getLogger(__name__) + +@contextlib.contextmanager +def task(ctx, config): + """ + Timer + + Measure the time that this set of tasks takes and save that value in the summary file. + Config is a description of what we are timing. + + example: + + tasks: + - ceph: + - foo: + - timer: "fsx run" + - fsx: + + """ + start = datetime.datetime.now() + log.debug("got here in timer") + try: + yield + finally: + nowinfo = datetime.datetime.now() + elapsed = nowinfo - start + datesaved = nowinfo.isoformat(' ') + hourz, remainder = divmod(elapsed.seconds, 3600) + minutez, secondz = divmod(remainder, 60) + elapsedtime = "%02d:%02d:%02d.%06d" % (hourz,minutez,secondz, elapsed.microseconds) + dateinfo = (datesaved, elapsedtime) + if not 'timer' in ctx.summary: + ctx.summary['timer'] = {config : [dateinfo]} + else: + if config in ctx.summary['timer']: + ctx.summary['timer'][config].append(dateinfo) + else: + ctx.summary['timer'][config] = [dateinfo] + log.info('Elapsed time for %s -- %s' % (config,elapsedtime)) + + + + + \ No newline at end of file -- 2.39.5