diff --git a/manifests/cpp.yml b/manifests/cpp.yml index f9bc4141c20..e827a93fd15 100644 --- a/manifests/cpp.yml +++ b/manifests/cpp.yml @@ -296,6 +296,7 @@ manifest: tests/parametric/test_tracer_flare.py::TestTracerFlareV1::test_tracer_flare_content_with_debug: missing_feature # Created by easy win activation script tests/parametric/test_tracer_flare.py::TestTracerFlareV1::test_tracer_flare_with_debug: missing_feature # Created by easy win activation script tests/parametric/test_tracer_flare.py::TestTracerFlareV1::test_tracer_profiling_notracing_flare_content: missing_feature # Created by easy win activation script + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_library_conf.py::Test_ExtractBehavior_Default::test_multiple_tracecontexts: missing_feature (baggage is not implemented, also remove DD_TRACE_PROPAGATION_STYLE_EXTRACT workaround in containers.py) tests/test_library_conf.py::Test_ExtractBehavior_Default::test_single_tracecontext: missing_feature (baggage is not implemented, also remove DD_TRACE_PROPAGATION_STYLE_EXTRACT workaround in containers.py) tests/test_library_conf.py::Test_ExtractBehavior_Ignore::test_multiple_tracecontexts: missing_feature (baggage is not implemented, also remove DD_TRACE_PROPAGATION_STYLE_EXTRACT workaround in containers.py) diff --git a/manifests/cpp_httpd.yml b/manifests/cpp_httpd.yml index be17c147f83..d937af3771c 100644 --- a/manifests/cpp_httpd.yml +++ b/manifests/cpp_httpd.yml @@ -101,6 +101,7 @@ manifest: tests/stats/test_stats.py::Test_Client_Stats::test_is_trace_root: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Client_Stats::test_obfuscation: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Peer_Tags: missing_feature # Created by easy win activation script + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats_bucket_alignment: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Transport_Headers: missing_feature # Created by easy win activation script diff --git a/manifests/cpp_nginx.yml b/manifests/cpp_nginx.yml index c952ec7d6de..6d4582c0980 100644 --- a/manifests/cpp_nginx.yml +++ b/manifests/cpp_nginx.yml @@ -323,6 +323,7 @@ manifest: tests/stats/test_stats.py::Test_Client_Stats::test_is_trace_root: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Client_Stats::test_obfuscation: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Peer_Tags: missing_feature # Created by easy win activation script + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats_bucket_alignment: missing_feature # Created by easy win activation script tests/stats/test_stats.py::Test_Transport_Headers: missing_feature # Created by easy win activation script diff --git a/manifests/dotnet.yml b/manifests/dotnet.yml index 8d479cb0296..7f2018a4687 100644 --- a/manifests/dotnet.yml +++ b/manifests/dotnet.yml @@ -1039,6 +1039,7 @@ manifest: - weblog_declaration: uds: missing_feature poc: missing_feature + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats: # Created by easy win activation script - weblog_declaration: uds: missing_feature diff --git a/manifests/golang.yml b/manifests/golang.yml index d6835876b51..017ecd0653d 100644 --- a/manifests/golang.yml +++ b/manifests/golang.yml @@ -1217,6 +1217,7 @@ manifest: tests/stats/test_stats.py: v1.54.0 tests/stats/test_stats.py::Test_Client_Drop_P0s::test_client_drop_p0s_false: v2.6.0 tests/stats/test_stats.py::Test_Client_Stats::test_grpc_status_code: irrelevant (variant has no gRPC endpoint) + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_baggage.py::Test_Baggage_Headers_Api_Datadog: incomplete_test_app (/otel_drop_in_baggage_api_datadog endpoint is not implemented) tests/test_baggage.py::Test_Baggage_Headers_Api_OTel: incomplete_test_app (/otel_drop_in_baggage_api_otel endpoint is not implemented) tests/test_baggage.py::Test_Baggage_Headers_Basic: incomplete_test_app (/make_distant_call endpoint is not correctly implemented) diff --git a/manifests/java.yml b/manifests/java.yml index 33321a6fdba..fda3fb1e7bf 100644 --- a/manifests/java.yml +++ b/manifests/java.yml @@ -3797,6 +3797,10 @@ manifest: - weblog_declaration: "*": v1.54.0 spring-boot-3-native: missing_feature (rasp endpoint not implemented) + tests/stats/test_stats.py::Test_Stats_Service_Source: + - weblog_declaration: + "*": v0.0.0 + spring-boot-3-native: irrelevant (/rasp/sqli endpoint is not available) tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats_bucket_alignment: missing_feature tests/test_baggage.py::Test_Baggage_Headers_Api_Datadog: irrelevant (no Datadog API for W3C Baggage) tests/test_baggage.py::Test_Baggage_Headers_Api_OTel: diff --git a/manifests/java_otel.yml b/manifests/java_otel.yml index 0370b938ab9..473c59f47a0 100644 --- a/manifests/java_otel.yml +++ b/manifests/java_otel.yml @@ -57,6 +57,7 @@ manifest: tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_manual_service_name_sets_srv_src: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_no_srv_src_when_service_not_manually_set: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerUniversalServiceTagging::test_tracer_service_name_environment_variable: "missing_feature (FIXME: library test client sets empty string as the service name)" + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_library_conf.py::Test_HeaderTags_DynamicConfig::test_tracing_client_http_header_tags_apm_multiconfig: missing_feature (APM_TRACING_MULTICONFIG is not supported in any language yet) tests/test_library_logs.py::Test_NoExceptions::test_dotnet: irrelevant (only for .NET) tests/test_library_logs.py::Test_NoExceptions::test_java_logs: irrelevant (only for Java) diff --git a/manifests/nodejs.yml b/manifests/nodejs.yml index b6143c8b6ac..2346c56a997 100644 --- a/manifests/nodejs.yml +++ b/manifests/nodejs.yml @@ -2141,6 +2141,7 @@ manifest: tests/serverless/span_pointers/aws/test_s3_span_pointers.py::Test_MultipartUpload: missing_feature tests/serverless/span_pointers/aws/test_s3_span_pointers.py::Test_PutObject: missing_feature tests/stats/test_stats.py: missing_feature + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_baggage.py::Test_Baggage_Headers_Api_Datadog: - weblog_declaration: "*": incomplete_test_app (endpoint not implemented) diff --git a/manifests/nodejs_otel.yml b/manifests/nodejs_otel.yml index 82a28698168..1c244f76a3f 100644 --- a/manifests/nodejs_otel.yml +++ b/manifests/nodejs_otel.yml @@ -74,6 +74,7 @@ manifest: tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_manual_service_name_sets_srv_src: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_no_srv_src_when_service_not_manually_set: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerUniversalServiceTagging::test_tracer_service_name_environment_variable: "missing_feature (FIXME: library test client sets empty string as the service name)" + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_library_conf.py::Test_HeaderTags_DynamicConfig::test_tracing_client_http_header_tags_apm_multiconfig: missing_feature (APM_TRACING_MULTICONFIG is not supported in any language yet) tests/test_library_logs.py::Test_NoExceptions::test_dotnet: irrelevant (only for .NET) tests/test_library_logs.py::Test_NoExceptions::test_java_logs: irrelevant (only for Java) diff --git a/manifests/php.yml b/manifests/php.yml index a34ffdd4594..3787a91ae0c 100644 --- a/manifests/php.yml +++ b/manifests/php.yml @@ -878,6 +878,7 @@ manifest: tests/serverless/span_pointers/aws/test_s3_span_pointers.py::Test_MultipartUpload: missing_feature tests/serverless/span_pointers/aws/test_s3_span_pointers.py::Test_PutObject: missing_feature tests/stats/test_stats.py: missing_feature + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_baggage.py::Test_Baggage_Headers_Api_Datadog: incomplete_test_app (/otel_drop_in_baggage_api_datadog endpoint is not implemented) tests/test_baggage.py::Test_Baggage_Headers_Api_OTel: incomplete_test_app (/otel_drop_in_baggage_api_otel endpoint is not implemented) tests/test_baggage.py::Test_Baggage_Headers_Basic: incomplete_test_app (/make_distant_call endpoint is not correctly implemented) diff --git a/manifests/python.yml b/manifests/python.yml index dc0d16949fb..074d5af4122 100644 --- a/manifests/python.yml +++ b/manifests/python.yml @@ -1856,6 +1856,7 @@ manifest: tests/stats/test_stats.py::Test_Client_Stats::test_is_trace_root: - weblog_declaration: "*": v2.8.0 + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats_bucket_alignment: # Modified by easy win activation script - weblog_declaration: '*': missing_feature diff --git a/manifests/python_lambda.yml b/manifests/python_lambda.yml index 977f8fefb40..f7f43cfe4fb 100644 --- a/manifests/python_lambda.yml +++ b/manifests/python_lambda.yml @@ -320,6 +320,7 @@ manifest: tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_manual_service_name_sets_srv_src: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_no_srv_src_when_service_not_manually_set: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerUniversalServiceTagging::test_tracer_service_name_environment_variable: "missing_feature (FIXME: library test client sets empty string as the service name)" + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_library_conf.py::Test_HeaderTags_DynamicConfig::test_tracing_client_http_header_tags_apm_multiconfig: missing_feature (APM_TRACING_MULTICONFIG is not supported in any language yet) tests/test_library_logs.py::Test_NoExceptions::test_dotnet: irrelevant (only for .NET) tests/test_library_logs.py::Test_NoExceptions::test_java_logs: irrelevant (only for Java) diff --git a/manifests/python_otel.yml b/manifests/python_otel.yml index 4e44eaf1889..c328e8caccb 100644 --- a/manifests/python_otel.yml +++ b/manifests/python_otel.yml @@ -67,6 +67,7 @@ manifest: tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_manual_service_name_sets_srv_src: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerServiceNameSource::test_tracer_no_srv_src_when_service_not_manually_set: irrelevant (Only implemented for Java) tests/parametric/test_tracer.py::Test_TracerUniversalServiceTagging::test_tracer_service_name_environment_variable: "missing_feature (FIXME: library test client sets empty string as the service name)" + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_library_conf.py::Test_HeaderTags_DynamicConfig::test_tracing_client_http_header_tags_apm_multiconfig: missing_feature (APM_TRACING_MULTICONFIG is not supported in any language yet) tests/test_library_logs.py::Test_NoExceptions::test_dotnet: irrelevant (only for .NET) tests/test_library_logs.py::Test_NoExceptions::test_java_logs: irrelevant (only for Java) diff --git a/manifests/ruby.yml b/manifests/ruby.yml index 3ce450c1853..fb27be105a5 100644 --- a/manifests/ruby.yml +++ b/manifests/ruby.yml @@ -1624,6 +1624,7 @@ manifest: uds-sinatra: missing_feature sinatra41: missing_feature sinatra22: missing_feature + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/stats/test_stats.py::Test_Time_Bucketing::test_client_side_stats: # Created by easy win activation script - weblog_declaration: rails80: missing_feature diff --git a/manifests/rust.yml b/manifests/rust.yml index cdb320e3558..6256e36933b 100644 --- a/manifests/rust.yml +++ b/manifests/rust.yml @@ -303,6 +303,7 @@ manifest: tests/parametric/test_tracer_flare.py::TestTracerFlareV1::test_tracer_flare_with_debug: missing_feature # Created by easy win activation script tests/parametric/test_tracer_flare.py::TestTracerFlareV1::test_tracer_profiling_notracing_flare_content: missing_feature # Created by easy win activation script tests/stats/test_stats.py: missing_feature + tests/stats/test_stats.py::Test_Stats_Service_Source: irrelevant (Only implemented for Java) tests/test_library_conf.py::Test_HeaderTags_DynamicConfig::test_tracing_client_http_header_tags_apm_multiconfig: missing_feature (APM_TRACING_MULTICONFIG is not supported in any language yet) tests/test_library_logs.py::Test_NoExceptions::test_dotnet: irrelevant (only for .NET) tests/test_library_logs.py::Test_NoExceptions::test_java_logs: irrelevant (only for Java) diff --git a/tests/schemas/utils/agent/api/v0.2/stats-request.json b/tests/schemas/utils/agent/api/v0.2/stats-request.json index c1f044ad93d..6d29c1c3f6a 100644 --- a/tests/schemas/utils/agent/api/v0.2/stats-request.json +++ b/tests/schemas/utils/agent/api/v0.2/stats-request.json @@ -49,7 +49,8 @@ "description": "Peer tags" }, "IsTraceRoot": { "type": "integer", "description": "Trace root flag" }, - "GRPCStatusCode": { "type": "string", "description": "gRPC status code" } + "GRPCStatusCode": { "type": "string", "description": "gRPC status code" }, + "srv_src": { "type": "string", "description": "Service name override source (e.g. integration name)" } } } }, diff --git a/tests/schemas/utils/library/v0.6/stats-request.json b/tests/schemas/utils/library/v0.6/stats-request.json index efe4ab3c888..97199385c8e 100644 --- a/tests/schemas/utils/library/v0.6/stats-request.json +++ b/tests/schemas/utils/library/v0.6/stats-request.json @@ -41,7 +41,8 @@ "description": "Peer tags array from span metadata (based on agent peer tags configuration)" }, "IsTraceRoot": { "type": "integer", "description": "TRUE if span parentID == 0, FALSE otherwise" }, - "GRPCStatusCode": { "type": "string", "description": "gRPC status code from span metadata" } + "GRPCStatusCode": { "type": "string", "description": "gRPC status code from span metadata" }, + "srv_src": { "type": "string", "description": "Service name override source (e.g. integration name)" } } } } diff --git a/tests/stats/test_stats.py b/tests/stats/test_stats.py index 64d1222c525..466a8fac8a0 100644 --- a/tests/stats/test_stats.py +++ b/tests/stats/test_stats.py @@ -81,7 +81,7 @@ def test_obfuscation(self): assert stats_count <= 4, ( "expect <= 4 stats" ) # Normally this is exactly 2 but in certain high load this can flake and result in additional payloads where hits are split across two payloads - assert hits == top_hits == 4, "expect exactly 4 'OK' hits and top level hits across all payloads" + assert hits == top_hits >= 4, "expect at least 4 'OK' hits and top level hits across all payloads" def test_is_trace_root(self): """Test IsTraceRoot presence in stats. @@ -119,6 +119,25 @@ def test_grpc_status_code(self): ) +@features.service_override_source +@scenarios.trace_stats_computation +class Test_Stats_Service_Source: + """Test that srv_src field is set in stat buckets when service name is overridden by an integration""" + + def setup_srv_src(self): + weblog.get("/rasp/sqli?user_id=1") + + def test_srv_src(self): + """Test that at least one stat bucket has the srv_src field set""" + srv_src_found = False + for s in interfaces.agent.get_stats(): + logger.debug(f"asserting on {s}") + if s.get("srv_src"): + srv_src_found = True + break + assert srv_src_found, "Expected at least one stat bucket to have srv_src set" + + @features.client_side_stats_supported @scenarios.trace_stats_computation class Test_Agent_Info_Endpoint: