@@ -112,6 +112,14 @@ def Export(self, request, context):
112
112
return ExportMetricsServiceResponse ()
113
113
114
114
115
+ class MetricsServiceServicerUNKNOWN (MetricsServiceServicer ):
116
+ # pylint: disable=invalid-name,unused-argument,no-self-use
117
+ def Export (self , request , context ):
118
+ context .set_code (StatusCode .UNKNOWN )
119
+
120
+ return ExportMetricsServiceResponse ()
121
+
122
+
115
123
class MetricsServiceServicerSUCCESS (MetricsServiceServicer ):
116
124
# pylint: disable=invalid-name,unused-argument,no-self-use
117
125
def Export (self , request , context ):
@@ -441,6 +449,31 @@ def test_unavailable_delay(self, mock_sleep, mock_expo):
441
449
)
442
450
mock_sleep .assert_called_with (4 )
443
451
452
+ @patch (
453
+ "opentelemetry.exporter.otlp.proto.grpc.exporter._create_exp_backoff_generator"
454
+ )
455
+ @patch ("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep" )
456
+ @patch ("opentelemetry.exporter.otlp.proto.grpc.exporter.logger.error" )
457
+ def test_unknown_logs (self , mock_logger_error , mock_sleep , mock_expo ):
458
+
459
+ mock_expo .configure_mock (** {"return_value" : [1 ]})
460
+
461
+ add_MetricsServiceServicer_to_server (
462
+ MetricsServiceServicerUNKNOWN (), self .server
463
+ )
464
+ self .assertEqual (
465
+ self .exporter .export (self .metrics ["sum_int" ]),
466
+ MetricExportResult .FAILURE ,
467
+ )
468
+ mock_sleep .assert_not_called ()
469
+ mock_logger_error .assert_called_with (
470
+ "Failed to export %s to %s, error code: %s" ,
471
+ "metrics" ,
472
+ "localhost:4317" ,
473
+ StatusCode .UNKNOWN ,
474
+ exc_info = True ,
475
+ )
476
+
444
477
def test_success (self ):
445
478
add_MetricsServiceServicer_to_server (
446
479
MetricsServiceServicerSUCCESS (), self .server
0 commit comments