コード例 #1
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)
コード例 #2
0
    def observe(self, value: metrics_api.ValueT, labels: Dict[str,
                                                              str]) -> None:
        key = get_dict_as_key(labels)
        if not self._validate_observe(value, key):
            return

        if key not in self.aggregators:
            # TODO: how to cleanup aggregators?
            self.aggregators[key] = get_default_aggregator(self)()
        aggregator = self.aggregators[key]
        aggregator.update(value)