public void ReturnsIntegrationWhenUsingIncorrectCasing() { var settings = new IntegrationSettingsCollection(null); var log4NetByName = settings["LOG4NET"]; var log4NetById = settings[nameof(IntegrationId.Log4Net)]; log4NetById.Should().Be(log4NetByName); }
public void ReturnsIntegrationWhenUsingIncorrectCasing() { var mutable = new IntegrationSettingsCollection(null); var settings = new ImmutableIntegrationSettingsCollection(mutable, new HashSet <string>()); var log4NetByName = settings["LOG4NET"]; var log4NetById = settings[IntegrationId.Log4Net]; log4NetById.Should().Be(log4NetByName); }
public void ReturnsDefaultSettingsForUnknownIntegration() { var mutable = new IntegrationSettingsCollection(null); var settings = new ImmutableIntegrationSettingsCollection(mutable, new HashSet <string>()); var integrationName = "blobby"; var instance1 = settings[integrationName]; instance1.IntegrationName.Should().Be(integrationName); instance1.Enabled.Should().BeNull(); var instance2 = settings[integrationName]; instance2.Should().NotBe(instance1); }
/// <summary> /// Initializes a new instance of the <see cref="TracerSettings"/> class /// using the specified <see cref="IConfigurationSource"/> to initialize values. /// </summary> /// <param name="source">The <see cref="IConfigurationSource"/> to use when retrieving configuration values.</param> private TracerSettings(IConfigurationSource source) : base(source) { TracesExporter = ParseTracesExporter(source); ConsoleExporterEnabled = source.GetBool(ConfigurationKeys.Traces.ConsoleExporterEnabled) ?? false; var instrumentations = new Dictionary <string, TracerInstrumentation>(); var enabledInstrumentations = source.GetString(ConfigurationKeys.Traces.Instrumentations); if (enabledInstrumentations != null) { foreach (var instrumentation in enabledInstrumentations.Split(Separator)) { if (Enum.TryParse(instrumentation, out TracerInstrumentation parsedType)) { instrumentations[instrumentation] = parsedType; } else { throw new FormatException($"The \"{instrumentation}\" is not recognized as supported trace instrumentation and cannot be enabled"); } } } var disabledInstrumentations = source.GetString(ConfigurationKeys.Traces.DisabledInstrumentations); if (disabledInstrumentations != null) { foreach (var instrumentation in disabledInstrumentations.Split(Separator)) { instrumentations.Remove(instrumentation); } } EnabledInstrumentations = instrumentations.Values.ToList(); var providerPlugins = source.GetString(ConfigurationKeys.Traces.ProviderPlugins); if (providerPlugins != null) { foreach (var pluginAssemblyQualifiedName in providerPlugins.Split(DotNetQualifiedNameSeparator)) { TracerPlugins.Add(pluginAssemblyQualifiedName); } } var additionalSources = source.GetString(ConfigurationKeys.Traces.AdditionalSources); if (additionalSources != null) { foreach (var sourceName in additionalSources.Split(Separator)) { ActivitySources.Add(sourceName); } } var legacySources = source.GetString(ConfigurationKeys.Traces.LegacySources); if (legacySources != null) { foreach (var sourceName in legacySources.Split(Separator)) { LegacySources.Add(sourceName); } } TraceEnabled = source.GetBool(ConfigurationKeys.Traces.Enabled) ?? true; LoadTracerAtStartup = source.GetBool(ConfigurationKeys.Traces.LoadTracerAtStartup) ?? true; Integrations = new IntegrationSettingsCollection(source); }
public void PopulatesFromBuilderCorrectly() { var source = new NameValueConfigurationSource(new NameValueCollection { { "DD_TRACE_FOO_ENABLED", "true" }, { "DD_TRACE_FOO_ANALYTICS_ENABLED", "true" }, { "DD_TRACE_FOO_ANALYTICS_SAMPLE_RATE", "0.2" }, { "DD_TRACE_BAR_ENABLED", "false" }, { "DD_TRACE_BAR_ANALYTICS_ENABLED", "false" }, { "DD_BAZ_ENABLED", "false" }, { "DD_BAZ_ANALYTICS_ENABLED", "false" }, { "DD_BAZ_ANALYTICS_SAMPLE_RATE", "0.6" }, { "DD_TRACE_Kafka_ENABLED", "true" }, { "DD_TRACE_Kafka_ANALYTICS_ENABLED", "true" }, { "DD_TRACE_Kafka_ANALYTICS_SAMPLE_RATE", "0.2" }, { "DD_TRACE_GraphQL_ENABLED", "false" }, { "DD_TRACE_GraphQL_ANALYTICS_ENABLED", "false" }, { "DD_Wcf_ENABLED", "false" }, { "DD_Wcf_ANALYTICS_ENABLED", "false" }, { "DD_Wcf_ANALYTICS_SAMPLE_RATE", "0.2" }, { "DD_Msmq_ENABLED", "true" }, { "DD_TRACE_stackexchangeredis_ENABLED", "false" }, }); var disabledIntegrations = new HashSet <string> { "foobar", "MongoDb", "Msmq" }; var builderCollection = new IntegrationSettingsCollection(source); var final = new ImmutableIntegrationSettingsCollection(builderCollection, disabledIntegrations); var kafka = final[IntegrationId.Kafka]; kafka.Enabled.Should().BeTrue(); kafka.AnalyticsEnabled.Should().BeTrue(); kafka.AnalyticsSampleRate.Should().Be(0.2); var graphql = final[IntegrationId.GraphQL]; graphql.Enabled.Should().BeFalse(); graphql.AnalyticsEnabled.Should().BeFalse(); graphql.AnalyticsSampleRate.Should().Be(1.0); var wcf = final[IntegrationId.Wcf]; wcf.Enabled.Should().BeFalse(); wcf.AnalyticsEnabled.Should().BeFalse(); wcf.AnalyticsSampleRate.Should().Be(0.2); var mongodb = final[IntegrationId.MongoDb]; mongodb.Enabled.Should().BeFalse(); var msmq = final[IntegrationId.Msmq]; msmq.Enabled.Should().BeFalse(); var consmos = final[IntegrationId.CosmosDb]; consmos.Enabled.Should().BeNull(); var redis = final[IntegrationId.StackExchangeRedis]; redis.Enabled.Should().BeFalse(); }