Skip to content

Commit 61c0167

Browse files
committed
Add test cases
1 parent ce03983 commit 61c0167

File tree

3 files changed

+10
-479
lines changed

3 files changed

+10
-479
lines changed

ext/opentelemetry-ext-otlpexporter/tests/test_otlp_metrics_exporter.py

Lines changed: 4 additions & 171 deletions
Original file line numberDiff line numberDiff line change
@@ -12,178 +12,11 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import unittest
16-
from unittest import mock
17-
18-
import grpc
19-
from google.protobuf.timestamp_pb2 import Timestamp
20-
from opencensus.proto.metrics.v1 import metrics_pb2
21-
22-
from opentelemetry import metrics
23-
from opentelemetry.ext.otcollector import metrics_exporter
24-
from opentelemetry.sdk.metrics import (
25-
Counter,
26-
Measure,
27-
MeterProvider,
28-
get_labels_as_key,
29-
)
30-
from opentelemetry.sdk.metrics.export import (
31-
MetricRecord,
32-
MetricsExportResult,
33-
aggregate,
34-
)
15+
from unittest import TestCase
3516

3617

3718
# pylint: disable=no-member
38-
class TestCollectorMetricsExporter(unittest.TestCase):
39-
@classmethod
40-
def setUpClass(cls):
41-
# pylint: disable=protected-access
42-
metrics.set_meter_provider(MeterProvider())
43-
cls._meter = metrics.get_meter(__name__)
44-
cls._labels = {"environment": "staging"}
45-
cls._key_labels = get_labels_as_key(cls._labels)
46-
47-
def test_constructor(self):
48-
mock_get_node = mock.Mock()
49-
patch = mock.patch(
50-
"opentelemetry.ext.otcollector.util.get_node",
51-
side_effect=mock_get_node,
52-
)
53-
service_name = "testServiceName"
54-
host_name = "testHostName"
55-
client = grpc.insecure_channel("")
56-
endpoint = "testEndpoint"
57-
with patch:
58-
exporter = metrics_exporter.CollectorMetricsExporter(
59-
service_name=service_name,
60-
host_name=host_name,
61-
endpoint=endpoint,
62-
client=client,
63-
)
64-
65-
self.assertIs(exporter.client, client)
66-
self.assertEqual(exporter.endpoint, endpoint)
67-
mock_get_node.assert_called_with(service_name, host_name)
68-
69-
def test_get_collector_metric_type(self):
70-
result = metrics_exporter.get_collector_metric_type(
71-
Counter("testName", "testDescription", "unit", int, None)
72-
)
73-
self.assertIs(result, metrics_pb2.MetricDescriptor.CUMULATIVE_INT64)
74-
result = metrics_exporter.get_collector_metric_type(
75-
Counter("testName", "testDescription", "unit", float, None)
76-
)
77-
self.assertIs(result, metrics_pb2.MetricDescriptor.CUMULATIVE_DOUBLE)
78-
result = metrics_exporter.get_collector_metric_type(
79-
Measure("testName", "testDescription", "unit", None, None)
80-
)
81-
self.assertIs(result, metrics_pb2.MetricDescriptor.UNSPECIFIED)
82-
83-
def test_get_collector_point(self):
84-
aggregator = aggregate.CounterAggregator()
85-
int_counter = self._meter.create_metric(
86-
"testName", "testDescription", "unit", int, Counter
87-
)
88-
float_counter = self._meter.create_metric(
89-
"testName", "testDescription", "unit", float, Counter
90-
)
91-
measure = self._meter.create_metric(
92-
"testName", "testDescription", "unit", float, Measure
93-
)
94-
result = metrics_exporter.get_collector_point(
95-
MetricRecord(aggregator, self._key_labels, int_counter)
96-
)
97-
self.assertIsInstance(result, metrics_pb2.Point)
98-
self.assertIsInstance(result.timestamp, Timestamp)
99-
self.assertEqual(result.int64_value, 0)
100-
aggregator.update(123.5)
101-
aggregator.take_checkpoint()
102-
result = metrics_exporter.get_collector_point(
103-
MetricRecord(aggregator, self._key_labels, float_counter)
104-
)
105-
self.assertEqual(result.double_value, 123.5)
106-
self.assertRaises(
107-
TypeError,
108-
metrics_exporter.get_collector_point(
109-
MetricRecord(aggregator, self._key_labels, measure)
110-
),
111-
)
112-
113-
def test_export(self):
114-
mock_client = mock.MagicMock()
115-
mock_export = mock.MagicMock()
116-
mock_client.Export = mock_export
117-
host_name = "testHostName"
118-
collector_exporter = metrics_exporter.CollectorMetricsExporter(
119-
client=mock_client, host_name=host_name
120-
)
121-
test_metric = self._meter.create_metric(
122-
"testname", "testdesc", "unit", int, Counter, ["environment"]
123-
)
124-
record = MetricRecord(
125-
aggregate.CounterAggregator(), self._key_labels, test_metric
126-
)
127-
128-
result = collector_exporter.export([record])
129-
self.assertIs(result, MetricsExportResult.SUCCESS)
130-
# pylint: disable=unsubscriptable-object
131-
export_arg = mock_export.call_args[0]
132-
service_request = next(export_arg[0])
133-
output_metrics = getattr(service_request, "metrics")
134-
output_node = getattr(service_request, "node")
135-
self.assertEqual(len(output_metrics), 1)
136-
self.assertIsNotNone(getattr(output_node, "library_info"))
137-
self.assertIsNotNone(getattr(output_node, "service_info"))
138-
output_identifier = getattr(output_node, "identifier")
139-
self.assertEqual(
140-
getattr(output_identifier, "host_name"), "testHostName"
141-
)
19+
class TestOTLPMetricsExporter(TestCase):
14220

143-
def test_translate_to_collector(self):
144-
test_metric = self._meter.create_metric(
145-
"testname", "testdesc", "unit", int, Counter, ["environment"]
146-
)
147-
aggregator = aggregate.CounterAggregator()
148-
aggregator.update(123)
149-
aggregator.take_checkpoint()
150-
record = MetricRecord(aggregator, self._key_labels, test_metric)
151-
output_metrics = metrics_exporter.translate_to_collector([record])
152-
self.assertEqual(len(output_metrics), 1)
153-
self.assertIsInstance(output_metrics[0], metrics_pb2.Metric)
154-
self.assertEqual(output_metrics[0].metric_descriptor.name, "testname")
155-
self.assertEqual(
156-
output_metrics[0].metric_descriptor.description, "testdesc"
157-
)
158-
self.assertEqual(output_metrics[0].metric_descriptor.unit, "unit")
159-
self.assertEqual(
160-
output_metrics[0].metric_descriptor.type,
161-
metrics_pb2.MetricDescriptor.CUMULATIVE_INT64,
162-
)
163-
self.assertEqual(
164-
len(output_metrics[0].metric_descriptor.label_keys), 1
165-
)
166-
self.assertEqual(
167-
output_metrics[0].metric_descriptor.label_keys[0].key,
168-
"environment",
169-
)
170-
self.assertEqual(len(output_metrics[0].timeseries), 1)
171-
self.assertEqual(len(output_metrics[0].timeseries[0].label_values), 1)
172-
self.assertEqual(
173-
output_metrics[0].timeseries[0].label_values[0].has_value, True
174-
)
175-
self.assertEqual(
176-
output_metrics[0].timeseries[0].label_values[0].value, "staging"
177-
)
178-
self.assertEqual(len(output_metrics[0].timeseries[0].points), 1)
179-
self.assertEqual(
180-
output_metrics[0].timeseries[0].points[0].timestamp.seconds,
181-
record.aggregator.last_update_timestamp // 1000000000,
182-
)
183-
self.assertEqual(
184-
output_metrics[0].timeseries[0].points[0].timestamp.nanos,
185-
record.aggregator.last_update_timestamp % 1000000000,
186-
)
187-
self.assertEqual(
188-
output_metrics[0].timeseries[0].points[0].int64_value, 123
189-
)
21+
def test_case(self):
22+
pass

0 commit comments

Comments
 (0)