|
16 | 16 | _customize_sampler,
|
17 | 17 | _customize_span_processors,
|
18 | 18 | _is_application_signals_enabled,
|
| 19 | + _is_defer_to_workers_enabled, |
| 20 | + _is_wsgi_master_process, |
19 | 21 | )
|
20 | 22 | from amazon.opentelemetry.distro.aws_opentelemetry_distro import AwsOpenTelemetryDistro
|
21 | 23 | from amazon.opentelemetry.distro.aws_span_metrics_processor import AwsSpanMetricsProcessor
|
@@ -305,6 +307,50 @@ def test_application_signals_exporter_provider(self):
|
305 | 307 | self.assertEqual("127.0.0.1:2000", exporter._udp_exporter._endpoint)
|
306 | 308 | os.environ.pop("AWS_LAMBDA_FUNCTION_NAME", None)
|
307 | 309 |
|
| 310 | + def test_is_defer_to_workers_enabled(self): |
| 311 | + os.environ.setdefault("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", "True") |
| 312 | + self.assertTrue(_is_defer_to_workers_enabled()) |
| 313 | + os.environ.pop("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", None) |
| 314 | + |
| 315 | + os.environ.setdefault("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", "False") |
| 316 | + self.assertFalse(_is_defer_to_workers_enabled()) |
| 317 | + os.environ.pop("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", None) |
| 318 | + self.assertFalse(_is_defer_to_workers_enabled()) |
| 319 | + |
| 320 | + def test_is_wsgi_master_process_first_time(self): |
| 321 | + self.assertTrue(_is_wsgi_master_process()) |
| 322 | + self.assertEqual(os.environ["IS_WSGI_MASTER_PROCESS_ALREADY_SEEN"], "true") |
| 323 | + os.environ.pop("IS_WSGI_MASTER_PROCESS_ALREADY_SEEN", None) |
| 324 | + |
| 325 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator._initialize_components") |
| 326 | + def test_initialize_components_skipped_in_master_when_deferred_enabled(self, mock_initialize_components): |
| 327 | + os.environ.setdefault("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", "True") |
| 328 | + os.environ.pop("IS_WSGI_MASTER_PROCESS_ALREADY_SEEN", None) |
| 329 | + self.assertTrue(_is_defer_to_workers_enabled()) |
| 330 | + AwsOpenTelemetryConfigurator()._configure() |
| 331 | + mock_initialize_components.assert_not_called() |
| 332 | + os.environ.pop("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", None) |
| 333 | + os.environ.pop("IS_WSGI_MASTER_PROCESS_ALREADY_SEEN", None) |
| 334 | + |
| 335 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator._initialize_components") |
| 336 | + def test_initialize_components_called_in_worker_when_deferred_enabled(self, mock_initialize_components): |
| 337 | + os.environ.setdefault("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", "True") |
| 338 | + os.environ.setdefault("IS_WSGI_MASTER_PROCESS_ALREADY_SEEN", "true") |
| 339 | + self.assertTrue(_is_defer_to_workers_enabled()) |
| 340 | + self.assertFalse(_is_wsgi_master_process()) |
| 341 | + AwsOpenTelemetryConfigurator()._configure() |
| 342 | + mock_initialize_components.assert_called_once() |
| 343 | + os.environ.pop("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", None) |
| 344 | + os.environ.pop("IS_WSGI_MASTER_PROCESS_ALREADY_SEEN", None) |
| 345 | + |
| 346 | + @patch("amazon.opentelemetry.distro.aws_opentelemetry_configurator._initialize_components") |
| 347 | + def test_initialize_components_called_when_deferred_disabled(self, mock_initialize_components): |
| 348 | + os.environ.pop("OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED", None) |
| 349 | + self.assertFalse(_is_defer_to_workers_enabled()) |
| 350 | + AwsOpenTelemetryConfigurator()._configure() |
| 351 | + mock_initialize_components.assert_called_once() |
| 352 | + os.environ.pop("IS_WSGI_MASTER_PROCESS_ALREADY_SEEN", None) |
| 353 | + |
308 | 354 |
|
309 | 355 | def validate_distro_environ():
|
310 | 356 | tc: TestCase = TestCase()
|
|
0 commit comments