From 2288666f638b34ac60a48b4648fd6907b4ea4c04 Mon Sep 17 00:00:00 2001 From: Lucas Pimentel Date: Mon, 3 Dec 2018 17:51:22 -0500 Subject: [PATCH] set "env" tag from DD_DEV environment variable (#225) * add support for `DD_ENV` environment variable * define constant `Tags.Env` * add unit test * fix comment * fix comment --- src/Datadog.Trace/Tags.cs | 5 +++++ src/Datadog.Trace/Tracer.cs | 10 ++++++++++ test/Datadog.Trace.Tests/TracerTests.cs | 17 +++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/src/Datadog.Trace/Tags.cs b/src/Datadog.Trace/Tags.cs index f9fb6d6f41a3..a10286edcdad 100644 --- a/src/Datadog.Trace/Tags.cs +++ b/src/Datadog.Trace/Tags.cs @@ -5,6 +5,11 @@ namespace Datadog.Trace /// public static class Tags { + /// + /// The environment of the profiled service. + /// + public const string Env = "env"; + /// /// The URL of an HTTP request /// diff --git a/src/Datadog.Trace/Tracer.cs b/src/Datadog.Trace/Tracer.cs index bd015462a4c2..f2a87d3f9f9b 100644 --- a/src/Datadog.Trace/Tracer.cs +++ b/src/Datadog.Trace/Tracer.cs @@ -17,6 +17,7 @@ public class Tracer : IDatadogTracer private const string UnknownServiceName = "UnknownService"; private const string DefaultTraceAgentHost = "localhost"; private const string DefaultTraceAgentPort = "8126"; + private const string EnvVariableName = "DD_ENV"; private static readonly string[] TraceAgentHostEnvironmentVariableNames = { @@ -146,6 +147,15 @@ public Span StartSpan(string operationName, SpanContext childOf = null, string s } var span = new Span(this, childOf, operationName, serviceName, startTime); + + var env = Environment.GetEnvironmentVariable(EnvVariableName); + + // automatically add the "env" tag if environment variable is defined + if (!string.IsNullOrWhiteSpace(env)) + { + span.SetTag(Tags.Env, env); + } + span.TraceContext.AddSpan(span); return span; } diff --git a/test/Datadog.Trace.Tests/TracerTests.cs b/test/Datadog.Trace.Tests/TracerTests.cs index abfa77b00bb7..20ad65357fa3 100644 --- a/test/Datadog.Trace.Tests/TracerTests.cs +++ b/test/Datadog.Trace.Tests/TracerTests.cs @@ -276,5 +276,22 @@ public void SetHostAndPortEnvironmentVariables(string host, string port, string Environment.SetEnvironmentVariable("DD_AGENT_HOST", originalHost); Environment.SetEnvironmentVariable("DD_TRACE_AGENT_PORT", originalPort); } + + [Theory] + [InlineData(null)] + [InlineData("test")] + public void SetEnvEnvironmentVariable(string env) + { + var name = "DD_ENV"; + string originalEnv = Environment.GetEnvironmentVariable(name); + + Environment.SetEnvironmentVariable(name, env); + Span span = Tracer.Instance.StartSpan("operation"); + + Assert.Equal(env, span.GetTag(Tags.Env)); + + // reset the environment variable to its original value (if any) when done + Environment.SetEnvironmentVariable(name, originalEnv); + } } }