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)
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)
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)
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)
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)
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)
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)
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])
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)
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])