File tree Expand file tree Collapse file tree 2 files changed +33
-5
lines changed
src/opentelemetry/sdk/_metrics Expand file tree Collapse file tree 2 files changed +33
-5
lines changed Original file line number Diff line number Diff line change @@ -198,21 +198,25 @@ def shutdown(self):
198
198
_logger .warning ("shutdown can only be called once" )
199
199
return False
200
200
201
- result = True
201
+ overall_result = True
202
202
203
203
for metric_reader in self ._sdk_config .metric_readers :
204
- result = result and metric_reader .shutdown ()
204
+ metric_reader_result = metric_reader .shutdown ()
205
205
206
- if not result :
207
- _logger .warning ("A MetricReader failed to shutdown" )
206
+ if not metric_reader_result :
207
+ _logger .warning (
208
+ "MetricReader {metric_reader} failed to shutdown"
209
+ )
210
+
211
+ overall_result = overall_result and metric_reader_result
208
212
209
213
self ._shutdown = True
210
214
211
215
if self ._atexit_handler is not None :
212
216
unregister (self ._atexit_handler )
213
217
self ._atexit_handler = None
214
218
215
- return result
219
+ return overall_result
216
220
217
221
def get_meter (
218
222
self ,
Original file line number Diff line number Diff line change @@ -90,6 +90,30 @@ def test_get_meter_duplicate(self):
90
90
self .assertIs (meter1 , meter2 )
91
91
self .assertIsNot (meter1 , meter3 )
92
92
93
+ def test_shutdown (self ):
94
+
95
+ mock_metric_reader_0 = Mock (** {"shutdown.return_value" : False })
96
+ mock_metric_reader_1 = Mock (** {"shutdown.return_value" : True })
97
+
98
+ meter_provider = MeterProvider (
99
+ metric_readers = [mock_metric_reader_0 , mock_metric_reader_1 ]
100
+ )
101
+
102
+ self .assertFalse (meter_provider .shutdown ())
103
+ mock_metric_reader_0 .shutdown .assert_called_once ()
104
+ mock_metric_reader_1 .shutdown .assert_called_once ()
105
+
106
+ mock_metric_reader_0 = Mock (** {"shutdown.return_value" : True })
107
+ mock_metric_reader_1 = Mock (** {"shutdown.return_value" : True })
108
+
109
+ meter_provider = MeterProvider (
110
+ metric_readers = [mock_metric_reader_0 , mock_metric_reader_1 ]
111
+ )
112
+
113
+ self .assertTrue (meter_provider .shutdown ())
114
+ mock_metric_reader_0 .shutdown .assert_called_once ()
115
+ mock_metric_reader_1 .shutdown .assert_called_once ()
116
+
93
117
def test_shutdown_subsequent_calls (self ):
94
118
"""
95
119
No subsequent attempts to get a `Meter` are allowed after calling
You can’t perform that action at this time.
0 commit comments