|
47 | 47 | )
|
48 | 48 | from amazon.opentelemetry.distro.aws_opentelemetry_distro import AwsOpenTelemetryDistro
|
49 | 49 | from amazon.opentelemetry.distro.aws_span_metrics_processor import AwsSpanMetricsProcessor
|
| 50 | +from amazon.opentelemetry.distro.exporter.console.logs.compact_console_log_exporter import CompactConsoleLogExporter |
50 | 51 | from amazon.opentelemetry.distro.exporter.otlp.aws.common.aws_auth_session import AwsAuthSession
|
51 | 52 |
|
52 | 53 | # pylint: disable=line-too-long
|
|
70 | 71 | from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
71 | 72 | from opentelemetry.metrics import get_meter_provider
|
72 | 73 | from opentelemetry.processor.baggage import BaggageSpanProcessor
|
73 |
| -from opentelemetry.sdk._logs.export import BatchLogRecordProcessor |
| 74 | +from opentelemetry.sdk._logs.export import BatchLogRecordProcessor, ConsoleLogExporter |
74 | 75 | from opentelemetry.sdk.environment_variables import OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG
|
75 | 76 | from opentelemetry.sdk.metrics._internal.export import PeriodicExportingMetricReader
|
76 | 77 | from opentelemetry.sdk.resources import Resource
|
@@ -680,6 +681,58 @@ def capture_exporter(*args, **kwargs):
|
680 | 681 |
|
681 | 682 | os.environ.pop(OTEL_EXPORTER_OTLP_LOGS_ENDPOINT)
|
682 | 683 |
|
| 684 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator.LoggingHandler", return_value=MagicMock()) |
| 685 | + @patch("logging.getLogger", return_value=MagicMock()) |
| 686 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator._customize_logs_exporter") |
| 687 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator.LoggerProvider", return_value=MagicMock()) |
| 688 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator._customize_log_record_processor") |
| 689 | + def test_init_logging_console_exporter_replacement( |
| 690 | + self, |
| 691 | + mock_customize_processor, |
| 692 | + mock_logger_provider, |
| 693 | + mock_customize_logs_exporter, |
| 694 | + mock_get_logger, |
| 695 | + mock_logging_handler, |
| 696 | + ): |
| 697 | + """Test that ConsoleLogExporter is replaced with CompactConsoleLogExporter when in Lambda""" |
| 698 | + |
| 699 | + # Mock _is_lambda_environment to return True |
| 700 | + with patch( |
| 701 | + "amazon.opentelemetry.distro.aws_opentelemetry_configurator._is_lambda_environment", return_value=True |
| 702 | + ): |
| 703 | + # Test with ConsoleLogExporter |
| 704 | + exporters = {"console": ConsoleLogExporter} |
| 705 | + _init_logging(exporters, Resource.get_empty()) |
| 706 | + |
| 707 | + # Verify that _customize_log_record_processor was called |
| 708 | + mock_customize_processor.assert_called_once() |
| 709 | + |
| 710 | + # Get the exporter that was passed to _customize_logs_exporter |
| 711 | + call_args = mock_customize_logs_exporter.call_args |
| 712 | + exporter_instance = call_args[0][0] |
| 713 | + |
| 714 | + # Verify it's a CompactConsoleLogExporter instance |
| 715 | + self.assertIsInstance(exporter_instance, CompactConsoleLogExporter) |
| 716 | + |
| 717 | + # Reset mocks |
| 718 | + mock_customize_processor.reset_mock() |
| 719 | + mock_customize_logs_exporter.reset_mock() |
| 720 | + |
| 721 | + # Test when not in Lambda environment - should not replace |
| 722 | + with patch( |
| 723 | + "amazon.opentelemetry.distro.aws_opentelemetry_configurator._is_lambda_environment", return_value=False |
| 724 | + ): |
| 725 | + exporters = {"console": ConsoleLogExporter} |
| 726 | + _init_logging(exporters, Resource.get_empty()) |
| 727 | + |
| 728 | + # Get the exporter that was passed to _customize_logs_exporter |
| 729 | + call_args = mock_customize_logs_exporter.call_args |
| 730 | + exporter_instance = call_args[0][0] |
| 731 | + |
| 732 | + # Verify it's still a regular ConsoleLogExporter |
| 733 | + self.assertIsInstance(exporter_instance, ConsoleLogExporter) |
| 734 | + self.assertNotIsInstance(exporter_instance, CompactConsoleLogExporter) |
| 735 | + |
683 | 736 | def test_customize_span_processors(self):
|
684 | 737 | mock_tracer_provider: TracerProvider = MagicMock()
|
685 | 738 | os.environ.pop("AGENT_OBSERVABILITY_ENABLED", None)
|
|
0 commit comments