Skip to content

Commit

Permalink
add more changes to make the telemetry client work
Browse files Browse the repository at this point in the history
Signed-off-by: Eliott Bouhana <[email protected]>
  • Loading branch information
eliottness committed Jan 31, 2025
1 parent a32a94d commit 8430168
Show file tree
Hide file tree
Showing 12 changed files with 72 additions and 67 deletions.
7 changes: 4 additions & 3 deletions contrib/internal/telemetrytest/telemetry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (

"gopkg.in/DataDog/dd-trace-go.v1/contrib/gorilla/mux"
"gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry"
"gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry/telemetrytest"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
Expand All @@ -23,13 +24,13 @@ import (
// sends the correct data to the telemetry client.
func TestIntegrationInfo(t *testing.T) {
// mux.NewRouter() uses the net/http and gorilla/mux integration
client := new(telemetrytest.MockClient)
telemetry.SwapClient(client)
mux.NewRouter()
integrations := telemetry.Integrations()
integrations := client.Integrations
require.Len(t, integrations, 2)
assert.Equal(t, integrations[0].Name, "net/http")
assert.True(t, integrations[0].Enabled)
assert.Equal(t, integrations[1].Name, "gorilla/mux")
assert.True(t, integrations[1].Enabled)
}

type contribPkg struct {
Expand Down
8 changes: 5 additions & 3 deletions ddtrace/opentelemetry/telemetry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,17 @@ func TestTelemetry(t *testing.T) {
t.Setenv(k, v)
}
telemetryClient := new(telemetrytest.MockClient)
defer telemetry.MockGlobalClient(telemetryClient)()
original := telemetry.GlobalClient()
telemetry.SwapClient(telemetryClient)
defer telemetry.SwapClient(original)

p := NewTracerProvider()
p.Tracer("")
defer p.Shutdown()

assert.True(t, telemetryClient.Started)
telemetry.Check(t, telemetryClient.Configuration, "trace_propagation_style_inject", test.expectedInject)
telemetry.Check(t, telemetryClient.Configuration, "trace_propagation_style_extract", test.expectedExtract)
assert.Contains(t, telemetryClient.Configuration, telemetry.Configuration{Name: "trace_propagation_style_inject", Value: test.expectedInject})
assert.Contains(t, telemetryClient.Configuration, telemetry.Configuration{Name: "trace_propagation_style_extract", Value: test.expectedExtract})
})
}

Expand Down
2 changes: 1 addition & 1 deletion ddtrace/opentelemetry/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ func (t *oteltracer) Start(ctx context.Context, spanName string, opts ...oteltra
if k := ssConfig.SpanKind(); k != 0 {
ddopts = append(ddopts, tracer.Tag(ext.SpanKind, k.String()))
}
telemetry.GlobalClient.Count(telemetry.NamespaceTracers, "spans_created", 1.0, telemetryTags, true)
telemetry.Count(telemetry.NamespaceTracers, "spans_created", telemetryTags).Submit(1.0)
var cfg ddtrace.StartSpanConfig
cfg.Tags = make(map[string]interface{})
for _, attr := range ssConfig.Attributes() {
Expand Down
6 changes: 4 additions & 2 deletions ddtrace/opentelemetry/tracer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,12 +196,14 @@ func TestShutdownOnce(t *testing.T) {

func TestSpanTelemetry(t *testing.T) {
telemetryClient := new(telemetrytest.MockClient)
defer telemetry.MockGlobalClient(telemetryClient)()
original := telemetry.GlobalClient()
telemetry.SwapClient(telemetryClient)
defer telemetry.SwapClient(original)
tp := NewTracerProvider()
otel.SetTracerProvider(tp)
tr := otel.Tracer("")
_, _ = tr.Start(context.Background(), "otel.span")
telemetryClient.AssertCalled(t, "Count", telemetry.NamespaceTracers, "spans_created", 1.0, telemetryTags, true)
telemetryClient.AssertCalled(t, "Count", telemetry.NamespaceTracers, "spans_created", telemetryTags)
telemetryClient.AssertNumberOfCalls(t, "Count", 1)
}

Expand Down
4 changes: 2 additions & 2 deletions ddtrace/opentracer/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import (
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
"gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry"

opentracing "github.com/opentracing/opentracing-go"
"github.com/opentracing/opentracing-go"
)

// New creates, instantiates and returns an Opentracing compatible version of the
Expand Down Expand Up @@ -67,7 +67,7 @@ func (t *opentracer) StartSpan(operationName string, options ...opentracing.Star
for k, v := range sso.Tags {
opts = append(opts, tracer.Tag(k, v))
}
telemetry.GlobalClient.Count(telemetry.NamespaceTracers, "spans_created", 1.0, telemetryTags, true)
telemetry.Count(telemetry.NamespaceTracers, "spans_created", telemetryTags).Submit(1.0)
return &span{
Span: t.Tracer.StartSpan(operationName, opts...),
opentracer: t,
Expand Down
4 changes: 3 additions & 1 deletion ddtrace/opentracer/tracer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,9 @@ func TestExtractError(t *testing.T) {

func TestSpanTelemetry(t *testing.T) {
telemetryClient := new(telemetrytest.MockClient)
defer telemetry.MockGlobalClient(telemetryClient)()
original := telemetry.GlobalClient()
telemetry.SwapClient(telemetryClient)
defer telemetry.SwapClient(original)
opentracing.SetGlobalTracer(New())
_ = opentracing.StartSpan("opentracing.span")
telemetryClient.AssertCalled(t, "Count", telemetry.NamespaceTracers, "spans_created", 1.0, telemetryTags, true)
Expand Down
36 changes: 17 additions & 19 deletions ddtrace/tracer/log_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@ import (
"regexp"
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace"
"gopkg.in/DataDog/dd-trace-go.v1/internal/globalconfig"
"gopkg.in/DataDog/dd-trace-go.v1/internal/log"
"gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

const logPrefixRegexp = `Datadog Tracer v[0-9]+\.[0-9]+\.[0-9]+(-(rc\.[0-9]+|dev))?`
Expand All @@ -30,7 +28,7 @@ func TestStartupLog(t *testing.T) {
defer stop()

tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)
assert.Regexp(logPrefixRegexp+` INFO: DATADOG TRACER CONFIGURATION {"date":"[^"]*","os_name":"[^"]*","os_version":"[^"]*","version":"[^"]*","lang":"Go","lang_version":"[^"]*","env":"","service":"tracer\.test(\.exe)?","agent_url":"http://localhost:9/v0.4/traces","agent_error":"Post .*","debug":false,"analytics_enabled":false,"sample_rate":"NaN","sample_rate_limit":"disabled","trace_sampling_rules":null,"span_sampling_rules":null,"sampling_rules_error":"","service_mappings":null,"tags":{"runtime-id":"[^"]*"},"runtime_metrics_enabled":false,"runtime_metrics_v2_enabled":false,"profiler_code_hotspots_enabled":((false)|(true)),"profiler_endpoints_enabled":((false)|(true)),"dd_version":"","architecture":"[^"]*","global_service":"","lambda_mode":"false","appsec":((true)|(false)),"agent_features":{"DropP0s":((true)|(false)),"Stats":((true)|(false)),"StatsdPort":(0|8125)},"integrations":{.*},"partial_flush_enabled":false,"partial_flush_min_spans":1000,"orchestrion":{"enabled":false},"feature_flags":\[\],"propagation_style_inject":"datadog,tracecontext","propagation_style_extract":"datadog,tracecontext","tracing_as_transport":false,"dogstatsd_address":"localhost:8125"}`, tp.Logs()[1])
Expand Down Expand Up @@ -62,7 +60,7 @@ func TestStartupLog(t *testing.T) {
defer stop()

tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)
assert.Regexp(logPrefixRegexp+` INFO: DATADOG TRACER CONFIGURATION {"date":"[^"]*","os_name":"[^"]*","os_version":"[^"]*","version":"[^"]*","lang":"Go","lang_version":"[^"]*","env":"configuredEnv","service":"configured.service","agent_url":"http://localhost:9/v0.4/traces","agent_error":"Post .*","debug":true,"analytics_enabled":true,"sample_rate":"0\.123000","sample_rate_limit":"100","trace_sampling_rules":\[{"service":"mysql","sample_rate":0\.75}\],"span_sampling_rules":null,"sampling_rules_error":"","service_mappings":{"initial_service":"new_service"},"tags":{"runtime-id":"[^"]*","tag":"value","tag2":"NaN"},"runtime_metrics_enabled":true,"runtime_metrics_v2_enabled":false,"profiler_code_hotspots_enabled":((false)|(true)),"profiler_endpoints_enabled":((false)|(true)),"dd_version":"2.3.4","architecture":"[^"]*","global_service":"configured.service","lambda_mode":"false","appsec":((true)|(false)),"agent_features":{"DropP0s":false,"Stats":false,"StatsdPort":(0|8125)},"integrations":{.*},"partial_flush_enabled":false,"partial_flush_min_spans":1000,"orchestrion":{"enabled":true,"metadata":{"version":"v1"}},"feature_flags":\["discovery"\],"propagation_style_inject":"datadog,tracecontext","propagation_style_extract":"datadog,tracecontext","tracing_as_transport":false,"dogstatsd_address":"localhost:8125"}`, tp.Logs()[1])
Expand Down Expand Up @@ -92,7 +90,7 @@ func TestStartupLog(t *testing.T) {
defer stop()

tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)
assert.Regexp(logPrefixRegexp+` INFO: DATADOG TRACER CONFIGURATION {"date":"[^"]*","os_name":"[^"]*","os_version":"[^"]*","version":"[^"]*","lang":"Go","lang_version":"[^"]*","env":"configuredEnv","service":"configured.service","agent_url":"http://localhost:9/v0.4/traces","agent_error":"Post .*","debug":true,"analytics_enabled":true,"sample_rate":"0\.123000","sample_rate_limit":"1000.001","trace_sampling_rules":\[{"service":"mysql","sample_rate":0\.75}\],"span_sampling_rules":null,"sampling_rules_error":"","service_mappings":{"initial_service":"new_service"},"tags":{"runtime-id":"[^"]*","tag":"value","tag2":"NaN"},"runtime_metrics_enabled":true,"runtime_metrics_v2_enabled":false,"profiler_code_hotspots_enabled":((false)|(true)),"profiler_endpoints_enabled":((false)|(true)),"dd_version":"2.3.4","architecture":"[^"]*","global_service":"configured.service","lambda_mode":"false","appsec":((true)|(false)),"agent_features":{"DropP0s":false,"Stats":false,"StatsdPort":(0|8125)},"integrations":{.*},"partial_flush_enabled":false,"partial_flush_min_spans":1000,"orchestrion":{"enabled":false},"feature_flags":\[\],"propagation_style_inject":"datadog,tracecontext","propagation_style_extract":"datadog,tracecontext","tracing_as_transport":false,"dogstatsd_address":"localhost:8125"}`, tp.Logs()[1])
Expand All @@ -106,7 +104,7 @@ func TestStartupLog(t *testing.T) {
defer stop()

tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)
fmt.Println(tp.Logs()[1])
Expand All @@ -120,7 +118,7 @@ func TestStartupLog(t *testing.T) {
defer stop()

tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
assert.Len(tp.Logs(), 1)
assert.Regexp(logPrefixRegexp+` INFO: DATADOG TRACER CONFIGURATION {"date":"[^"]*","os_name":"[^"]*","os_version":"[^"]*","version":"[^"]*","lang":"Go","lang_version":"[^"]*","env":"","service":"tracer\.test(\.exe)?","agent_url":"http://localhost:9/v0.4/traces","agent_error":"","debug":false,"analytics_enabled":false,"sample_rate":"NaN","sample_rate_limit":"disabled","trace_sampling_rules":null,"span_sampling_rules":null,"sampling_rules_error":"","service_mappings":null,"tags":{"runtime-id":"[^"]*"},"runtime_metrics_enabled":false,"runtime_metrics_v2_enabled":false,"profiler_code_hotspots_enabled":((false)|(true)),"profiler_endpoints_enabled":((false)|(true)),"dd_version":"","architecture":"[^"]*","global_service":"","lambda_mode":"true","appsec":((true)|(false)),"agent_features":{"DropP0s":false,"Stats":false,"StatsdPort":(0|8125)},"integrations":{.*},"partial_flush_enabled":false,"partial_flush_min_spans":1000,"orchestrion":{"enabled":false},"feature_flags":\[\],"propagation_style_inject":"datadog,tracecontext","propagation_style_extract":"datadog,tracecontext","tracing_as_transport":false,"dogstatsd_address":"localhost:8125"}`, tp.Logs()[0])
Expand All @@ -132,7 +130,7 @@ func TestStartupLog(t *testing.T) {
tracer, _, _, stop := startTestTracer(t, WithLogger(tp))
defer stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)

Expand All @@ -146,7 +144,7 @@ func TestStartupLog(t *testing.T) {
func TestLogSamplingRules(t *testing.T) {
assert := assert.New(t)
tp := new(log.RecordLogger)
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
t.Setenv("DD_TRACE_SAMPLING_RULES", `[{"service": "some.service", "sample_rate": 0.234}, {"service": "other.service"}, {"service": "last.service", "sample_rate": 0.56}, {"odd": "pairs"}, {"sample_rate": 9.10}]`)
_, _, _, stop := startTestTracer(t, WithLogger(tp), WithEnv("test"))
defer stop()
Expand All @@ -158,7 +156,7 @@ func TestLogSamplingRules(t *testing.T) {
func TestLogDefaultSampleRate(t *testing.T) {
assert := assert.New(t)
tp := new(log.RecordLogger)
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
log.UseLogger(tp)
t.Setenv("DD_TRACE_SAMPLE_RATE", ``)
_, _, _, stop := startTestTracer(t, WithLogger(tp), WithEnv("test"))
Expand All @@ -173,7 +171,7 @@ func TestLogAgentReachable(t *testing.T) {
tracer, _, _, stop := startTestTracer(t, WithLogger(tp))
defer stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)
assert.Regexp(logPrefixRegexp+` WARN: DIAGNOSTICS Unable to reach agent intake: Post`, tp.Logs()[0])
Expand All @@ -186,7 +184,7 @@ func TestLogFormat(t *testing.T) {
tracer, _, _, stop := startTestTracer(t, WithLogger(tp), WithRuntimeMetrics(), WithDebugMode(true))
defer stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
tracer.StartSpan("test", ServiceName("test-service"), ResourceName("/"), WithSpanID(12345))
assert.Len(tp.Logs(), 1)
assert.Regexp(logPrefixRegexp+` DEBUG: Started Span: dd.trace_id="12345" dd.span_id="12345" dd.parent_id="0", Operation: test, Resource: /, Tags: map.*, map.*`, tp.Logs()[0])
Expand Down Expand Up @@ -257,7 +255,7 @@ func setup(t *testing.T, customProp Propagator) string {
}
defer stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
require.Len(t, tp.Logs(), 2)
return tp.Logs()[1]
Expand All @@ -278,7 +276,7 @@ func TestAgentURL(t *testing.T) {
tracer := newTracer(WithLogger(tp), WithUDS("var/run/datadog/apm.socket"))
defer tracer.Stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
logEntry, found := findLogEntry(tp.Logs(), `"agent_url":"unix://var/run/datadog/apm.socket"`)
if !found {
Expand All @@ -294,7 +292,7 @@ func TestAgentURLFromEnv(t *testing.T) {
tracer := newTracer(WithLogger(tp))
defer tracer.Stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
logEntry, found := findLogEntry(tp.Logs(), `"agent_url":"unix://var/run/datadog/apm.socket"`)
if !found {
Expand All @@ -311,7 +309,7 @@ func TestInvalidAgentURL(t *testing.T) {
tracer := newTracer(WithLogger(tp))
defer tracer.Stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
logEntry, found := findLogEntry(tp.Logs(), `"agent_url":"http://localhost:8126/v0.4/traces"`)
if !found {
Expand All @@ -328,7 +326,7 @@ func TestAgentURLConflict(t *testing.T) {
tracer := newTracer(WithLogger(tp), WithUDS("var/run/datadog/apm.socket"), WithAgentAddr("localhost:8126"))
defer tracer.Stop()
tp.Reset()
tp.Ignore("appsec: ", telemetry.LogPrefix)
tp.Ignore("appsec: ", "telemetry")
logStartup(tracer)
logEntry, found := findLogEntry(tp.Logs(), `"agent_url":"http://localhost:8126/v0.4/traces"`)
if !found {
Expand Down
8 changes: 6 additions & 2 deletions ddtrace/tracer/otel_dd_mappings_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ func TestAssessSource(t *testing.T) {
})
t.Run("both", func(t *testing.T) {
telemetryClient := new(telemetrytest.MockClient)
defer telemetry.MockGlobalClient(telemetryClient)()
original := telemetry.GlobalClient()
telemetry.SwapClient(telemetryClient)
defer telemetry.SwapClient(original)
// DD_SERVICE prevails
t.Setenv("DD_SERVICE", "abc")
t.Setenv("OTEL_SERVICE_NAME", "123")
Expand All @@ -40,7 +42,9 @@ func TestAssessSource(t *testing.T) {
})
t.Run("invalid-ot", func(t *testing.T) {
telemetryClient := new(telemetrytest.MockClient)
defer telemetry.MockGlobalClient(telemetryClient)()
original := telemetry.GlobalClient()
telemetry.SwapClient(telemetryClient)
defer telemetry.SwapClient(original)
t.Setenv("OTEL_LOG_LEVEL", "nonesense")
v := getDDorOtelConfig("debugMode")
assert.Equal(t, "", v)
Expand Down
Loading

0 comments on commit 8430168

Please sign in to comment.