Skip to content

Commit 952253f

Browse files
committed
Refactor test case
1 parent a01dd37 commit 952253f

File tree

1 file changed

+75
-11
lines changed

1 file changed

+75
-11
lines changed

opentelemetry-sdk/tests/metrics/integration_test/test_console_exporter.py

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

15-
from os import devnull
15+
from io import StringIO
16+
from json import loads
17+
from time import sleep
1618
from unittest import TestCase
1719

1820
from opentelemetry import metrics
@@ -26,13 +28,75 @@
2628
class TestConsoleExporter(TestCase):
2729
def test_console_exporter(self):
2830

29-
try:
30-
exporter = ConsoleMetricExporter(out=open(devnull, "w"))
31-
reader = PeriodicExportingMetricReader(exporter)
32-
provider = MeterProvider(metric_readers=[reader])
33-
metrics.set_meter_provider(provider)
34-
meter = metrics.get_meter(__name__)
35-
counter = meter.create_counter("test")
36-
counter.add(1)
37-
except Exception as error:
38-
self.fail(f"Unexpected exception {error} raised")
31+
output = StringIO()
32+
exporter = ConsoleMetricExporter(out=output)
33+
reader = PeriodicExportingMetricReader(
34+
exporter, export_interval_millis=100
35+
)
36+
provider = MeterProvider(metric_readers=[reader])
37+
metrics.set_meter_provider(provider)
38+
meter = metrics.get_meter(__name__)
39+
counter = meter.create_counter(
40+
"name", description="description", unit="unit"
41+
)
42+
counter.add(1, attributes={"a": "b"})
43+
provider.shutdown()
44+
45+
for _ in range(10):
46+
sleep(0.1)
47+
output.seek(0)
48+
result = output.readlines()
49+
if result:
50+
break
51+
else:
52+
raise Exception("No output found after 1 second")
53+
54+
result_0 = loads(result[0])
55+
56+
self.assertEqual(
57+
result_0["resource_metrics"][0]["scope_metrics"][0]["scope"][
58+
"name"
59+
],
60+
"test_console_exporter",
61+
)
62+
self.assertEqual(
63+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
64+
"name"
65+
],
66+
"name",
67+
)
68+
self.assertEqual(
69+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
70+
"description"
71+
],
72+
"description",
73+
)
74+
self.assertEqual(
75+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
76+
"unit"
77+
],
78+
"unit",
79+
)
80+
self.assertEqual(
81+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
82+
"data"
83+
]["data_points"][0]["attributes"],
84+
{"a": "b"},
85+
)
86+
self.assertEqual(
87+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
88+
"data"
89+
]["data_points"][0]["value"],
90+
1,
91+
)
92+
self.assertEqual(
93+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
94+
"data"
95+
]["aggregation_temporality"],
96+
2,
97+
)
98+
self.assertTrue(
99+
result_0["resource_metrics"][0]["scope_metrics"][0]["metrics"][0][
100+
"data"
101+
]["is_monotonic"]
102+
)

0 commit comments

Comments
 (0)