Example #1
0
    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