diff --git a/manifests/cpp.yml b/manifests/cpp.yml index 9cf8749293..4a34c83314 100644 --- a/manifests/cpp.yml +++ b/manifests/cpp.yml @@ -228,6 +228,7 @@ tests/: test_stats.py: Test_Client_Stats: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v0.2.2 Test_Config_ClientIPHeader_Configured: missing_feature (DD_TRACE_CLIENT_IP_HEADER not implemented) Test_Config_ClientIPHeader_Precedence: missing_feature (http.client_ip is not supported) Test_Config_ClientTagQueryString_Configured: missing_feature diff --git a/manifests/dotnet.yml b/manifests/dotnet.yml index 4498980efd..79bf84ee0c 100644 --- a/manifests/dotnet.yml +++ b/manifests/dotnet.yml @@ -466,6 +466,7 @@ tests/: test_miscs.py: Test_Miscs: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v3.6.1 Test_Config_ClientIPHeader_Configured: v3.4.1 Test_Config_ClientIPHeader_Precedence: v3.4.1 Test_Config_ClientTagQueryString_Configured: missing_feature (configuration DNE) diff --git a/manifests/golang.yml b/manifests/golang.yml index 48344b18a5..f8d6b5db02 100644 --- a/manifests/golang.yml +++ b/manifests/golang.yml @@ -564,6 +564,7 @@ tests/: Test_MultipartUpload: missing_feature Test_PutObject: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v1.70.1 Test_Config_ClientIPHeader_Configured: v1.60.0 Test_Config_ClientIPHeader_Precedence: v1.69.0 Test_Config_ClientTagQueryString_Configured: missing_feature (supports DD_TRACE_HTTP_URL_QUERY_STRING_DISABLED) diff --git a/manifests/java.yml b/manifests/java.yml index 8cd4dd6c45..b50c806e8a 100644 --- a/manifests/java.yml +++ b/manifests/java.yml @@ -1529,6 +1529,7 @@ tests/: Test_Mock: v0.0.99 Test_NotReleased: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v1.43.0 Test_Config_ClientIPHeader_Configured: missing_feature Test_Config_ClientIPHeader_Precedence: missing_feature (does not support x-forwarded header) Test_Config_ClientTagQueryString_Configured: diff --git a/manifests/nodejs.yml b/manifests/nodejs.yml index 9521f19ae0..d1abef4828 100644 --- a/manifests/nodejs.yml +++ b/manifests/nodejs.yml @@ -786,6 +786,7 @@ tests/: test_stats.py: Test_Client_Stats: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: *ref_5_27_0 Test_Config_ClientIPHeader_Configured: *ref_3_13_0 Test_Config_ClientIPHeader_Precedence: *ref_3_19_0 Test_Config_ClientTagQueryString_Configured: missing_feature (adding query string to http.url is not supported) diff --git a/manifests/php.yml b/manifests/php.yml index 84caa3fa6a..726d4bbc15 100644 --- a/manifests/php.yml +++ b/manifests/php.yml @@ -388,6 +388,7 @@ tests/: test_stats.py: Test_Client_Stats: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v1.5.1 Test_Config_ClientIPHeader_Configured: v1.4.0 Test_Config_ClientIPHeader_Precedence: v1.4.0 Test_Config_ClientTagQueryString_Configured: missing_feature (supports dd_trace_http_url_query_param_allowed instead) diff --git a/manifests/python.yml b/manifests/python.yml index 63204e94fc..3e3094f5d9 100644 --- a/manifests/python.yml +++ b/manifests/python.yml @@ -860,6 +860,7 @@ tests/: test_miscs.py: Test_Miscs: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v2.17.3 Test_Config_ClientIPHeader_Configured: v2.12.0 Test_Config_ClientIPHeader_Precedence: v2.12.0 Test_Config_ClientTagQueryString_Configured: v2.15.0 diff --git a/manifests/ruby.yml b/manifests/ruby.yml index 188c5a9a92..769d8368db 100644 --- a/manifests/ruby.yml +++ b/manifests/ruby.yml @@ -453,6 +453,7 @@ tests/: test_stats.py: Test_Client_Stats: missing_feature test_config_consistency.py: + Test_Config_ClientIPHeaderEnabled_False: v2.8.0 Test_Config_ClientIPHeader_Configured: v2.3.0 Test_Config_ClientIPHeader_Precedence: v2.3.0 Test_Config_ClientTagQueryString_Configured: missing_feature (does not support redacting query string via envar) diff --git a/tests/test_config_consistency.py b/tests/test_config_consistency.py index 85cc31d758..3a968fd232 100644 --- a/tests/test_config_consistency.py +++ b/tests/test_config_consistency.py @@ -231,6 +231,23 @@ def test_ip_headers_sent_in_one_request(self): assert _get_span_by_tags(trace, expected_tags), f"Span with tags {expected_tags} not found in {trace}" +@scenarios.tracing_config_nondefault_3 +@features.tracing_configuration_consistency +class Test_Config_ClientIPHeaderEnabled_False: + """Verify headers containing ips are not tagged when by default, even with DD_TRACE_CLIENT_IP_HEADER=custom-ip-header""" + + def setup_ip_headers_sent_in_one_request(self): + self.req = weblog.get( + "/make_distant_call", params={"url": "http://weblog:7777"}, headers={"custom-ip-header": "5.6.7.9"} + ) + + def test_ip_headers_sent_in_one_request(self): + spans = [span for _, _, span in interfaces.library.get_spans(self.req, full_trace=True)] + logger.info(spans) + expected_tags = {"http.client_ip": "5.6.7.9"} + assert _get_span_by_tags(spans, expected_tags) == {} + + @scenarios.tracing_config_nondefault @features.tracing_configuration_consistency class Test_Config_ClientIPHeader_Precedence: @@ -292,6 +309,7 @@ def _get_span_by_tags(spans, tags): if k not in meta: logger.debug(f"Span {span['span_id']} does not have tag {k}") + break elif meta[k] != v: logger.debug(f"Span {span['span_id']} has tag {k}={meta[k]} instead of {v}") break diff --git a/utils/_context/_scenarios/__init__.py b/utils/_context/_scenarios/__init__.py index 05c841cee7..9c66f58b2b 100644 --- a/utils/_context/_scenarios/__init__.py +++ b/utils/_context/_scenarios/__init__.py @@ -531,7 +531,11 @@ def all_endtoend_scenarios(test_object): ) tracing_config_nondefault_3 = EndToEndScenario( "TRACING_CONFIG_NONDEFAULT_3", - weblog_env={"DD_TRACE_HTTP_CLIENT_TAG_QUERY_STRING": "false"}, + weblog_env={ + "DD_TRACE_HTTP_CLIENT_TAG_QUERY_STRING": "false", + "DD_TRACE_CLIENT_IP_HEADER": "custom-ip-header", + }, + appsec_enabled=False, doc="", scenario_groups=[ScenarioGroup.TRACING_CONFIG], )