Skip to content

Commit

Permalink
fix rebasing issue
Browse files Browse the repository at this point in the history
Signed-off-by: Eliott Bouhana <[email protected]>
  • Loading branch information
eliottness committed Feb 19, 2025
1 parent 552d10b commit bc182e5
Showing 1 changed file with 38 additions and 67 deletions.
105 changes: 38 additions & 67 deletions ddtrace/tracer/telemetry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ package tracer

import (
"fmt"
"reflect"
"testing"

"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
Expand All @@ -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),
Expand All @@ -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) {
Expand All @@ -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()))
}
})
Expand All @@ -115,63 +94,55 @@ 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", "")
Start()
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(
WithService("test-serv"),
)
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")
})
}

0 comments on commit bc182e5

Please sign in to comment.