コード例 #1
0
class TestNewRelicReporter(TimedTestCase):
    def setUp(self):
        super(TestNewRelicReporter, self).setUp()
        self.registry = NewRelicRegistry(clock=self.clock)
        self.maxDiff = None

    def tearDown(self):
        super(TestNewRelicReporter, self).tearDown()

    def test_report_now(self):
        r = NewRelicReporter(
            "license_key",
            registry=self.registry,
            reporting_interval=1,
            clock=self.clock,
            name="foo",
        )
        h1 = self.registry.histogram("hist")
        for i in range(10):
            h1.add(2**i)
        t1 = self.registry.timer("t1")
        m1 = self.registry.meter("m1")

        # newrelic doesn't  support attaching timestamp to metrics, so events can't be supported.
        e1 = self.registry.event("e1")

        e1.add({"field": 1})

        m1.mark()
        with t1.time():
            c1 = self.registry.counter("c1")
            c2 = self.registry.counter("counter-2")
            c1.inc()
            c2.dec()
            c2.dec()
            self.clock.add(1)

        output = r.collect_metrics(self.registry)
        expected = (
            '{"agent": {"host": "%s", "pid": %s, "version": "%s"}, "components": [{"duration": 1, "guid": "com.github.pyformance", "metrics": {"Component/t1": {'
            '"count": 1, "max": 1, "min": 1, "sum_of_squares": 1, "total": 1}}, "name": "foo"}]}'
            % (socket.gethostname(), os.getpid(), __version__))

        self.assertEqual(expected.replace(".0", ""), output.replace(".0", ""))