def setUp(self): """Set up.""" class Helper(object): """Fake object with a controllable call.""" def __init__(self): self.call_count = 1 self.calls = [] self.ri = None def call(self, func): """Call function when counter is 0, then stop running.""" self.call_count -= 1 self.calls.append(func) if self.call_count == 0: for f in self.calls: f() if self.call_count <= 0: self.ri.stop() class FakeMetrics(object): """Fake Metrics object that records calls.""" def __init__(self): """Initialize calls.""" self.calls = [] def meter(self, name, count): """Record call to meter().""" self.calls.append(("meter", name, count)) def gauge(self, name, val): """Record call to gauge().""" self.calls.append(("gauge", name, val)) self.handler = self.add_memento_handler(logger, level=TRACE) self.helper = Helper() self.fake_metrics = FakeMetrics() self.patch(metrics, 'get_meter', lambda n: self.fake_metrics) self.ri = ReactorInspector(self.helper.call, loop_time=.1) self.helper.ri = self.ri