예제 #1
0
 def test_publish_metric(self):
     datapoint = ("vumi.test.v1", 1.0, 1234)
     channel = yield get_stubbed_channel(self.worker_helper.broker)
     pub = metrics_workers.GraphitePublisher()
     pub.start(channel)
     pub.publish_metric(*datapoint)
     self._check_msg(channel, *datapoint)
예제 #2
0
 def test_start_manager_publisher_and_channel(self):
     publisher = metrics.MetricPublisher()
     mm = metrics.MetricManager("vumi.test.", publisher=publisher)
     self.assertEqual(mm._publisher, publisher)
     self.assertEqual(mm._task, None)
     channel = yield get_stubbed_channel(self.worker_helper.broker)
     self.assertRaises(RuntimeError, mm.start, channel)
예제 #3
0
 def test_publish_metric(self):
     datapoint = ("vumi.test.v1", 1.0, 1234)
     channel = yield get_stubbed_channel(self.worker_helper.broker)
     pub = metrics_workers.GraphitePublisher()
     pub.start(channel)
     pub.publish_metric(*datapoint)
     self._check_msg(channel, *datapoint)
예제 #4
0
    def test_publish_heartbeat(self):
        self.broker = FakeAMQPBroker()
        channel = yield get_stubbed_channel(self.broker)
        pub = MockHeartBeatPublisher(self.gen_fake_attrs)
        pub.start(channel)
        pub._beat()

        [msg] = self.broker.get_dispatched("vumi.health", "heartbeat.inbound")
        self.assertEqual(json.loads(msg.body), self.gen_fake_attrs())
예제 #5
0
    def test_publish_heartbeat(self):
        self.broker = FakeAMQPBroker()
        channel = yield get_stubbed_channel(self.broker)
        pub = MockHeartBeatPublisher(self.gen_fake_attrs)
        pub.start(channel)
        pub._beat()

        [msg] = self.broker.get_dispatched("vumi.health", "heartbeat.inbound")
        self.assertEqual(json.loads(msg.body), self.gen_fake_attrs())
예제 #6
0
 def test_start_manager_no_publisher(self):
     mm = metrics.MetricManager("vumi.test.")
     self.assertEqual(mm._publisher, None)
     self.assertEqual(mm._task, None)
     channel = yield get_stubbed_channel(self.worker_helper.broker)
     mm.start(channel)
     self.add_cleanup(mm.stop)
     self.assertIsInstance(mm._publisher, metrics.MetricPublisher)
     self.assertNotEqual(mm._task, None)
예제 #7
0
    def test_task_failure(self):
        channel = yield get_stubbed_channel()
        mm = metrics.MetricManager("vumi.test.", 0.1)
        wait_error = Deferred()

        class BadMetricError(Exception):
            pass

        class BadMetric(metrics.Metric):
            def poll(self):
                wait_error.callback(None)
                raise BadMetricError("bad metric")

        mm.register(BadMetric("bad"))
        mm.start(channel)
        yield wait_error
        yield self._sleep(0)  # allow log message to be processed
        error, = self.flushLoggedErrors(BadMetricError)
        self.assertTrue(error.type is BadMetricError)
예제 #8
0
    def test_task_failure(self):
        channel = yield get_stubbed_channel()
        mm = metrics.MetricManager("vumi.test.", 0.1)
        wait_error = Deferred()

        class BadMetricError(Exception):
            pass

        class BadMetric(metrics.Metric):
            def poll(self):
                wait_error.callback(None)
                raise BadMetricError("bad metric")

        mm.register(BadMetric("bad"))
        mm.start(channel)
        yield wait_error
        yield self._sleep(0)  # allow log message to be processed
        error, = self.flushLoggedErrors(BadMetricError)
        self.assertTrue(error.type is BadMetricError)
예제 #9
0
    def test_start(self):
        channel = yield get_stubbed_channel()
        broker = channel.broker
        mm = metrics.MetricManager("vumi.test.", 0.1, self.on_publish)
        cnt = mm.register(metrics.Count("my.count"))
        mm.start(channel)
        try:
            self.assertTrue(mm._task is not None)
            self._check_msg(broker, cnt, None)

            cnt.inc()
            yield self.wait_publish()
            self._check_msg(broker, cnt, [1])

            cnt.inc()
            cnt.inc()
            yield self.wait_publish()
            self._check_msg(broker, cnt, [1, 1])
        finally:
            mm.stop()
예제 #10
0
    def test_start(self):
        channel = yield get_stubbed_channel()
        broker = channel.broker
        mm = metrics.MetricManager("vumi.test.", 0.1, self.on_publish)
        cnt = mm.register(metrics.Count("my.count"))
        mm.start(channel)
        try:
            self.assertTrue(mm._task is not None)
            self._check_msg(broker, cnt, None)

            cnt.inc()
            yield self.wait_publish()
            self._check_msg(broker, cnt, [1])

            cnt.inc()
            cnt.inc()
            yield self.wait_publish()
            self._check_msg(broker, cnt, [1, 1])
        finally:
            mm.stop()
예제 #11
0
 def start_manager_as_publisher(self, manager):
     channel = yield get_stubbed_channel(self.worker_helper.broker)
     manager.start(channel)
     self.add_cleanup(manager.stop)
예제 #12
0
 def start_publisher(self, publisher):
     channel = yield get_stubbed_channel(self.worker_helper.broker)
     publisher.start(channel)