Skip to content

Commit cbe967d

Browse files
committedJan 8, 2025
Add additional tests for CI Visibility test behaviour
1 parent dc6b7c1 commit cbe967d

File tree

2 files changed

+107
-0
lines changed

2 files changed

+107
-0
lines changed
 

‎tracer/test/Datadog.Trace.Tests/Configuration/CIVisibilitySettingsTests.cs

+105
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// This product includes software developed at Datadog (https://www.datadoghq.com/). Copyright 2017 Datadog, Inc.
44
// </copyright>
55

6+
using System;
67
using Datadog.Trace.Ci.Configuration;
78
using Datadog.Trace.Configuration;
89
using Datadog.Trace.Configuration.Telemetry;
@@ -14,6 +15,8 @@ namespace Datadog.Trace.Tests.Configuration
1415
{
1516
public class CIVisibilitySettingsTests : SettingsTestsBase
1617
{
18+
private static readonly string ExpectedExcludedSession = "/session/FakeSessionIdForPollingPurposes".ToUpperInvariant();
19+
1720
[Theory]
1821
[MemberData(nameof(BooleanTestCases), null)]
1922
public void Enabled(string value, bool? expected)
@@ -185,5 +188,107 @@ public void ForceAgentsEvpProxy(string value, string expected)
185188

186189
settings.ForceAgentsEvpProxy.Should().Be(expected);
187190
}
191+
192+
[Theory]
193+
[InlineData("some-service", "true")]
194+
[InlineData(null, "false")]
195+
public void AddsUserProvidedTestServiceTagToGlobalTags(string serviceName, string expectedTag)
196+
{
197+
var source = CreateConfigurationSource((ConfigurationKeys.ServiceName, serviceName));
198+
199+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
200+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
201+
202+
tracerSettings.GlobalTags.Should()
203+
.ContainKey(Datadog.Trace.Ci.Tags.CommonTags.UserProvidedTestServiceTag)
204+
.WhoseValue.Should()
205+
.Be(expectedTag);
206+
}
207+
208+
[Fact]
209+
public void ServiceNameIsNormalized()
210+
{
211+
var originalName = "My Service Name!";
212+
var normalizedName = "my_service_name";
213+
214+
var source = CreateConfigurationSource((ConfigurationKeys.ServiceName, originalName));
215+
216+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
217+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
218+
219+
tracerSettings.ServiceName.Should().Be(normalizedName);
220+
}
221+
222+
[Fact]
223+
public void AddsFakeSessionToExcludedHttpClientUrls()
224+
{
225+
var source = CreateConfigurationSource();
226+
227+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
228+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
229+
230+
tracerSettings.HttpClientExcludedUrlSubstrings
231+
.Should()
232+
.Contain(ExpectedExcludedSession);
233+
}
234+
235+
[Fact]
236+
public void AddsFakeSessionToExcludedHttpClientUrls_WhenUrlsAlreadyExist()
237+
{
238+
var source = CreateConfigurationSource(
239+
(ConfigurationKeys.HttpClientExcludedUrlSubstrings, "/some-url/path"));
240+
241+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
242+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
243+
244+
tracerSettings.HttpClientExcludedUrlSubstrings
245+
.Should()
246+
.Contain(ExpectedExcludedSession);
247+
}
248+
249+
[Fact]
250+
public void AddsFakeSessionToExcludedHttpClientUrls_WhenRunningInAas()
251+
{
252+
var source = CreateConfigurationSource(
253+
(ConfigurationKeys.AzureAppService.AzureAppServicesContextKey, "true"),
254+
(ConfigurationKeys.HttpClientExcludedUrlSubstrings, "/some-url/path"));
255+
256+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
257+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
258+
259+
tracerSettings.HttpClientExcludedUrlSubstrings
260+
.Should()
261+
.Contain(ExpectedExcludedSession);
262+
}
263+
264+
[Fact]
265+
public void WhenLogsEnabled_AddsDirectSubmission()
266+
{
267+
var source = CreateConfigurationSource(
268+
(ConfigurationKeys.CIVisibility.Logs, "true"));
269+
270+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
271+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
272+
273+
tracerSettings.LogSubmissionSettings
274+
.EnabledIntegrationNames
275+
.Should()
276+
.Contain(nameof(IntegrationId.XUnit));
277+
tracerSettings.LogSubmissionSettings.BatchPeriod.Should().Be(TimeSpan.FromSeconds(1));
278+
}
279+
280+
[Fact]
281+
public void WhenLogsNotEnabled_DoesNotAddDirectSubmission()
282+
{
283+
var source = CreateConfigurationSource();
284+
285+
var ciVisSettings = new CIVisibilitySettings(source, NullConfigurationTelemetry.Instance);
286+
var tracerSettings = ciVisSettings.InitializeTracerSettings([source]);
287+
288+
tracerSettings.LogSubmissionSettings
289+
.EnabledIntegrationNames
290+
.Should()
291+
.NotContain(nameof(IntegrationId.XUnit));
292+
}
188293
}
189294
}

‎tracer/test/Datadog.Trace.Tests/Configuration/TracerSettingsTests.cs

+2
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,8 @@ public void Environment(string value, string expected)
217217

218218
[Theory]
219219
[InlineData("test", null, null, "test")]
220+
// This is the current behaviour - _should_ it be, or should the result be normalized, is a separate question...
221+
[InlineData("My Service Name!", null, null, "My Service Name!")]
220222
[InlineData("test", null, "ignored_otel", "test")]
221223
[InlineData("test", "error", "ignored_otel", "test")]
222224
[InlineData(null, "test", null, "test")]

0 commit comments

Comments
 (0)