From 293fd6bd0bdce68319b6b9534ad0c6e8b4a952b4 Mon Sep 17 00:00:00 2001 From: Bertrand Mermet Date: Wed, 18 Oct 2017 00:47:17 -0700 Subject: [PATCH 1/2] Set smarter default service name --- .../SendTracesToAgent.cs | 2 +- src/Datadog.Tracer.Tests/TracerTests.cs | 4 ++-- src/Datadog.Tracer/Tracer.cs | 24 +++++++++++++++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs b/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs index 97e1164a9a4e..b10ba235d010 100644 --- a/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs +++ b/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs @@ -59,7 +59,7 @@ public async void MinimalSpan() AssertSpanEqual(span, trace.Single()); var serviceInfo = _httpRecorder.Services.Single().ServiceInfos().Single(); - Assert.Equal(Constants.UnkownService, serviceInfo.ServiceName); + Assert.Equal("Datadog.Tracer", serviceInfo.ServiceName); Assert.Equal(Constants.UnkownApp, serviceInfo.App); Assert.Equal(Constants.WebAppType, serviceInfo.AppType); } diff --git a/src/Datadog.Tracer.Tests/TracerTests.cs b/src/Datadog.Tracer.Tests/TracerTests.cs index 4be32e23ccc6..e7efba25de61 100644 --- a/src/Datadog.Tracer.Tests/TracerTests.cs +++ b/src/Datadog.Tracer.Tests/TracerTests.cs @@ -15,7 +15,7 @@ public class TracerTests public void Ctor_DefaultValues_ShouldSendDefaultServiceInfo() { var tracer = new Tracer(_agentWriter.Object); - _agentWriter.Verify(x => x.WriteServiceInfo(It.Is(y => y.ServiceName == Constants.UnkownService && y.AppType == Constants.WebAppType && y.App == Constants.UnkownApp)), Times.Once); + _agentWriter.Verify(x => x.WriteServiceInfo(It.Is(y => y.ServiceName == "Datadog.Tracer" && y.AppType == Constants.WebAppType && y.App == Constants.UnkownApp)), Times.Once); } [Fact] @@ -26,7 +26,7 @@ public void BuildSpan_NoParameter_DefaultParameters() var builder = tracer.BuildSpan("Op1"); var span = (Span)builder.Start(); - Assert.Equal(Constants.UnkownService, span.ServiceName); + Assert.Equal("Datadog.Tracer", span.ServiceName); Assert.Equal("Op1", span.OperationName); } diff --git a/src/Datadog.Tracer/Tracer.cs b/src/Datadog.Tracer/Tracer.cs index aecf00696f57..7570c2f380ed 100644 --- a/src/Datadog.Tracer/Tracer.cs +++ b/src/Datadog.Tracer/Tracer.cs @@ -2,6 +2,7 @@ using OpenTracing.Propagation; using System; using System.Collections.Generic; +using System.Reflection; using System.Threading; namespace Datadog.Tracer @@ -18,13 +19,13 @@ internal class Tracer : ITracer, IDatadogTracer public Tracer(IAgentWriter agentWriter, List serviceInfo = null, string defaultServiceName = null) { _agentWriter = agentWriter; - // TODO:bertrand be smarter about the service name - _defaultServiceName = defaultServiceName ?? Constants.UnkownService; - if (_defaultServiceName == Constants.UnkownService) + _defaultServiceName = defaultServiceName; + if (_defaultServiceName == null) { - _services[Constants.UnkownService] = new ServiceInfo + _defaultServiceName = GetExecutingAssemblyName() ?? Constants.UnkownService; + _services[_defaultServiceName] = new ServiceInfo { - ServiceName = Constants.UnkownService, + ServiceName = _defaultServiceName, App = Constants.UnkownApp, AppType = Constants.WebAppType, }; @@ -42,6 +43,19 @@ public Tracer(IAgentWriter agentWriter, List serviceInfo = null, st } } + private string GetExecutingAssemblyName() + { + try + { + var name = Assembly.GetExecutingAssembly().GetName(); + return name.Name; + } + catch + { + return null; + } + } + public ISpanBuilder BuildSpan(string operationName) { return new SpanBuilder(this, operationName); From 864c0b303ed10bbb7bca8d77b431b3f301e9c328 Mon Sep 17 00:00:00 2001 From: Bertrand Mermet Date: Mon, 23 Oct 2017 02:11:27 -0700 Subject: [PATCH 2/2] Stop sending default service info --- .../SendTracesToAgent.cs | 27 +++++++------------ src/Datadog.Tracer.Tests/TracerTests.cs | 7 ----- src/Datadog.Tracer/Tracer.cs | 12 +-------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs b/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs index b10ba235d010..f1c9055086dc 100644 --- a/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs +++ b/src/Datadog.Tracer.IntegrationTests/SendTracesToAgent.cs @@ -50,18 +50,13 @@ public async void MinimalSpan() span.Finish(); // Check that the HTTP calls went as expected - await _httpRecorder.WaitForCompletion(2); - Assert.Equal(2, _httpRecorder.Requests.Count); - Assert.Equal(2, _httpRecorder.Responses.Count); + await _httpRecorder.WaitForCompletion(1); + Assert.Equal(1, _httpRecorder.Requests.Count); + Assert.Equal(1, _httpRecorder.Responses.Count); Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode)); var trace = _httpRecorder.Traces.Single(); AssertSpanEqual(span, trace.Single()); - - var serviceInfo = _httpRecorder.Services.Single().ServiceInfos().Single(); - Assert.Equal("Datadog.Tracer", serviceInfo.ServiceName); - Assert.Equal(Constants.UnkownApp, serviceInfo.App); - Assert.Equal(Constants.WebAppType, serviceInfo.AppType); } [Fact] @@ -81,17 +76,15 @@ public async void CustomServiceName() span.Finish(); // Check that the HTTP calls went as expected - await _httpRecorder.WaitForCompletion(3); - Assert.Equal(3, _httpRecorder.Requests.Count); - Assert.Equal(3, _httpRecorder.Responses.Count); + await _httpRecorder.WaitForCompletion(2); + Assert.Equal(2, _httpRecorder.Requests.Count); + Assert.Equal(2, _httpRecorder.Responses.Count); Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode)); var trace = _httpRecorder.Traces.Single(); AssertSpanEqual(span, trace.Single()); - var serviceInfos = _httpRecorder.Services.Select(x => x.ServiceInfos().Single()).ToList(); - Assert.Equal(2, serviceInfos.Count); - var serviceInfo = serviceInfos.Single(x => x.ServiceName == ServiceName); + var serviceInfo = _httpRecorder.Services.Select(x => x.ServiceInfos().Single()).Single(); Assert.Equal(ServiceName, serviceInfo.ServiceName); Assert.Equal(App, serviceInfo.App); Assert.Equal(AppType, serviceInfo.AppType); @@ -108,9 +101,9 @@ public async void Utf8Everywhere() span.Finish(); // Check that the HTTP calls went as expected - await _httpRecorder.WaitForCompletion(2); - Assert.Equal(2, _httpRecorder.Requests.Count); - Assert.Equal(2, _httpRecorder.Responses.Count); + await _httpRecorder.WaitForCompletion(1); + Assert.Equal(1, _httpRecorder.Requests.Count); + Assert.Equal(1, _httpRecorder.Responses.Count); Assert.All(_httpRecorder.Responses, (x) => Assert.Equal(HttpStatusCode.OK, x.StatusCode)); var trace = _httpRecorder.Traces.Single(); diff --git a/src/Datadog.Tracer.Tests/TracerTests.cs b/src/Datadog.Tracer.Tests/TracerTests.cs index e7efba25de61..f723a5034a99 100644 --- a/src/Datadog.Tracer.Tests/TracerTests.cs +++ b/src/Datadog.Tracer.Tests/TracerTests.cs @@ -11,13 +11,6 @@ public class TracerTests { private Mock _agentWriter = new Mock(); - [Fact] - public void Ctor_DefaultValues_ShouldSendDefaultServiceInfo() - { - var tracer = new Tracer(_agentWriter.Object); - _agentWriter.Verify(x => x.WriteServiceInfo(It.Is(y => y.ServiceName == "Datadog.Tracer" && y.AppType == Constants.WebAppType && y.App == Constants.UnkownApp)), Times.Once); - } - [Fact] public void BuildSpan_NoParameter_DefaultParameters() { diff --git a/src/Datadog.Tracer/Tracer.cs b/src/Datadog.Tracer/Tracer.cs index 7570c2f380ed..850556e9bf63 100644 --- a/src/Datadog.Tracer/Tracer.cs +++ b/src/Datadog.Tracer/Tracer.cs @@ -19,17 +19,7 @@ internal class Tracer : ITracer, IDatadogTracer public Tracer(IAgentWriter agentWriter, List serviceInfo = null, string defaultServiceName = null) { _agentWriter = agentWriter; - _defaultServiceName = defaultServiceName; - if (_defaultServiceName == null) - { - _defaultServiceName = GetExecutingAssemblyName() ?? Constants.UnkownService; - _services[_defaultServiceName] = new ServiceInfo - { - ServiceName = _defaultServiceName, - App = Constants.UnkownApp, - AppType = Constants.WebAppType, - }; - } + _defaultServiceName = GetExecutingAssemblyName() ?? Constants.UnkownService; if (serviceInfo != null) { foreach(var service in serviceInfo)