Skip to content

Commit d14de5d

Browse files
committed
Special case for IntegrationSettings.cs keys
1 parent 2d2c0e2 commit d14de5d

File tree

6 files changed

+49
-33
lines changed

6 files changed

+49
-33
lines changed

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/Telemetry/ConfigurationBuilder.cs

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,39 @@ internal readonly struct ConfigurationBuilder(IConfigurationSource source, IConf
1919

2020
public HasKeys WithKeys(string key) => new(_source, _telemetry, key);
2121

22-
public HasKeys WithKeys(string key, string fallbackKey) => new(_source, _telemetry, key, fallbackKey);
23-
24-
public HasKeys WithKeys(string key, string fallbackKey1, string fallbackKey2) => new(_source, _telemetry, key, fallbackKey1, fallbackKey2);
25-
26-
public HasKeys WithKeys(string key, string fallbackKey1, string fallbackKey2, string fallbackKey3) => new(_source, _telemetry, key, fallbackKey1, fallbackKey2, fallbackKey3);
22+
public HasKeys WithIntegrationKey(string integrationName) => new(
23+
_source,
24+
_telemetry,
25+
integrationName,
26+
[
27+
string.Format(IntegrationSettings.IntegrationEnabledKey, integrationName.ToUpperInvariant()),
28+
string.Format(IntegrationSettings.IntegrationEnabledKey, integrationName),
29+
$"DD_{integrationName}_ENABLED"
30+
]);
31+
32+
public HasKeys WithIntegrationAnalyticsKey(string integrationName) => new(
33+
_source,
34+
_telemetry,
35+
integrationName,
36+
[
37+
#pragma warning disable 618 // App analytics is deprecated, but still used
38+
string.Format(IntegrationSettings.AnalyticsEnabledKey, integrationName.ToUpperInvariant()),
39+
string.Format(IntegrationSettings.AnalyticsEnabledKey, integrationName),
40+
#pragma warning restore 618
41+
$"DD_{integrationName}_ANALYTICS_ENABLED"
42+
]);
43+
44+
public HasKeys WithIntegrationAnalyticsSampleRateKey(string integrationName) => new(
45+
_source,
46+
_telemetry,
47+
integrationName,
48+
[
49+
#pragma warning disable 618 // App analytics is deprecated, but still used
50+
string.Format(IntegrationSettings.AnalyticsSampleRateKey, integrationName.ToUpperInvariant()),
51+
string.Format(IntegrationSettings.AnalyticsSampleRateKey, integrationName),
52+
#pragma warning restore 618
53+
$"DD_{integrationName}_ANALYTICS_SAMPLE_RATE"
54+
]);
2755

2856
internal readonly struct HasKeys
2957
{

tracer/src/Datadog.Trace/Configuration/IntegrationSettings.cs

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#nullable enable
77

88
using System;
9+
using System.Collections.Generic;
910
using Datadog.Trace.Configuration.Telemetry;
1011

1112
namespace Datadog.Trace.Configuration
@@ -18,7 +19,7 @@ public class IntegrationSettings : IEquatable<IntegrationSettings>
1819
/// <summary>
1920
/// Configuration key pattern for enabling or disabling an integration.
2021
/// </summary>
21-
public const string IntegrationEnabled = "DD_TRACE_{0}_ENABLED";
22+
public const string IntegrationEnabledKey = "DD_TRACE_{0}_ENABLED";
2223

2324
/// <summary>
2425
/// Configuration key pattern for enabling or disabling Analytics in an integration.
@@ -39,7 +40,7 @@ public class IntegrationSettings : IEquatable<IntegrationSettings>
3940
/// <param name="source">The <see cref="IConfigurationSource"/> to use when retrieving configuration values.</param>
4041
/// <param name="isExplicitlyDisabled">Has the integration been explicitly disabled</param>
4142
/// <param name="fallback">The fallback values to use. Only used in manual instrumentation scenarios</param>
42-
internal IntegrationSettings(string? integrationName, IConfigurationSource? source, bool isExplicitlyDisabled, IntegrationSettings? fallback = null)
43+
internal IntegrationSettings(string integrationName, IConfigurationSource? source, bool isExplicitlyDisabled, IntegrationSettings? fallback = null)
4344
{
4445
if (integrationName is null)
4546
{
@@ -50,32 +51,19 @@ internal IntegrationSettings(string? integrationName, IConfigurationSource? sour
5051

5152
// We don't record these in telemetry, because they're blocked anyway
5253
var config = new ConfigurationBuilder(source ?? NullConfigurationSource.Instance, NullConfigurationTelemetry.Instance);
53-
var upperName = integrationName.ToUpperInvariant();
5454
Enabled = isExplicitlyDisabled
5555
? false
5656
: config
57-
.WithKeys(
58-
string.Format(IntegrationEnabled, upperName),
59-
string.Format(IntegrationEnabled, integrationName),
60-
string.Format(IntegrationEnabled, integrationName),
61-
$"DD_{integrationName}_ENABLED")
62-
.AsBool()
63-
?? fallback?.Enabled;
57+
.WithIntegrationKey(integrationName)
58+
.AsBool() ?? fallback?.AnalyticsEnabled;
6459

6560
#pragma warning disable 618 // App analytics is deprecated, but still used
6661
AnalyticsEnabled = config
67-
.WithKeys(
68-
string.Format(AnalyticsEnabledKey, upperName),
69-
string.Format(AnalyticsEnabledKey, integrationName),
70-
$"DD_{integrationName}_ANALYTICS_ENABLED")
71-
.AsBool()
72-
?? fallback?.AnalyticsEnabled;
62+
.WithIntegrationAnalyticsKey(integrationName)
63+
.AsBool() ?? fallback?.AnalyticsEnabled;
7364

7465
AnalyticsSampleRate = config
75-
.WithKeys(
76-
string.Format(AnalyticsSampleRateKey, upperName),
77-
string.Format(AnalyticsSampleRateKey, integrationName),
78-
$"DD_{integrationName}_ANALYTICS_SAMPLE_RATE")
66+
.WithIntegrationAnalyticsSampleRateKey(integrationName)
7967
.AsDouble(fallback?.AnalyticsSampleRate ?? 1.0);
8068
#pragma warning restore 618
8169
}

tracer/test/Datadog.Trace.ClrProfiler.Managed.Tests/DbScopeFactoryTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ public async Task CreateDbCommandScope_ReturnNullForAdoNetDisabledIntegration(Ty
102102

103103
var tracerSettings = TracerSettings.Create(new()
104104
{
105-
{ string.Format(IntegrationSettings.IntegrationEnabled, integrationName), "true" },
106-
{ string.Format(IntegrationSettings.IntegrationEnabled, nameof(IntegrationId.AdoNet)), "false" },
105+
{ string.Format(IntegrationSettings.IntegrationEnabledKey, integrationName), "true" },
106+
{ string.Format(IntegrationSettings.IntegrationEnabledKey, nameof(IntegrationId.AdoNet)), "false" },
107107
});
108108
await using var tracer = TracerHelper.CreateWithFakeAgent(tracerSettings);
109109

@@ -750,7 +750,7 @@ private static ScopedTracer CreateTracerWithIntegrationEnabled(string integratio
750750
// Set up tracer
751751
var tracerSettings = TracerSettings.Create(new()
752752
{
753-
{ string.Format(IntegrationSettings.IntegrationEnabled, integrationName), enabled },
753+
{ string.Format(IntegrationSettings.IntegrationEnabledKey, integrationName), enabled },
754754
});
755755
return TracerHelper.Create(tracerSettings);
756756
}

tracer/test/Datadog.Trace.Tests/Configuration/IntegrationSettingsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void SettingsRespectsOverride(bool initiallyEnabled)
9090
var name = nameof(IntegrationId.Kafka);
9191
var source = new NameValueConfigurationSource(new()
9292
{
93-
{ string.Format(IntegrationSettings.IntegrationEnabled, name), initiallyEnabled.ToString() },
93+
{ string.Format(IntegrationSettings.IntegrationEnabledKey, name), initiallyEnabled.ToString() },
9494
});
9595

9696
var settings = new IntegrationSettings(name, source: source, isExplicitlyDisabled: true);
@@ -105,7 +105,7 @@ public void SettingsRespectsOriginalIfNotOverridden(bool initiallyEnabled)
105105
var name = nameof(IntegrationId.Kafka);
106106
var source = new NameValueConfigurationSource(new()
107107
{
108-
{ string.Format(IntegrationSettings.IntegrationEnabled, name), initiallyEnabled.ToString() },
108+
{ string.Format(IntegrationSettings.IntegrationEnabledKey, name), initiallyEnabled.ToString() },
109109
});
110110

111111
var settings = new IntegrationSettings(name, source: source, isExplicitlyDisabled: false);

tracer/test/Datadog.Trace.Tests/ManualInstrumentation/ManualInstrumentationLegacyConfigurationSourceTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public void GetIntegrationEnabled_SupportedValues_ReturnsExpectedValues(int id)
3131
{
3232
var integrationId = (IntegrationId)id;
3333
var name = IntegrationRegistry.GetName(integrationId).ToUpperInvariant();
34-
var enabledKey = string.Format(IntegrationSettings.IntegrationEnabled, name);
34+
var enabledKey = string.Format(IntegrationSettings.IntegrationEnabledKey, name);
3535

3636
var actual = ManualInstrumentationLegacyConfigurationSource.GetIntegrationEnabled(enabledKey);
3737

@@ -57,7 +57,7 @@ public void GetIntegrationEnabled_ForUnsupportedValues_ReturnsNull(int id)
5757
{
5858
var integrationId = (IntegrationId)id;
5959
var name = IntegrationRegistry.GetName(integrationId).ToUpperInvariant();
60-
var enabledKey = string.Format(IntegrationSettings.IntegrationEnabled, name);
60+
var enabledKey = string.Format(IntegrationSettings.IntegrationEnabledKey, name);
6161

6262
var actual = ManualInstrumentationLegacyConfigurationSource.GetIntegrationEnabled(enabledKey);
6363

tracer/test/Datadog.Trace.Tests/ManualInstrumentation/SettingsInstrumentationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ private static TracerSettings GetAndAssertAutomaticTracerSettings()
341341
{ ConfigurationKeys.TraceEnabled, false },
342342
{ ConfigurationKeys.TracerMetricsEnabled, true },
343343
{ ConfigurationKeys.AgentUri, "http://localhost:1234" },
344-
{ string.Format(IntegrationSettings.IntegrationEnabled, nameof(IntegrationId.Aerospike)), "false" },
344+
{ string.Format(IntegrationSettings.IntegrationEnabledKey, nameof(IntegrationId.Aerospike)), "false" },
345345
{ string.Format(IntegrationSettings.AnalyticsEnabledKey, nameof(IntegrationId.Grpc)), "true" },
346346
{ string.Format(IntegrationSettings.AnalyticsSampleRateKey, nameof(IntegrationId.Couchbase)), 0.5 },
347347
});

0 commit comments

Comments
 (0)