예제 #1
0
        public void ReturnsIntegrationWhenUsingIncorrectCasing()
        {
            var settings = new IntegrationSettingsCollection(null);

            var log4NetByName = settings["LOG4NET"];
            var log4NetById   = settings[nameof(IntegrationId.Log4Net)];

            log4NetById.Should().Be(log4NetByName);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
    /// <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);
    }
예제 #5
0
        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();
        }