Create "timethis" utility decorator that prints how long it takes for an
arbitrary function to complete
USAGE:
@functest.utils.functest_utils.timethis
def function_to_be_timed(...):
...
Change-Id: I41730c01b6889a9fa1ede4c5863841648b5af9c7
Signed-off-by: George Paraskevopoulos <geopar@intracom-telecom.com>
import yaml
from git import Repo
+import time
+import functools
+
import functest.utils.functest_logger as ft_logger
logger = ft_logger.Logger("functest_utils").getLogger()
def print_separator():
logger.info("==============================================")
+
+
+def timethis(func):
+ """Measure the time it takes for a function to complete"""
+ @functools.wraps(func)
+ def timed(*args, **kwargs):
+ ts = time.time()
+ result = func(*args, **kwargs)
+ te = time.time()
+ elapsed = '{0}'.format(te - ts)
+ logger.info('{f}(*{a}, **{kw}) took: {t} sec'.format(
+ f=func.__name__, a=args, kw=kwargs, t=elapsed))
+ return result, elapsed
+ return timed