From 96bf15acf3f2864ab9de47c040e1d974ece6b99e Mon Sep 17 00:00:00 2001 From: Eliott Bouhana Date: Mon, 10 Feb 2025 18:38:36 +0100 Subject: [PATCH] fix rebasing issue Signed-off-by: Eliott Bouhana --- ddtrace/tracer/telemetry_test.go | 105 +++++++++++-------------------- 1 file changed, 38 insertions(+), 67 deletions(-) diff --git a/ddtrace/tracer/telemetry_test.go b/ddtrace/tracer/telemetry_test.go index a021185fbc6..fc83df9e4b4 100644 --- a/ddtrace/tracer/telemetry_test.go +++ b/ddtrace/tracer/telemetry_test.go @@ -7,7 +7,6 @@ package tracer import ( "fmt" - "reflect" "testing" "gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig" @@ -18,28 +17,10 @@ import ( "github.com/stretchr/testify/assert" ) -func mockGlobalClient(client telemetry.Client) func() { - orig := telemetry.GlobalClient() - telemetry.SwapClient(client) - return func() { - telemetry.SwapClient(orig) - } -} - -func checkConfig(t *testing.T, cfgs []telemetry.Configuration, key string, value any) { - for _, c := range cfgs { - if c.Name == key && reflect.DeepEqual(c.Value, value) { - return - } - } - - t.Fatalf("could not find configuration key %s with value %v", key, value) -} - func TestTelemetryEnabled(t *testing.T) { t.Run("tracer start", func(t *testing.T) { - telemetryClient := new(telemetrytest.MockClient) - defer mockGlobalClient(telemetryClient)() + telemetryClient := new(telemetrytest.RecordClient) + defer telemetry.MockClient(telemetryClient)() Start( WithDebugMode(true), @@ -60,25 +41,24 @@ func TestTelemetryEnabled(t *testing.T) { defer globalconfig.SetServiceName("") defer Stop() - assert.True(t, telemetryClient.Started) - telemetryClient.AssertNumberOfCalls(t, "ApplyOps", 1) - checkConfig(t, telemetryClient.Configuration, "trace_debug_enabled", true) - checkConfig(t, telemetryClient.Configuration, "service", "test-serv") - checkConfig(t, telemetryClient.Configuration, "env", "test-env") - checkConfig(t, telemetryClient.Configuration, "runtime_metrics_enabled", true) - checkConfig(t, telemetryClient.Configuration, "stats_computation_enabled", false) - checkConfig(t, telemetryClient.Configuration, "trace_enabled", true) - checkConfig(t, telemetryClient.Configuration, "trace_span_attribute_schema", 0) - checkConfig(t, telemetryClient.Configuration, "trace_peer_service_defaults_enabled", true) - checkConfig(t, telemetryClient.Configuration, "trace_peer_service_mapping", "key:val") - checkConfig(t, telemetryClient.Configuration, "debug_stack_enabled", false) - checkConfig(t, telemetryClient.Configuration, "orchestrion_enabled", false) - checkConfig(t, telemetryClient.Configuration, "trace_sample_rate", nil) // default value is NaN which is sanitized to nil - checkConfig(t, telemetryClient.Configuration, "trace_header_tags", "key:val,key2:val2") - checkConfig(t, telemetryClient.Configuration, "trace_sample_rules", + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_debug_enabled", true) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "service", "test-serv") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "env", "test-env") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "runtime_metrics_enabled", true) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "stats_computation_enabled", false) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_enabled", true) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_span_attribute_schema", 0) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_peer_service_defaults_enabled", true) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_peer_service_mapping", "key:val") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "debug_stack_enabled", false) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "orchestrion_enabled", false) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_sample_rate", nil) // default value is NaN which is sanitized to nil + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_header_tags", "key:val,key2:val2") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_sample_rules", `[{"service":"test-serv","name":"op-name","resource":"resource-*","sample_rate":0.1,"tags":{"tag-a":"tv-a??"}}]`) - checkConfig(t, telemetryClient.Configuration, "span_sample_rules", "[]") - assert.NotZero(t, telemetryClient.Distribution(telemetry.NamespaceTracers, "init_time", nil).Get()) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "span_sample_rules", "[]") + + assert.NotZero(t, telemetryClient.Distribution(telemetry.NamespaceGeneral, "init_time", nil).Get()) }) t.Run("telemetry customer or dynamic rules", func(t *testing.T) { @@ -90,16 +70,15 @@ func TestTelemetryEnabled(t *testing.T) { } rule.Provenance = prov - telemetryClient := new(telemetrytest.MockClient) - defer mockGlobalClient(telemetryClient)() + telemetryClient := new(telemetrytest.RecordClient) + defer telemetry.MockClient(telemetryClient)() Start(WithService("test-serv"), WithSamplingRules([]SamplingRule{rule}), ) defer globalconfig.SetServiceName("") defer Stop() - assert.True(t, telemetryClient.Started) - checkConfig(t, telemetryClient.Configuration, "trace_sample_rules", + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_sample_rules", fmt.Sprintf(`[{"service":"test-serv","name":"op-name","resource":"resource-*","sample_rate":0.1,"tags":{"tag-a":"tv-a??"},"provenance":"%s"}]`, prov.String())) } }) @@ -115,24 +94,23 @@ func TestTelemetryEnabled(t *testing.T) { rules[i].Provenance = Local } - telemetryClient := new(telemetrytest.MockClient) - defer mockGlobalClient(telemetryClient)() + telemetryClient := new(telemetrytest.RecordClient) + defer telemetry.MockClient(telemetryClient)() Start(WithService("test-serv"), WithSamplingRules(rules), ) defer globalconfig.SetServiceName("") defer Stop() - assert.True(t, telemetryClient.Started) - checkConfig(t, telemetryClient.Configuration, "trace_sample_rules", + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_sample_rules", `[{"service":"test-serv","name":"op-name","resource":"resource-*","sample_rate":0.1,"tags":{"tag-a":"tv-a??"}}]`) - checkConfig(t, telemetryClient.Configuration, "span_sample_rules", + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "span_sample_rules", `[{"service":"test-serv","name":"op-name","sample_rate":0.1}]`) }) t.Run("tracer start with empty rules", func(t *testing.T) { - telemetryClient := new(telemetrytest.MockClient) - defer mockGlobalClient(telemetryClient)() + telemetryClient := new(telemetrytest.RecordClient) + defer telemetry.MockClient(telemetryClient)() t.Setenv("DD_TRACE_SAMPLING_RULES", "") t.Setenv("DD_SPAN_SAMPLING_RULES", "") @@ -140,19 +118,13 @@ func TestTelemetryEnabled(t *testing.T) { defer globalconfig.SetServiceName("") defer Stop() - assert.True(t, telemetryClient.Started) - var cfgs []telemetry.Configuration - for _, c := range telemetryClient.Configuration { - c.Value = telemetry.SanitizeConfigValue(c.Value) - cfgs = append(cfgs) - } - checkConfig(t, cfgs, "trace_sample_rules", "[]") - checkConfig(t, cfgs, "span_sample_rules", "[]") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "trace_sample_rules", "[]") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "span_sample_rules", "[]") }) t.Run("profiler start, tracer start", func(t *testing.T) { - telemetryClient := new(telemetrytest.MockClient) - defer mockGlobalClient(telemetryClient)() + telemetryClient := new(telemetrytest.RecordClient) + defer telemetry.MockClient(telemetryClient)() profiler.Start() defer profiler.Stop() Start( @@ -160,18 +132,17 @@ func TestTelemetryEnabled(t *testing.T) { ) defer globalconfig.SetServiceName("") defer Stop() - checkConfig(t, telemetryClient.Configuration, "service", "test-serv") - telemetryClient.AssertNumberOfCalls(t, "ApplyOps", 2) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "service", "test-serv") }) t.Run("orchestrion telemetry", func(t *testing.T) { - telemetryClient := new(telemetrytest.MockClient) - defer mockGlobalClient(telemetryClient)() + telemetryClient := new(telemetrytest.RecordClient) + defer telemetry.MockClient(telemetryClient)() Start(WithOrchestrion(map[string]string{"k1": "v1", "k2": "v2"})) defer Stop() - checkConfig(t, telemetryClient.Configuration, "orchestrion_enabled", true) - checkConfig(t, telemetryClient.Configuration, "orchestrion_k1", "v1") - checkConfig(t, telemetryClient.Configuration, "orchestrion_k2", "v2") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "orchestrion_enabled", true) + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "orchestrion_k1", "v1") + telemetrytest.CheckConfig(t, telemetryClient.Configuration, "orchestrion_k2", "v2") }) }