コード例 #1
0
 def test_observe_incorrect_type(self, logger_mock):
     observer = metrics.ValueObserver(None, "name", "desc", "unit", int,
                                      Mock(), ("key", ), True)
     labels = {"key": "value"}
     observer.observe(37.0, labels)
     self.assertEqual(len(observer.aggregators), 0)
     self.assertTrue(logger_mock.warning.called)
コード例 #2
0
    def test_run(self):
        callback = Mock()
        observer = metrics.ValueObserver(callback, "name", "desc", "unit", int,
                                         Mock(), (), True)

        self.assertTrue(observer.run())
        callback.assert_called_once_with(observer)
コード例 #3
0
 def test_default_aggregator(self, logger_mock):
     meter = metrics.MeterProvider().get_meter(__name__)
     counter = metrics.Counter("", "", "1", int, meter)
     self.assertEqual(view.get_default_aggregator(counter),
                      aggregate.SumAggregator)
     ud_counter = metrics.UpDownCounter("", "", "1", int, meter)
     self.assertEqual(view.get_default_aggregator(ud_counter),
                      aggregate.SumAggregator)
     observer = metrics.SumObserver(lambda: None, "", "", "1", int)
     self.assertEqual(
         view.get_default_aggregator(observer),
         aggregate.LastValueAggregator,
     )
     ud_observer = metrics.SumObserver(lambda: None, "", "", "1", int)
     self.assertEqual(
         view.get_default_aggregator(ud_observer),
         aggregate.LastValueAggregator,
     )
     recorder = metrics.ValueRecorder("", "", "1", int, meter)
     self.assertEqual(
         view.get_default_aggregator(recorder),
         aggregate.MinMaxSumCountAggregator,
     )
     v_observer = metrics.ValueObserver(lambda: None, "", "", "1", int)
     self.assertEqual(
         view.get_default_aggregator(v_observer),
         aggregate.ValueObserverAggregator,
     )
     self.assertEqual(view.get_default_aggregator(DummyMetric()),
                      aggregate.SumAggregator)
     self.assertEqual(logger_mock.warning.call_count, 1)
コード例 #4
0
 def test_observe_disabled(self):
     observer = metrics.ValueObserver(
         None, "name", "desc", "unit", int, ("key",), False
     )
     labels = {"key": "value"}
     observer.observe(37, labels)
     self.assertEqual(len(observer.aggregators), 0)
コード例 #5
0
 def test_observe_disabled(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     observer = metrics.ValueObserver(None, "name", "desc", "unit", int,
                                      meter, ("key", ), False)
     labels = {"key": "value"}
     observer.observe(37, labels)
     self.assertEqual(len(observer.aggregators), 0)
コード例 #6
0
    def test_run_exception(self, logger_mock):
        callback = Mock()
        callback.side_effect = Exception("We have a problem!")

        observer = metrics.ValueObserver(callback, "name", "desc", "unit", int,
                                         Mock(), (), True)

        self.assertFalse(observer.run())
        self.assertTrue(logger_mock.warning.called)
コード例 #7
0
    def test_run(self):
        meter = metrics.MeterProvider().get_meter(__name__)

        callback = mock.Mock()
        observer = metrics.ValueObserver(callback, "name", "desc", "unit", int,
                                         meter, (), True)

        self.assertTrue(observer.run())
        callback.assert_called_once_with(observer)
コード例 #8
0
    def test_observe(self):
        observer = metrics.ValueObserver(None, "name", "desc", "unit", int,
                                         Mock(), ("key", ), True)
        labels = {"key": "value"}
        key_labels = metrics.get_dict_as_key(labels)
        values = (37, 42, 7, 21)
        for val in values:
            observer.observe(val, labels)
        self.assertEqual(
            observer.aggregators[key_labels].mmsc.current,
            (min(values), max(values), sum(values), len(values)),
        )

        self.assertEqual(observer.aggregators[key_labels].current, values[-1])
コード例 #9
0
    def test_collect_observers(self):
        meter = metrics.MeterProvider().get_meter(__name__)
        processor_mock = mock.Mock()
        meter.processor = processor_mock

        def callback(observer):
            self.assertIsInstance(observer, metrics_api.Observer)
            observer.observe(45, {})

        observer = metrics.ValueObserver(callback, "name", "desc", "unit", int,
                                         (), True)

        meter.observers.add(observer)
        meter.collect()
        self.assertTrue(processor_mock.process.called)
コード例 #10
0
    def test_observe(self):
        meter = metrics.MeterProvider().get_meter(__name__)
        observer = metrics.ValueObserver(None, "name", "desc", "unit", int,
                                         meter, ("key", ), True)
        labels = {"key": "value"}
        key_labels = tuple(sorted(labels.items()))
        values = (37, 42, 7, 21)
        for val in values:
            observer.observe(val, labels)
        self.assertEqual(
            observer.aggregators[key_labels].mmsc.current,
            (min(values), max(values), sum(values), len(values)),
        )

        self.assertEqual(observer.aggregators[key_labels].current, values[-1])