예제 #1
0
        public void SetTransactionSampleRateTest()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.TransactionSampleRate, "0.789");
            var config = new EnvironmentConfigurationReader();

            config.TransactionSampleRate.Should().Be(0.789);
        }
예제 #2
0
        public void SpanFramesMinDurationDefaultValuesInSync()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.SpanFramesMinDuration, DefaultValues.SpanFramesMinDuration);
            var config = new EnvironmentConfigurationReader(new NoopLogger());

            config.SpanFramesMinDurationInMilliseconds.Should().Be(DefaultValues.SpanFramesMinDurationInMilliseconds);
        }
예제 #3
0
        public void TransactionMaxSpansTest(string configurationValue, int expectedValue)
        {
            Environment.SetEnvironmentVariable(EnvVarNames.TransactionMaxSpans, configurationValue);
            var reader = new EnvironmentConfigurationReader();

            reader.TransactionMaxSpans.Should().Be(expectedValue);
        }
예제 #4
0
        public void SetCaptureHeadersTest()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.CaptureHeaders, "false");
            var config = new EnvironmentConfigurationReader();

            config.CaptureHeaders.Should().Be(false);
        }
예제 #5
0
        private static double MetricsIntervalTestCommon(string configValue)
        {
            Environment.SetEnvironmentVariable(EnvVarNames.MetricsInterval, configValue);
            var testLogger = new TestLogger();
            var config     = new EnvironmentConfigurationReader(testLogger);

            return(config.MetricsIntervalInMilliseconds);
        }
예제 #6
0
        public void TransactionSampleRateExpectsDotForFloatingPoint()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.TransactionSampleRate, "0,789");
            var config = new EnvironmentConfigurationReader();

            // Since comma was used instead of dot then default value will be used
            config.TransactionSampleRate.Should().Be(DefaultValues.TransactionSampleRate);
        }
예제 #7
0
        public void SpanFramesMinDurationDefaultValuesInSync()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.MetricsInterval, DefaultValues.SpanFramesMinDuration);
            var testLogger = new TestLogger();
            var config     = new EnvironmentConfigurationReader(testLogger);

            config.SpanFramesMinDurationInMilliseconds.Should().Be(DefaultValues.SpanFramesMinDurationInMilliseconds);
        }
예제 #8
0
        public void SetSpanFramesMinDurationAndStackTraceLimit()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.SpanFramesMinDuration, DefaultValues.SpanFramesMinDuration);
            Environment.SetEnvironmentVariable(EnvVarNames.StackTraceLimit, DefaultValues.StackTraceLimit.ToString());
            var config = new EnvironmentConfigurationReader(new NoopLogger());

            config.SpanFramesMinDurationInMilliseconds.Should().Be(DefaultValues.SpanFramesMinDurationInMilliseconds);
            config.StackTraceLimit.Should().Be(DefaultValues.StackTraceLimit);
        }
예제 #9
0
 public void SetCloudProviderTest()
 {
     foreach (var value in SupportedValues.CloudProviders)
     {
         Environment.SetEnvironmentVariable(EnvVarNames.CloudProvider, value);
         var config = new EnvironmentConfigurationReader();
         config.CloudProvider.Should().Be(value);
     }
 }
예제 #10
0
        public void LoggerNotNull()
        {
            Environment.SetEnvironmentVariable(EnvVarNames.ServerUrls, "localhost");             //invalid, it should be "http://localhost"
            var testLogger = new TestLogger();
            var config     = new EnvironmentConfigurationReader(testLogger);
            var serverUrl  = config.ServerUrls.FirstOrDefault();

            serverUrl.Should().NotBeNull();
            testLogger.Lines.Should().NotBeEmpty();
        }
예제 #11
0
 public void SetCaptureBodyTest()
 {
     //Possible values : "off", "all", "errors", "transactions"
     foreach (var value in SupportedValues.CaptureBodySupportedValues)
     {
         Environment.SetEnvironmentVariable(EnvVarNames.CaptureBody, value);
         var config = new EnvironmentConfigurationReader();
         config.CaptureBody.Should().Be(value);
     }
 }
예제 #12
0
        public void LoggerNotNull()
        {
            Environment.SetEnvironmentVariable(ConfigConsts.ConfigKeys.Urls, "localhost");             //invalid, it should be "http://localhost"
            var testLogger = new TestLogger();
            var config     = new EnvironmentConfigurationReader(testLogger);
            var serverUrl  = config.ServerUrls.FirstOrDefault();

            Assert.NotNull(serverUrl);
            Assert.NotEmpty(testLogger.Lines);
        }
예제 #13
0
        public void SetCaptureBodyContentTypesTest()
        {
            //

            var contentType = "application/x-www-form-urlencoded*";

            Environment.SetEnvironmentVariable(EnvVarNames.CaptureBodyContentTypes, contentType);
            var config = new EnvironmentConfigurationReader();

            config.CaptureBodyContentTypes.Should().HaveCount(1);
            config.CaptureBodyContentTypes[0].Should().Be(contentType);

            Environment.SetEnvironmentVariable(EnvVarNames.CaptureBodyContentTypes, "application/x-www-form-urlencoded*, text/*, application/json*, application/xml*");
            config = new EnvironmentConfigurationReader();
            config.CaptureBodyContentTypes.Should().HaveCount(4);
            config.CaptureBodyContentTypes[0].Should().Be("application/x-www-form-urlencoded*");
            config.CaptureBodyContentTypes[1].Should().Be("text/*");
            config.CaptureBodyContentTypes[2].Should().Be("application/json*");
            config.CaptureBodyContentTypes[3].Should().Be("application/xml*");
        }
        public void Should_Update_Logger_That_Is_ILogLevelSwitchable()
        {
            var testLogger = new ConsoleLogger(LogLevel.Trace);

            var environmentConfigurationReader = new EnvironmentConfigurationReader();
            var configSnapshotFromReader       = new ConfigSnapshotFromReader(environmentConfigurationReader, "local");
            var configStore = new ConfigStore(configSnapshotFromReader, testLogger);
            var service     = Service.GetDefaultService(environmentConfigurationReader, testLogger);

            var waitHandle = new ManualResetEvent(false);
            var handler    = new MockHttpMessageHandler();
            var configUrl  = BackendCommUtils.ApmServerEndpoints
                             .BuildGetConfigAbsoluteUrl(environmentConfigurationReader.ServerUrl, service);

            handler.When(configUrl.AbsoluteUri)
            .Respond(_ =>
            {
                waitHandle.Set();
                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Headers = { ETag = new EntityTagHeaderValue("\"etag\"") },
                    Content = new StringContent("{ \"log_level\": \"error\" }", Encoding.UTF8)
                });
            });

            var centralConfigFetcher = new CentralConfigFetcher(testLogger, configStore, service, handler);

            using (var agent = new ApmAgent(new TestAgentComponents(testLogger,
                                                                    centralConfigFetcher: centralConfigFetcher,
                                                                    payloadSender: new NoopPayloadSender())))
            {
                centralConfigFetcher.IsRunning.Should().BeTrue();
                waitHandle.WaitOne();
                Thread.Sleep(TimeSpan.FromSeconds(3));
            }

            testLogger.LogLevelSwitch.Level.Should().Be(LogLevel.Error);
        }
예제 #15
0
        public void DefaultTransactionMaxSpansTest()
        {
            var reader = new EnvironmentConfigurationReader();

            reader.TransactionMaxSpans.Should().Be(DefaultValues.TransactionMaxSpans);
        }
예제 #16
0
        public void DefaultCloudProviderEnvironmentTest()
        {
            var reader = new EnvironmentConfigurationReader();

            reader.CloudProvider.Should().Be(DefaultValues.CloudProvider);
        }