@@ -376,22 +376,20 @@ def test_customize_span_exporter_sigv4(self):
376376 self .customize_exporter_test (
377377 config ,
378378 _customize_span_exporter ,
379+ OTLPSpanExporter (),
379380 OTLPSpanExporter ,
380381 AwsAuthSession ,
381382 Compression .NoCompression ,
382- OTLPSpanExporter (),
383- Resource .get_empty (),
384383 )
385384
386385 for config in bad_configs :
387386 self .customize_exporter_test (
388387 config ,
389388 _customize_span_exporter ,
389+ OTLPSpanExporter (),
390390 OTLPSpanExporter ,
391391 Session ,
392392 Compression .NoCompression ,
393- OTLPSpanExporter (),
394- Resource .get_empty (),
395393 )
396394
397395 self .assertIsInstance (
@@ -482,17 +480,35 @@ def test_customize_logs_exporter_sigv4(self):
482480
483481 for config in good_configs :
484482 self .customize_exporter_test (
485- config , _customize_logs_exporter , OTLPLogExporter , AwsAuthSession , Compression .Gzip , OTLPLogExporter ()
483+ config , _customize_logs_exporter , OTLPLogExporter (), OTLPLogExporter , AwsAuthSession , Compression .Gzip
486484 )
487485
488486 for config in bad_configs :
489487 self .customize_exporter_test (
490- config , _customize_logs_exporter , OTLPLogExporter , Session , Compression .NoCompression , OTLPLogExporter ()
488+ config , _customize_logs_exporter , OTLPLogExporter (), OTLPLogExporter , Session , Compression .NoCompression
491489 )
492490
493- self .assertIsInstance (_customize_logs_exporter (OTLPGrpcLogExporter ()), OTLPGrpcLogExporter )
491+ self .assertIsInstance (
492+ _customize_logs_exporter (OTLPGrpcLogExporter (), Resource .get_empty ()), OTLPGrpcLogExporter
493+ )
494+
495+ # Need to patch all of these to prevent some weird multi-threading error with the LogProvider
496+ @patch ("amazon.opentelemetry.distro.aws_opentelemetry_configurator.LoggingHandler" , return_value = MagicMock ())
497+ @patch ("amazon.opentelemetry.distro.aws_opentelemetry_configurator.getLogger" , return_value = MagicMock ())
498+ @patch ("amazon.opentelemetry.distro.aws_opentelemetry_configurator._customize_logs_exporter" )
499+ @patch ("amazon.opentelemetry.distro.aws_opentelemetry_configurator.LoggerProvider" , return_value = MagicMock ())
500+ @patch (
501+ "amazon.opentelemetry.distro.aws_opentelemetry_configurator.BatchLogRecordProcessor" , return_value = MagicMock ()
502+ )
503+ def test_init_logging (
504+ self ,
505+ mock_batch_processor ,
506+ mock_logger_provider ,
507+ mock_customize_logs_exporter ,
508+ mock_get_logger ,
509+ mock_logging_handler ,
510+ ):
494511
495- def test_init_logging (self ):
496512 captured_exporter = None
497513
498514 def capture_exporter (* args , ** kwargs ):
@@ -501,6 +517,8 @@ def capture_exporter(*args, **kwargs):
501517 captured_exporter = result
502518 return result
503519
520+ mock_customize_logs_exporter .side_effect = capture_exporter
521+
504522 test_cases = [
505523 [{"otlp" : OTLPLogExporter }, OTLPLogExporter ],
506524 [{}, OTLPLogExporter ],
@@ -509,18 +527,12 @@ def capture_exporter(*args, **kwargs):
509527
510528 os .environ [OTEL_EXPORTER_OTLP_LOGS_ENDPOINT ] = "https://logs.us-east-1.amazonaws.com/v1/logs"
511529
512- with patch (
513- "amazon.opentelemetry.distro.aws_opentelemetry_configurator._customize_logs_exporter"
514- ) as mock_customize_logs_exporter :
515-
516- mock_customize_logs_exporter .side_effect = capture_exporter
517-
518- for tc in test_cases :
519- exporter_dict = tc [0 ]
520- expected_exporter = tc [1 ]
521- _init_logging (exporter_dict , Resource .get_empty ())
530+ for tc in test_cases :
531+ exporter_dict = tc [0 ]
532+ expected_exporter = tc [1 ]
533+ _init_logging (exporter_dict , Resource .get_empty ())
522534
523- self .assertIsInstance (captured_exporter , expected_exporter )
535+ self .assertIsInstance (captured_exporter , expected_exporter )
524536
525537 os .environ .pop (OTEL_EXPORTER_OTLP_LOGS_ENDPOINT )
526538
@@ -664,13 +676,19 @@ def test_customize_metric_exporter(self):
664676 os .environ .pop ("OTEL_METRIC_EXPORT_INTERVAL" , None )
665677
666678 def customize_exporter_test (
667- self , config , executor , expected_exporter_type , expected_session , expected_compression , * args
679+ self ,
680+ config ,
681+ executor ,
682+ default_exporter ,
683+ expected_exporter_type ,
684+ expected_session ,
685+ expected_compression ,
668686 ):
669687 for key , value in config .items ():
670688 os .environ [key ] = value
671689
672690 try :
673- result = executor (* args )
691+ result = executor (default_exporter , Resource . get_empty () )
674692 self .assertIsInstance (result , expected_exporter_type )
675693 self .assertIsInstance (result ._session , expected_session )
676694 self .assertEqual (result ._compression , expected_compression )
0 commit comments