Пример #1
0
    def test_release_bound_instrument(self):
        meter = metrics.MeterProvider().get_meter(__name__)
        label_keys = ("key1",)
        labels = {"key1": "value1"}

        counter = metrics.Counter(
            "name", "desc", "unit", float, meter, label_keys
        )
        meter.metrics.add(counter)
        bound_counter = counter.bind(labels)
        bound_counter.add(4.0)

        valuerecorder = metrics.ValueRecorder(
            "name", "desc", "unit", float, meter, label_keys
        )
        meter.metrics.add(valuerecorder)
        bound_valuerecorder = valuerecorder.bind(labels)
        bound_valuerecorder.record(42)

        bound_counter.release()
        bound_valuerecorder.release()

        # be sure that bound instruments are only released after collection
        self.assertEqual(len(counter.bound_instruments), 1)
        self.assertEqual(len(valuerecorder.bound_instruments), 1)

        meter.collect()

        self.assertEqual(len(counter.bound_instruments), 0)
        self.assertEqual(len(valuerecorder.bound_instruments), 0)
Пример #2
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)
 def test_record_batch(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     labels = {"key1": "value1", "key2": "value2", "key3": "value3"}
     counter = metrics.Counter("name", "desc", "unit", float, meter)
     valuerecorder = metrics.ValueRecorder(
         "name", "desc", "unit", float, meter
     )
     counter_v = View(counter, SumAggregator)
     measure_v = View(valuerecorder, MinMaxSumCountAggregator)
     meter.register_view(counter_v)
     meter.register_view(measure_v)
     record_tuples = [(counter, 1.0), (valuerecorder, 3.0)]
     meter.record_batch(labels, record_tuples)
     labels_key = metrics.get_dict_as_key(labels)
     self.assertEqual(
         counter.bound_instruments[labels_key]
         .view_datas.pop()
         .aggregator.current,
         1.0,
     )
     self.assertEqual(
         valuerecorder.bound_instruments[labels_key]
         .view_datas.pop()
         .aggregator.current,
         (3.0, 3.0, 3.0, 1),
     )
Пример #4
0
 def test_record(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     metric = metrics.ValueRecorder("name", "desc", "unit", int, meter,
                                    ("key", ))
     labels = {"key": "value"}
     bound_valuerecorder = metric.bind(labels)
     values = (37, 42, 7)
     for val in values:
         metric.record(val, labels)
     self.assertEqual(
         bound_valuerecorder.aggregator.current,
         (min(values), max(values), sum(values), len(values)),
     )
Пример #5
0
 def test_record_batch_multiple(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     label_keys = ("key1", "key2", "key3")
     labels = {"key1": "value1", "key2": "value2", "key3": "value3"}
     counter = metrics.Counter("name", "desc", "unit", float, meter,
                               label_keys)
     valuerecorder = metrics.ValueRecorder("name", "desc", "unit", float,
                                           meter, label_keys)
     record_tuples = [(counter, 1.0), (valuerecorder, 3.0)]
     meter.record_batch(labels, record_tuples)
     self.assertEqual(counter.bind(labels).aggregator.current, 1.0)
     self.assertEqual(
         valuerecorder.bind(labels).aggregator.current, (3.0, 3.0, 3.0, 1))
 def test_record(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     metric = metrics.ValueRecorder("name", "desc", "unit", int, meter)
     labels = {"key": "value"}
     measure_v = View(metric, MinMaxSumCountAggregator)
     bound_valuerecorder = metric.bind(labels)
     meter.register_view(measure_v)
     values = (37, 42, 7)
     for val in values:
         metric.record(val, labels)
     self.assertEqual(
         bound_valuerecorder.view_datas.pop().aggregator.current,
         (min(values), max(values), sum(values), len(values)),
     )
Пример #7
0
    def test_direct_call_release_bound_instrument(self):
        meter = metrics.MeterProvider().get_meter(__name__)
        label_keys = ("key1", )
        labels = {"key1": "value1"}

        counter = metrics.Counter("name", "desc", "unit", float, meter,
                                  label_keys)
        meter.metrics.add(counter)
        counter.add(4.0, labels)

        valuerecorder = metrics.ValueRecorder("name", "desc", "unit", float,
                                              meter, label_keys)
        meter.metrics.add(valuerecorder)
        valuerecorder.record(42.0, labels)

        self.assertEqual(len(counter.bound_instruments), 1)
        self.assertEqual(len(valuerecorder.bound_instruments), 1)

        meter.collect()

        self.assertEqual(len(counter.bound_instruments), 0)
        self.assertEqual(len(valuerecorder.bound_instruments), 0)