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)
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)
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())
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)
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)
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()
def start_manager_as_publisher(self, manager): channel = yield get_stubbed_channel(self.worker_helper.broker) manager.start(channel) self.add_cleanup(manager.stop)
def start_publisher(self, publisher): channel = yield get_stubbed_channel(self.worker_helper.broker) publisher.start(channel)