diff --git a/ddtrace/tracer/log.go b/ddtrace/tracer/log.go index 995518684d..fdd989d9ea 100644 --- a/ddtrace/tracer/log.go +++ b/ddtrace/tracer/log.go @@ -132,7 +132,7 @@ func logStartup(t *tracer) { Lang: "Go", LangVersion: runtime.Version(), Env: t.config.internalConfig.Env(), - Service: t.config.serviceName, + Service: t.config.internalConfig.ServiceName(), AgentURL: agentURL, Debug: t.config.internalConfig.Debug(), AnalyticsEnabled: !math.IsNaN(globalconfig.AnalyticsRate()), diff --git a/ddtrace/tracer/option.go b/ddtrace/tracer/option.go index 5bc0b5c95a..198e6f658d 100644 --- a/ddtrace/tracer/option.go +++ b/ddtrace/tracer/option.go @@ -163,9 +163,6 @@ type config struct { // failure. sendRetries int - // serviceName specifies the name of this application. - serviceName string - // universalVersion, reports whether span service name and config service name // should match to set application version tag. False by default universalVersion bool @@ -310,10 +307,6 @@ func newConfig(opts ...StartOption) (*config, error) { return c, fmt.Errorf("unable to look up hostname: %s", err.Error()) } } - if v := getDDorOtelConfig("service"); v != "" { - c.serviceName = v - globalconfig.SetServiceName(v) - } c.headerAsTags = newDynamicConfig("trace_header_tags", nil, setHeaderTags, equalSlice[string]) if v := env.Get("DD_TRACE_HEADER_TAGS"); v != "" { c.headerAsTags.update(strings.Split(v, ","), telemetry.OriginEnvVar) @@ -410,17 +403,19 @@ func newConfig(opts ...StartOption) (*config, error) { } } } - if c.serviceName == "" { + if c.internalConfig.ServiceName() == "" { if v, ok := globalTags["service"]; ok { if s, ok := v.(string); ok { - c.serviceName = s + c.internalConfig.SetServiceName(s, c.globalTags.Origin()) globalconfig.SetServiceName(s) } } else { // There is not an explicit service set, default to binary name. // In this case, don't set a global service name so the contribs continue using their defaults. - c.serviceName = filepath.Base(os.Args[0]) + c.internalConfig.SetServiceName(filepath.Base(os.Args[0]), internalconfig.OriginDefault) } + } else { + globalconfig.SetServiceName(c.internalConfig.ServiceName()) } if c.transport == nil { c.transport = newHTTPTransport(c.internalConfig.AgentURL().String(), c.httpClient) @@ -494,7 +489,7 @@ func newConfig(opts ...StartOption) (*config, error) { c.llmobs.TracerConfig = llmobsconfig.TracerConfig{ DDTags: c.globalTags.get(), Env: c.internalConfig.Env(), - Service: c.serviceName, + Service: c.internalConfig.ServiceName(), Version: c.internalConfig.Version(), AgentURL: c.internalConfig.AgentURL(), APIKey: env.Get("DD_API_KEY"), @@ -851,11 +846,11 @@ func statsTags(c *config) []string { "lang:go", "lang_version:" + runtime.Version(), } - if c.internalConfig.Env() != "" { - tags = append(tags, "env:"+c.internalConfig.Env()) + if v := c.internalConfig.Env(); v != "" { + tags = append(tags, "env:"+v) } - if hostname := c.internalConfig.Hostname(); hostname != "" { - tags = append(tags, "host:"+hostname) + if v := c.internalConfig.Hostname(); v != "" { + tags = append(tags, "host:"+v) } for k, v := range c.globalTags.get() { if vstr, ok := v.(string); ok { @@ -864,8 +859,8 @@ func statsTags(c *config) []string { } globalconfig.SetStatsTags(tags) tags = append(tags, "tracer_version:"+version.Tag) - if c.serviceName != "" { - tags = append(tags, "service:"+c.serviceName) + if v := c.internalConfig.ServiceName(); v != "" { + tags = append(tags, "service:"+v) } return tags } @@ -967,8 +962,8 @@ func WithPropagator(p Propagator) StartOption { // WithService sets the default service name for the program. func WithService(name string) StartOption { return func(c *config) { - c.serviceName = name - globalconfig.SetServiceName(c.serviceName) + c.internalConfig.SetServiceName(name, internalconfig.OriginCode) + globalconfig.SetServiceName(name) } } diff --git a/ddtrace/tracer/option_test.go b/ddtrace/tracer/option_test.go index 848ca19151..9e236ab926 100644 --- a/ddtrace/tracer/option_test.go +++ b/ddtrace/tracer/option_test.go @@ -405,7 +405,7 @@ func TestTracerOptionsDefaults(t *testing.T) { c, err := newTestConfig() assert.NoError(err) assert.Equal(float64(1), c.sampler.Rate()) - assert.Regexp(`tracer\.test(\.exe)?`, c.serviceName) + assert.Regexp(`tracer\.test(\.exe)?`, c.internalConfig.ServiceName()) assert.Equal(&url.URL{Scheme: "http", Host: "localhost:8126"}, c.internalConfig.RawAgentURL()) assert.Equal("localhost:8125", c.dogstatsdAddr) assert.Nil(nil, c.httpClient) @@ -1106,7 +1106,7 @@ func TestServiceName(t *testing.T) { WithService("api-intake"), ) assert.NoError(err) - assert.Equal("api-intake", c.serviceName) + assert.Equal("api-intake", c.internalConfig.ServiceName()) assert.Equal("api-intake", globalconfig.ServiceName()) }) @@ -1117,7 +1117,7 @@ func TestServiceName(t *testing.T) { c, err := newTestConfig() assert.NoError(err) - assert.Equal("api-intake", c.serviceName) + assert.Equal("api-intake", c.internalConfig.ServiceName()) assert.Equal("api-intake", globalconfig.ServiceName()) }) @@ -1130,7 +1130,7 @@ func TestServiceName(t *testing.T) { c, err := newTestConfig() assert.NoError(err) - assert.Equal("api-intake", c.serviceName) + assert.Equal("api-intake", c.internalConfig.ServiceName()) assert.Equal("api-intake", globalconfig.ServiceName()) }) @@ -1139,7 +1139,7 @@ func TestServiceName(t *testing.T) { assert := assert.New(t) c, err := newTestConfig(WithGlobalTag("service", "api-intake")) assert.NoError(err) - assert.Equal("api-intake", c.serviceName) + assert.Equal("api-intake", c.internalConfig.ServiceName()) assert.Equal("api-intake", globalconfig.ServiceName()) }) @@ -1152,7 +1152,7 @@ func TestServiceName(t *testing.T) { c, err := newTestConfig() assert.NoError(err) - assert.Equal("api-intake", c.serviceName) + assert.Equal("api-intake", c.internalConfig.ServiceName()) assert.Equal("api-intake", globalconfig.ServiceName()) }) @@ -1163,7 +1163,7 @@ func TestServiceName(t *testing.T) { c, err := newTestConfig() assert.NoError(err) - assert.Equal("api-intake", c.serviceName) + assert.Equal("api-intake", c.internalConfig.ServiceName()) assert.Equal("api-intake", globalconfig.ServiceName()) }) @@ -1175,47 +1175,47 @@ func TestServiceName(t *testing.T) { globalconfig.SetServiceName("") c, err := newTestConfig() assert.NoError(err) - assert.Equal(c.serviceName, filepath.Base(os.Args[0])) + assert.Equal(c.internalConfig.ServiceName(), filepath.Base(os.Args[0])) assert.Equal("", globalconfig.ServiceName()) t.Setenv("OTEL_RESOURCE_ATTRIBUTES", "service.name=testService6") globalconfig.SetServiceName("") c, err = newTestConfig() assert.NoError(err) - assert.Equal(c.serviceName, "testService6") + assert.Equal(c.internalConfig.ServiceName(), "testService6") assert.Equal("testService6", globalconfig.ServiceName()) t.Setenv("DD_TAGS", "service:testService") globalconfig.SetServiceName("") c, err = newTestConfig() assert.NoError(err) - assert.Equal(c.serviceName, "testService") + assert.Equal(c.internalConfig.ServiceName(), "testService") assert.Equal("testService", globalconfig.ServiceName()) globalconfig.SetServiceName("") c, err = newTestConfig(WithGlobalTag("service", "testService2")) assert.NoError(err) - assert.Equal(c.serviceName, "testService2") + assert.Equal(c.internalConfig.ServiceName(), "testService2") assert.Equal("testService2", globalconfig.ServiceName()) t.Setenv("OTEL_SERVICE_NAME", "testService3") globalconfig.SetServiceName("") c, err = newTestConfig(WithGlobalTag("service", "testService2")) assert.NoError(err) - assert.Equal(c.serviceName, "testService3") + assert.Equal(c.internalConfig.ServiceName(), "testService3") assert.Equal("testService3", globalconfig.ServiceName()) t.Setenv("DD_SERVICE", "testService4") globalconfig.SetServiceName("") c, err = newTestConfig(WithGlobalTag("service", "testService2"), WithService("testService4")) assert.NoError(err) - assert.Equal(c.serviceName, "testService4") + assert.Equal(c.internalConfig.ServiceName(), "testService4") assert.Equal("testService4", globalconfig.ServiceName()) globalconfig.SetServiceName("") c, err = newTestConfig(WithGlobalTag("service", "testService2"), WithService("testService5")) assert.NoError(err) - assert.Equal(c.serviceName, "testService5") + assert.Equal(c.internalConfig.ServiceName(), "testService5") assert.Equal("testService5", globalconfig.ServiceName()) }) } diff --git a/ddtrace/tracer/telemetry.go b/ddtrace/tracer/telemetry.go index 0a6b788e9c..52e0ad7c43 100644 --- a/ddtrace/tracer/telemetry.go +++ b/ddtrace/tracer/telemetry.go @@ -48,7 +48,7 @@ func startTelemetry(c *config) telemetry.Client { {Name: "send_retries", Value: c.sendRetries}, {Name: "retry_interval", Value: c.internalConfig.RetryInterval()}, {Name: "trace_startup_logs_enabled", Value: c.internalConfig.LogStartup()}, - {Name: "service", Value: c.serviceName}, + {Name: "service", Value: c.internalConfig.ServiceName()}, {Name: "universal_version", Value: c.universalVersion}, {Name: "env", Value: c.internalConfig.Env()}, {Name: "version", Value: c.internalConfig.Version()}, @@ -125,7 +125,7 @@ func startTelemetry(c *config) telemetry.Client { if c.internalConfig.LogToStdout() || c.ciVisibilityAgentless { cfg.APIKey = env.Get("DD_API_KEY") } - client, err := telemetry.NewClient(c.serviceName, c.internalConfig.Env(), c.internalConfig.Version(), cfg) + client, err := telemetry.NewClient(c.internalConfig.ServiceName(), c.internalConfig.Env(), c.internalConfig.Version(), cfg) if err != nil { log.Debug("tracer: failed to create telemetry client: %s", err.Error()) return nil diff --git a/ddtrace/tracer/tracer.go b/ddtrace/tracer/tracer.go index f4f6a64dd8..71ab2814f7 100644 --- a/ddtrace/tracer/tracer.go +++ b/ddtrace/tracer/tracer.go @@ -272,7 +272,7 @@ func Start(opts ...StartOption) error { cfg.AppVersion = t.config.internalConfig.Version() cfg.Env = t.config.internalConfig.Env() cfg.HTTP = t.config.httpClient - cfg.ServiceName = t.config.serviceName + cfg.ServiceName = t.config.internalConfig.ServiceName() if t.config.agent.load().hasRemoteConfig { if err := t.startRemoteConfig(cfg); err != nil { log.Warn("Remote config startup error: %s", err.Error()) @@ -325,7 +325,7 @@ func storeConfig(c *config) { Language: "go", Version: version.Tag, Hostname: c.internalConfig.Hostname(), - ServiceName: c.serviceName, + ServiceName: c.internalConfig.ServiceName(), ServiceEnvironment: c.internalConfig.Env(), ServiceVersion: c.internalConfig.Version(), ProcessTags: processtags.GlobalTags().String(), @@ -342,7 +342,7 @@ func storeConfig(c *config) { DeploymentEnvironmentName: c.internalConfig.Env(), HostName: c.internalConfig.Hostname(), ServiceInstanceID: globalconfig.RuntimeID(), - ServiceName: c.serviceName, + ServiceName: c.internalConfig.ServiceName(), ServiceVersion: c.internalConfig.Version(), TelemetrySDKLanguage: "go", TelemetrySDKVersion: version.Tag, @@ -452,7 +452,7 @@ func newUnstartedTracer(opts ...StartOption) (t *tracer, err error) { rulesSampler.traces.setTraceSampleRules, EqualsFalseNegative) var dataStreamsProcessor *datastreams.Processor if c.internalConfig.DataStreamsMonitoringEnabled() { - dataStreamsProcessor = datastreams.NewProcessor(statsd, c.internalConfig.Env(), c.serviceName, c.internalConfig.Version(), c.internalConfig.AgentURL(), c.httpClient) + dataStreamsProcessor = datastreams.NewProcessor(statsd, c.internalConfig.Env(), c.internalConfig.ServiceName(), c.internalConfig.Version(), c.internalConfig.AgentURL(), c.httpClient) } var logFile *log.ManagedFile if v := c.internalConfig.LogDirectory(); v != "" { @@ -858,7 +858,7 @@ func (t *tracer) StartSpan(operationName string, options ...StartSpanOption) *Sp } span := spanStart(operationName, options...) if span.service == "" { - span.service = t.config.serviceName + span.service = t.config.internalConfig.ServiceName() } cfg := t.config.internalConfig @@ -877,7 +877,7 @@ func (t *tracer) StartSpan(operationName string, options ...StartSpanOption) *Sp } if ver := cfg.Version(); ver != "" { - if t.config.universalVersion || (!t.config.universalVersion && span.service == t.config.serviceName) { + if t.config.universalVersion || (!t.config.universalVersion && span.service == t.config.internalConfig.ServiceName()) { span.setMetaInit(ext.Version, ver) } } @@ -1073,7 +1073,7 @@ func (t *tracer) TracerConf() TracerConf { PeerServiceMappings: t.config.peerServiceMappings, EnvTag: t.config.internalConfig.Env(), VersionTag: t.config.internalConfig.Version(), - ServiceTag: t.config.serviceName, + ServiceTag: t.config.internalConfig.ServiceName(), TracingAsTransport: t.config.tracingAsTransport, isLambdaFunction: t.config.internalConfig.IsLambdaFunction(), } diff --git a/ddtrace/tracer/tracer_test.go b/ddtrace/tracer/tracer_test.go index 9ef92231f4..d621c4b95b 100644 --- a/ddtrace/tracer/tracer_test.go +++ b/ddtrace/tracer/tracer_test.go @@ -407,10 +407,9 @@ func TestTracerStartSpan(t *testing.T) { func TestSamplingDecision(t *testing.T) { t.Run("sampled", func(t *testing.T) { - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.prioritySampling.defaultRate = 1 - tracer.config.serviceName = "test_service" span := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(span.context)) child.Finish() @@ -427,10 +426,9 @@ func TestSamplingDecision(t *testing.T) { t.Run("dropped_sent", func(t *testing.T) { // Even if DropP0s is enabled, spans should always be kept unless // client-side stats are also enabled. - tracer, _, _, stop, err := startTestTracer(t, WithStatsComputation(false)) + tracer, _, _, stop, err := startTestTracer(t, WithStatsComputation(false), WithService("test_service")) assert.Nil(t, err) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" span := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(span.context)) child.Finish() @@ -445,10 +443,9 @@ func TestSamplingDecision(t *testing.T) { }) t.Run("dropped_stats", func(t *testing.T) { - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" span := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(span.context)) child.Finish() @@ -463,10 +460,9 @@ func TestSamplingDecision(t *testing.T) { }) t.Run("events_sampled", func(t *testing.T) { - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" span := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(span.context)) child.SetTag(ext.EventSampleRate, 1) @@ -482,11 +478,10 @@ func TestSamplingDecision(t *testing.T) { }) t.Run("client_dropped", func(t *testing.T) { - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" span := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(span.context)) child.SetTag(ext.EventSampleRate, 1) @@ -510,12 +505,11 @@ func TestSamplingDecision(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"*_1", "sample_rate": 1.0, "max_per_second": 15.0}]`) // Stats are enabled, rules are available. Trace sample rate equals 0. // Span sample rate equals 1. The trace should be dropped. One single span is extracted. - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.config.internalConfig.SetFeatureFlags([]string{"discovery"}, internalconfig.OriginCode) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" parent := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(parent.context)) child.Finish() @@ -535,11 +529,10 @@ func TestSamplingDecision(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"*_1", "sample_rate": 1.0, "max_per_second": 15.0}]`) // Stats are disabled, rules are available. Trace sample rate equals 0. // Span sample rate equals 1. The trace should be dropped. One span has single span tags set. - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" parent := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(parent.context)) child.Finish() @@ -559,11 +552,10 @@ func TestSamplingDecision(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "match","name":"nothing", "sample_rate": 1.0, "max_per_second": 15.0}]`) // Rules are available, but match nothing. Trace sample rate equals 0. // The trace should be dropped. No single spans extracted. - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" parent := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(parent.context)) child.Finish() @@ -583,11 +575,10 @@ func TestSamplingDecision(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"*", "sample_rate": 1.0}]`) // Rules are available. Trace sample rate equals 1. Span sample rate equals 1. // The trace should be kept. No single spans extracted. - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) tracer.config.sampler = NewRateSampler(1) tracer.prioritySampling.defaultRate = 1 - tracer.config.serviceName = "test_service" parent := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(parent.context)) child.Finish() @@ -608,7 +599,7 @@ func TestSamplingDecision(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"name_*", "sample_rate": 1.0,"max_per_second":50}]`) t.Setenv("DD_TRACE_SAMPLE_RATE", "0.8") - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) // Don't allow the rate limiter to reset while the test is running. current := time.Now() @@ -617,7 +608,6 @@ func TestSamplingDecision(t *testing.T) { nowTime = func() time.Time { return time.Now() } }() defer stop() - tracer.config.serviceName = "test_service" var spans []*Span for i := range 100 { s := tracer.StartSpan(fmt.Sprintf("name_%d", i)) @@ -653,10 +643,9 @@ func TestSamplingDecision(t *testing.T) { t.Run("single_spans_without_max_per_second:rate_1.0", func(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"name_*", "sample_rate": 1.0}]`) t.Setenv("DD_TRACE_SAMPLE_RATE", "0.8") - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) defer stop() - tracer.config.serviceName = "test_service" spans := []*Span{} for range 100 { s := tracer.StartSpan("name_1") @@ -688,10 +677,9 @@ func TestSamplingDecision(t *testing.T) { t.Run("single_spans_without_max_per_second:rate_0.5", func(t *testing.T) { t.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"name_2", "sample_rate": 0.5}]`) t.Setenv("DD_TRACE_SAMPLE_RATE", "0.8") - tracer, _, _, stop, err := startTestTracer(t) + tracer, _, _, stop, err := startTestTracer(t, WithService("test_service")) assert.Nil(t, err) defer stop() - tracer.config.serviceName = "test_service" spans := []*Span{} for range 100 { s := tracer.StartSpan("name_1") @@ -2655,13 +2643,12 @@ func BenchmarkTracerStackFrames(b *testing.B) { func BenchmarkSingleSpanRetention(b *testing.B) { // Don't use b.Loop() here because it'll cause measurement artifacts. b.Run("no-rules", func(b *testing.B) { - tracer, _, _, stop, err := startTestTracer(b) + tracer, _, _, stop, err := startTestTracer(b, WithService("test_service")) assert.Nil(b, err) defer stop() tracer.config.internalConfig.SetFeatureFlags([]string{"discovery"}, internalconfig.OriginCode) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" b.ResetTimer() for range b.N { span := tracer.StartSpan("name_1") @@ -2675,13 +2662,12 @@ func BenchmarkSingleSpanRetention(b *testing.B) { b.Run("with-rules/match-half", func(b *testing.B) { b.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"*_1", "sample_rate": 1.0, "max_per_second": 15.0}]`) - tracer, _, _, stop, err := startTestTracer(b) + tracer, _, _, stop, err := startTestTracer(b, WithService("test_service")) assert.Nil(b, err) defer stop() tracer.config.internalConfig.SetFeatureFlags([]string{"discovery"}, internalconfig.OriginCode) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" b.ResetTimer() for range b.N { span := tracer.StartSpan("name_1") @@ -2699,13 +2685,12 @@ func BenchmarkSingleSpanRetention(b *testing.B) { b.Run("with-rules/match-all", func(b *testing.B) { b.Setenv("DD_SPAN_SAMPLING_RULES", `[{"service": "test_*","name":"*_1", "sample_rate": 1.0, "max_per_second": 15.0}]`) - tracer, _, _, stop, err := startTestTracer(b) + tracer, _, _, stop, err := startTestTracer(b, WithService("test_service")) assert.Nil(b, err) defer stop() tracer.config.internalConfig.SetFeatureFlags([]string{"discovery"}, internalconfig.OriginCode) tracer.config.sampler = NewRateSampler(0) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" b.ResetTimer() for range b.N { span := tracer.StartSpan("name_1") @@ -2830,13 +2815,12 @@ func TestEmptyChunksNotSent(t *testing.T) { assert := assert.New(t) // Use the same setup as the working "dropped_stats" test but add stats computation - tracer, transport, _, stop, err := startTestTracer(t, WithStatsComputation(true)) + tracer, transport, _, stop, err := startTestTracer(t, WithStatsComputation(true), WithService("test_service")) assert.NoError(err) defer stop() tracer.config.internalConfig.SetStatsComputationEnabled(true, internalconfig.OriginCode) tracer.prioritySampling.defaultRate = 0 - tracer.config.serviceName = "test_service" span := tracer.StartSpan("name_1") child := tracer.StartSpan("name_2", ChildOf(span.Context())) diff --git a/internal/config/config.go b/internal/config/config.go index be49aab610..49f5b81a42 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -40,6 +40,7 @@ type Origin = telemetry.Origin const ( OriginCode = telemetry.OriginCode OriginCalculated = telemetry.OriginCalculated + OriginDefault = telemetry.OriginDefault ) // Config represents global configuration properties. @@ -51,7 +52,8 @@ type Config struct { agentURL *url.URL debug bool // logStartup, when true, causes various startup info to be written when the tracer starts. - logStartup bool + logStartup bool + // serviceName specifies the name of this application. serviceName string version string // env contains the environment that this application will run under.