def test_publish_metrics_oneshot(self): mm = metrics.MetricManager("vumi.test.", 0.1, self.on_publish) cnt = metrics.Count("my.count") yield self.start_manager_as_publisher(mm) mm.oneshot(cnt, 1) mm.publish_metrics() self._check_msg(mm, cnt, [1])
def test_publish_metrics_poll(self): mm = metrics.MetricManager("vumi.test.", 0.1, self.on_publish) cnt = mm.register(metrics.Count("my.count")) yield self.start_manager_as_publisher(mm) cnt.inc() mm.publish_metrics() self._check_msg(mm, cnt, [1])
def test_inc_and_poll(self): metric = metrics.Count("foo") self.check_poll(metric, []) metric.inc() self.check_poll(metric, [1.0]) self.check_poll(metric, []) metric.inc() metric.inc() self.check_poll(metric, [1.0, 1.0])
def test_oneshot(self): self.patch(time, "time", lambda: 12345) mm = metrics.MetricManager("vumi.test.") cnt = metrics.Count("my.count") mm.oneshot(cnt, 3) self.assertEqual(cnt.name, "my.count") self.assertEqual(mm._oneshot_msgs, [ (cnt, [(12345, 3)]), ])
def test_publish_single_metric(self): publisher = metrics.MetricPublisher() yield self.start_publisher(publisher) msg = metrics.MetricMessage() cnt = metrics.Count("my.count") msg.append( ("vumi.test.%s" % (cnt.name,), cnt.aggs, [(time.time(), 1)])) publisher.publish_message(msg) self._check_msg("vumi.test.", cnt, [1])
def test_start(self): mm = metrics.MetricManager("vumi.test.", 0.1, self.on_publish) cnt = mm.register(metrics.Count("my.count")) yield self.start_manager_as_publisher(mm) self.assertTrue(mm._task is not None) self._check_msg(mm, cnt, None) cnt.inc() yield self.wait_publish() self._check_msg(mm, cnt, [1]) cnt.inc() cnt.inc() yield self.wait_publish() self._check_msg(mm, cnt, [1, 1])
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 test_lookup(self): mm = metrics.MetricManager("vumi.test.") cnt = mm.register(metrics.Count("my.count")) self.assertTrue("my.count" in mm) self.assertTrue(mm["my.count"] is cnt) self.assertEqual(mm["my.count"].name, "vumi.test.my.count")
def test_double_register(self): mm = metrics.MetricManager("vumi.test.") mm.register(metrics.Count("my.count")) self.assertRaises(metrics.MetricRegistrationError, mm.register, metrics.Count("my.count"))
def test_register(self): mm = metrics.MetricManager("vumi.test.") cnt = mm.register(metrics.Count("my.count")) self.assertEqual(cnt.name, "vumi.test.my.count") self.assertEqual(mm._metrics, [cnt])
def test_publish_metrics_not_started_no_publisher(self): mm = metrics.MetricManager("vumi.test.") self.assertEqual(mm._publisher, None) mm.oneshot(metrics.Count("my.count"), 1) self.assertRaises(ValueError, mm.publish_metrics)