コード例 #1
0
 def test_export(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     exporter = ConsoleMetricsExporter()
     metric = metrics.Counter(
         "available memory",
         "available memory",
         "bytes",
         int,
         meter,
         ("environment", ),
     )
     labels = {"environment": "staging"}
     aggregator = SumAggregator()
     record = MetricRecord(metric, labels, aggregator)
     result = '{}(data="{}", labels="{}", value={})'.format(
         ConsoleMetricsExporter.__name__,
         metric,
         labels,
         aggregator.checkpoint,
     )
     with mock.patch("sys.stdout") as mock_stdout:
         exporter.export([record])
         mock_stdout.write.assert_any_call(result)
コード例 #2
0
 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),
     )
コード例 #3
0
 def test_ungrouped_batcher_process_not_stateful(self):
     meter = metrics.MeterProvider().get_meter(__name__)
     batcher = UngroupedBatcher(True)
     aggregator = SumAggregator()
     metric = metrics.Counter(
         "available memory",
         "available memory",
         "bytes",
         int,
         meter,
         ("environment", ),
     )
     labels = ()
     _batch_map = {}
     aggregator.update(1.0)
     batcher._batch_map = _batch_map
     record = metrics.Record(metric, labels, aggregator)
     batcher.process(record)
     self.assertEqual(len(batcher._batch_map), 1)
     self.assertIsNotNone(batcher._batch_map.get((metric, labels)))
     self.assertEqual(batcher._batch_map.get((metric, labels)).current, 0)
     self.assertEqual(
         batcher._batch_map.get((metric, labels)).checkpoint, 1.0)
コード例 #4
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)
コード例 #5
0
 def test_add(self):
     metric = metrics.Counter("name", "desc", "unit", int, ("key", ))
     handle = metric.get_handle(("value", ))
     metric.add(("value", ), 3)
     metric.add(("value", ), 2)
     self.assertEqual(handle.data, 5)