def test_observe_disabled(self): meter = metrics.MeterProvider().get_meter(__name__) observer = metrics.Observer(None, "name", "desc", "unit", int, meter, ("key", ), False) labels = {"key": "value"} observer.observe(37, labels) self.assertEqual(len(observer.aggregators), 0)
def test_observe_incorrect_type(self, logger_mock): meter = metrics.MeterProvider().get_meter(__name__) observer = metrics.Observer(None, "name", "desc", "unit", int, meter, ("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): meter = metrics.MeterProvider().get_meter(__name__) callback = mock.Mock() observer = metrics.Observer(callback, "name", "desc", "unit", int, meter, (), True) self.assertTrue(observer.run()) callback.assert_called_once_with(observer)
def test_run_exception(self, logger_mock): meter = metrics.MeterProvider().get_meter(__name__) callback = mock.Mock() callback.side_effect = Exception("We have a problem!") observer = metrics.Observer(callback, "name", "desc", "unit", int, meter, (), True) self.assertFalse(observer.run()) self.assertTrue(logger_mock.warning.called)
def test_collect_observers(self): meter = metrics.MeterProvider().get_meter(__name__) batcher_mock = mock.Mock() meter.batcher = batcher_mock def callback(observer): self.assertIsInstance(observer, metrics_api.Observer) observer.observe(45, {}) observer = metrics.Observer(callback, "name", "desc", "unit", int, meter, (), True) meter.observers.add(observer) meter.collect() self.assertTrue(batcher_mock.process.called)
def test_observe(self): meter = metrics.MeterProvider().get_meter(__name__) observer = metrics.Observer(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])
def test_observe(self): meter = metrics.MeterProvider().get_meter(__name__) observer = metrics.Observer(None, "name", "desc", "unit", int, meter, ("key", ), True) kvp = {"key": "value"} label_set = meter.get_label_set(kvp) values = (37, 42, 7, 21) for val in values: observer.observe(val, label_set) self.assertEqual( observer.aggregators[label_set].mmsc.current, (min(values), max(values), sum(values), len(values)), ) self.assertEqual(observer.aggregators[label_set].current, values[-1])