diff --git a/tests/integrations/celery/test_celery.py b/tests/integrations/celery/test_celery.py index 17d308d0a1..e115f381d9 100644 --- a/tests/integrations/celery/test_celery.py +++ b/tests/integrations/celery/test_celery.py @@ -620,7 +620,7 @@ def example_task(): @pytest.mark.parametrize("routing_key", ("celery", "custom")) @mock.patch("celery.app.task.Task.request") -def test_messaging_destination_name( +def test_messaging_destination_name_default_exchange( mock_request, routing_key, init_celery, capture_events ): celery_app = init_celery(enable_tracing=True) @@ -635,3 +635,27 @@ def task(): ... (event,) = events (span,) = event["spans"] assert span["data"]["messaging.destination.name"] == routing_key + + +@mock.patch("celery.app.task.Task.request") +def test_messaging_destination_name_nondefault_exchange( + mock_request, init_celery, capture_events +): + """ + Currently, we only capture the routing key as the messaging.destination.name when + we are using the default exchange (""). This is because the default exchange ensures + that the routing key is the queue name. Other exchanges may not guarantee this + behavior. + """ + celery_app = init_celery(enable_tracing=True) + events = capture_events() + mock_request.delivery_info = {"routing_key": "celery", "exchange": "custom"} + + @celery_app.task() + def task(): ... + + task.apply_async() + + (event,) = events + (span,) = event["spans"] + assert "messaging.destination.name" not in span["data"]