Ejemplo n.º 1
0
    def test_multiple_decorators(self):
        mm = MetricManager()
        mr = BaseMetricsReporter()
        mm.setup_reporters(mr)
        mm.start()

        @mm.meter_calls
        @mm.count_calls
        @mm.hist_calls
        @mm.time_calls
        def somefunc(i):
            return i

        self.assertEqual(somefunc(1), 1)
        self.assertEqual(somefunc(1, context='test'), 1)

        # check metrics collected
        for reporter in mm.metric_reporters:
            timestamp, metrics = reporter.get_metrics()
            self.assertIsInstance(timestamp, integer_types)
            self.assertIsInstance(metrics, dict)
            self.assertEqual(len(metrics), 3)

            # context aware
            self.assertIn('test.meter', metrics)
            self.assertIsInstance(metrics['test.meter'], dict)
            self.assertGreater(metrics['test.meter']['mean_rate'], 100)

            # normal one
            self.assertIn('somefunc.calls', metrics)
            self.assertIsInstance(metrics['somefunc.calls'], dict)
            self.assertEqual(metrics['somefunc.calls']['count'], 2)

        mm.stop()
Ejemplo n.º 2
0
 def test_start_stop_mechanism(self):
     mm = MetricManager()
     mr = BaseMetricsReporter()
     mm.setup_reporters(mr)
     mm.start()
     for mr in mm.metric_reporters:
         self.assertTrue(mr.task.running)
     mm.stop()
     for mr in mm.metric_reporters:
         self.assertFalse(mr.task.running)
Ejemplo n.º 3
0
    def test_metric_getter(self):
        mm = MetricManager()
        mr = BaseMetricsReporter()
        mm.setup_reporters(mr)
        mm.start()
        # increment counters
        for counter in mm.counters('test'):
            counter.inc()

        timestamp, metrics = mr.get_metrics()
        self.assertIsInstance(timestamp, integer_types)
        self.assertIsInstance(metrics, dict)
        self.assertEqual(len(metrics), 1)
        self.assertIn('test', metrics)
        self.assertIsInstance(metrics['test'], dict)
        self.assertEqual(metrics['test']['count'], 1)
        mm.stop()
Ejemplo n.º 4
0
    def test_timer_decorator(self):
        mm = MetricManager()
        mr = BaseMetricsReporter()
        mm.setup_reporters(mr)
        mm.start()

        @mm.time_calls
        def somefunc(i):
            return i

        @mm.time_calls
        def badfunc(i):
            raise Exception("test exception")

        self.assertEqual(somefunc(1), 1)
        self.assertEqual(somefunc(1, context='test'), 1)
        with self.assertRaises(Exception):
            badfunc(1)

        # check metrics collected
        for reporter in mm.metric_reporters:
            timestamp, metrics = reporter.get_metrics()

            self.assertIsInstance(timestamp, integer_types)
            self.assertIsInstance(metrics, dict)
            self.assertEqual(len(metrics), 5)

            # context aware
            self.assertIn('test.timer', metrics)
            self.assertIsInstance(metrics['test.timer'], dict)
            self.assertLess(metrics['test.timer']['max'], 0.01)

            # normal one
            self.assertIn('somefunc.timer', metrics)
            self.assertIsInstance(metrics['somefunc.timer'], dict)
            self.assertLess(metrics['somefunc.timer']['max'], 0.01)

        mm.stop()