Skip to content

Commit 403e854

Browse files
committed
Update GetAs to pass in a "real" default value instead of a delegate
Update usages
1 parent f18afc1 commit 403e854

File tree

6 files changed

+30
-19
lines changed

6 files changed

+30
-19
lines changed

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

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,23 @@ public string AsString(string defaultValue, Func<string, bool>? validator)
220220
return TryHandleResult(Telemetry, Key, result, recordValue, getDefaultValue, out var value) ? value : null;
221221
}
222222

223+
// ****************
224+
// GetAs accessors
225+
// ****************
223226
// We have to use different methods for class/struct when we _don't_ have a null value, because NRTs don't work properly otherwise
224-
[return: NotNullIfNotNull(nameof(getDefaultValue))]
227+
public T GetAs<T>(DefaultResult<T> defaultValue, Func<T, bool>? validator, Func<string, ParsingResult<T>> converter)
228+
where T : notnull
229+
{
230+
var result = GetAs(validator, converter);
231+
if (result is { Result: { } ddResult, IsValid: true })
232+
{
233+
return ddResult;
234+
}
235+
236+
Telemetry.Record(Key, defaultValue.TelemetryValue, recordValue: true, ConfigurationOrigins.Default);
237+
return defaultValue.Result;
238+
}
239+
225240
public T GetAs<T>(Func<DefaultResult<T>> getDefaultValue, Func<T, bool>? validator, Func<string, ParsingResult<T>> converter)
226241
where T : notnull
227242
{
@@ -235,18 +250,14 @@ public T GetAs<T>(Func<DefaultResult<T>> getDefaultValue, Func<T, bool>? validat
235250
where T : class
236251
{
237252
var result = GetAs(validator, converter);
238-
return TryHandleResult(Telemetry, Key, result, recordValue: true, getDefaultValue: null, out var value)
239-
? value
240-
: null;
253+
return result is { Result: { } ddResult, IsValid: true } ? ddResult : null;
241254
}
242255

243256
public T? GetAsStruct<T>(Func<T, bool>? validator, Func<string, ParsingResult<T>> converter)
244257
where T : struct
245258
{
246259
var result = GetAs(validator, converter);
247-
return TryHandleResult(Telemetry, Key, result, recordValue: true, getDefaultValue: null, out var value)
248-
? value
249-
: null;
260+
return result is { Result: { } ddResult, IsValid: true } ? ddResult : null;
250261
}
251262

252263
// ****************

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ internal TracerSettings(IConfigurationSource? source, IConfigurationTelemetry te
376376
MetadataSchemaVersion = config
377377
.WithKeys(ConfigurationKeys.MetadataSchemaVersion)
378378
.GetAs(
379-
() => new DefaultResult<SchemaVersion>(SchemaVersion.V0, "V0"),
379+
defaultValue: new DefaultResult<SchemaVersion>(SchemaVersion.V0, "V0"),
380380
converter: x => x switch
381381
{
382382
"v1" or "V1" => SchemaVersion.V1,
@@ -446,7 +446,7 @@ internal TracerSettings(IConfigurationSource? source, IConfigurationTelemetry te
446446

447447
CustomSamplingRulesFormat = config.WithKeys(ConfigurationKeys.CustomSamplingRulesFormat)
448448
.GetAs(
449-
getDefaultValue: () => new DefaultResult<string>(SamplingRulesFormat.Glob, "glob"),
449+
defaultValue: new DefaultResult<string>(SamplingRulesFormat.Glob, "glob"),
450450
converter: value =>
451451
{
452452
// We intentionally report invalid values as "valid" in the converter,
@@ -598,7 +598,7 @@ internal TracerSettings(IConfigurationSource? source, IConfigurationTelemetry te
598598
PropagationBehaviorExtract = config
599599
.WithKeys(ConfigurationKeys.PropagationBehaviorExtract)
600600
.GetAs(
601-
() => new DefaultResult<ExtractBehavior>(ExtractBehavior.Continue, "continue"),
601+
defaultValue: new(ExtractBehavior.Continue, "continue"),
602602
converter: x => x.ToLowerInvariant() switch
603603
{
604604
"continue" => ExtractBehavior.Continue,
@@ -700,7 +700,7 @@ internal TracerSettings(IConfigurationSource? source, IConfigurationTelemetry te
700700
DbmPropagationMode = config
701701
.WithKeys(ConfigurationKeys.DbmPropagationMode)
702702
.GetAs(
703-
() => new DefaultResult<DbmPropagationLevel>(DbmPropagationLevel.Disabled, nameof(DbmPropagationLevel.Disabled)),
703+
defaultValue: new(DbmPropagationLevel.Disabled, nameof(DbmPropagationLevel.Disabled)),
704704
converter: x => ToDbmPropagationInput(x) ?? ParsingResult<DbmPropagationLevel>.Failure(),
705705
validator: null);
706706

tracer/src/Datadog.Trace/Iast/Settings/IastSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public IastSettings(IConfigurationSource source, IConfigurationTelemetry telemet
8080
TelemetryVerbosity = config
8181
.WithKeys(ConfigurationKeys.Iast.TelemetryVerbosity)
8282
.GetAs(
83-
getDefaultValue: () => IastMetricsVerbosityLevel.Information,
83+
defaultValue: new(IastMetricsVerbosityLevel.Information, "information"),
8484
converter: value => value.ToLowerInvariant() switch
8585
{
8686
"off" => IastMetricsVerbosityLevel.Off,

tracer/src/Datadog.Trace/Logging/DirectSubmission/DirectLogSubmissionSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public DirectLogSubmissionSettings(IConfigurationSource? source, IConfigurationT
6969
MinimumLevel = config
7070
.WithKeys(ConfigurationKeys.DirectLogSubmission.MinimumLevel)
7171
.GetAs(
72-
() => new DefaultResult<DirectSubmissionLogLevel>(DefaultMinimumLevel, nameof(DirectSubmissionLogLevel.Information)),
72+
defaultValue: new(DefaultMinimumLevel, nameof(DirectSubmissionLogLevel.Information)),
7373
converter: x => DirectSubmissionLogLevelExtensions.Parse(x) ?? ParsingResult<DirectSubmissionLogLevel>.Failure(),
7474
validator: null);
7575

tracer/src/Datadog.Trace/Logging/Internal/DatadogLoggingFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ private static string GetDefaultLogDirectory(IConfigurationSource source, IConfi
252252
var maxLogFileSize = new ConfigurationBuilder(source, telemetry)
253253
.WithKeys(ConfigurationKeys.MaxLogFileSize)
254254
.GetAs(
255-
() => DefaultMaxLogFileSize,
255+
defaultValue: new(DefaultMaxLogFileSize, DefaultMaxLogFileSize.ToString(CultureInfo.InvariantCulture)),
256256
converter: x => long.TryParse(x, out var maxLogSize)
257257
? maxLogSize
258258
: ParsingResult<long>.Failure(),

tracer/test/Datadog.Trace.Tests/Configuration/Telemetry/ConfigurationBuilderTests.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ public void GetAs_ReturnsTheExpectedValue(string value, string expected)
564564
var actual = new ConfigurationBuilder(source, _telemetry)
565565
.WithKeys("key")
566566
.GetAs<Guid>(
567-
getDefaultValue: () => _default,
567+
defaultValue: new(_default, Default),
568568
validator: null,
569569
converter: _converter);
570570

@@ -584,7 +584,7 @@ public void GetAs_ReturnsTheExpectedValueWithNullableGuid(string value, string e
584584
var actual = new ConfigurationBuilder(source, _telemetry)
585585
.WithKeys("key")
586586
.GetAs<Guid?>(
587-
getDefaultValue: () => _default,
587+
defaultValue: new(_default, Default),
588588
validator: null,
589589
converter: _nullableConverter);
590590

@@ -605,7 +605,7 @@ public void GetAs_RecordsTheDefaultValueInTelemetry(string value)
605605
var actual = new ConfigurationBuilder(source, telemetry)
606606
.WithKeys(key)
607607
.GetAs<Guid?>(
608-
getDefaultValue: () => _default,
608+
defaultValue: new(_default, Default),
609609
validator: null,
610610
converter: _nullableConverter);
611611

@@ -615,7 +615,7 @@ public void GetAs_RecordsTheDefaultValueInTelemetry(string value)
615615
.OrderByDescending(x => x.SeqId)
616616
.FirstOrDefault()
617617
.Value;
618-
finalValue.Should().Be(_default.ToString());
618+
finalValue.Should().Be(Default);
619619
}
620620

621621
[Theory]
@@ -677,7 +677,7 @@ public void GetAs_ReturnsDefaultWhenValidationFails(string value, string expecte
677677
var actual = new ConfigurationBuilder(source, _telemetry)
678678
.WithKeys("key")
679679
.GetAs<Guid>(
680-
getDefaultValue: () => _default,
680+
defaultValue: new(_default, Default),
681681
validator: x => x.ToString()[0] != '5',
682682
converter: _converter);
683683

0 commit comments

Comments
 (0)