12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
14
15
- from os import devnull
15
+ from io import StringIO
16
+ from json import loads
17
+ from time import sleep
16
18
from unittest import TestCase
17
19
18
20
from opentelemetry import metrics
@@ -27,12 +29,73 @@ class TestConsoleExporter(TestCase):
27
29
def test_console_exporter (self ):
28
30
29
31
try :
30
- exporter = ConsoleMetricExporter (out = open (devnull , "w" ))
31
- reader = PeriodicExportingMetricReader (exporter )
32
+ output = StringIO ()
33
+ exporter = ConsoleMetricExporter (out = output )
34
+ reader = PeriodicExportingMetricReader (
35
+ exporter , export_interval_millis = 100
36
+ )
32
37
provider = MeterProvider (metric_readers = [reader ])
33
38
metrics .set_meter_provider (provider )
34
39
meter = metrics .get_meter (__name__ )
35
- counter = meter .create_counter ("test" )
36
- counter .add (1 )
40
+ counter = meter .create_counter (
41
+ "name" , description = "description" , unit = "unit"
42
+ )
43
+ counter .add (1 , attributes = {"a" : "b" })
44
+ sleep (0.3 )
45
+ provider .shutdown ()
46
+ sleep (0.3 )
47
+ output .seek (0 )
48
+ result = output .readlines ()
37
49
except Exception as error :
38
50
self .fail (f"Unexpected exception { error } raised" )
51
+
52
+ self .assertGreater (len (result ), 0 )
53
+ result_0 = loads (result [0 ])
54
+
55
+ self .assertEqual (
56
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["scope" ][
57
+ "name"
58
+ ],
59
+ "test_console_exporter" ,
60
+ )
61
+ self .assertEqual (
62
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
63
+ "name"
64
+ ],
65
+ "name" ,
66
+ )
67
+ self .assertEqual (
68
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
69
+ "description"
70
+ ],
71
+ "description" ,
72
+ )
73
+ self .assertEqual (
74
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
75
+ "unit"
76
+ ],
77
+ "unit" ,
78
+ )
79
+ self .assertEqual (
80
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
81
+ "data"
82
+ ]["data_points" ][0 ]["attributes" ],
83
+ {"a" : "b" },
84
+ )
85
+ self .assertEqual (
86
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
87
+ "data"
88
+ ]["data_points" ][0 ]["value" ],
89
+ 1 ,
90
+ )
91
+ self .assertEqual (
92
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
93
+ "data"
94
+ ]["aggregation_temporality" ],
95
+ 2 ,
96
+ )
97
+ self .assertTrue (
98
+ result_0 ["resource_metrics" ][0 ]["scope_metrics" ][0 ]["metrics" ][0 ][
99
+ "data"
100
+ ]["is_monotonic" ]
101
+ )
0 commit comments