def benchmark(new_fun, duration): name = "bench" new_fun(name) work_time = 0.0 overhead = 0.0 started_on = time.time() while True: now = time.time() if now - started_on >= duration: break latency = random.randint(MIN_LATENCY, MAX_LATENCY) / 1000.0 time.sleep(latency) t1 = time.time() metrics.notify(name, latency) t2 = time.time() overhead += (t2 - t1) work_time += latency elapsed = time.time() - started_on metric_value = metrics.get(name) metrics.delete_metric(name) return elapsed, work_time, overhead, metric_value
def tearDownClass(cls): cls.collector.stop() [metrics.delete_metric(metric) for metric in metrics.metrics()]