예제 #1
0
    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])
예제 #2
0
    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])
예제 #3
0
 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])
예제 #4
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)]),
     ])
예제 #5
0
    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])
예제 #6
0
    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])
예제 #7
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()
예제 #8
0
 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")
예제 #9
0
 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"))
예제 #10
0
 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])
예제 #11
0
 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)