public void Dispose()
        {
            if (MetricsCollector is IDisposable disposableMetricsCollector)
            {
                disposableMetricsCollector.Dispose();
            }

            if (PayloadSender is IDisposable disposablePayloadSender)
            {
                disposablePayloadSender.Dispose();
            }

            CentralConfigurationFetcher?.Dispose();
        }
Example #2
0
        public void CentralConfigNoUserNamePwPrinted()
        {
            var userName = "******";
            var pw       = "def";

            var inMemoryLogger = new InMemoryBlockingLogger(LogLevel.Error);
            var configReader   = new MockConfiguration(serverUrls: $"http://{userName}:{pw}@localhost:8123", maxBatchEventCount: "0",
                                                       flushInterval: "0");

            var configStore = new ConfigurationStore(configReader, inMemoryLogger);

            using var centralConfigFetcher =
                      new CentralConfigurationFetcher(inMemoryLogger, configStore, Service.GetDefaultService(configReader, inMemoryLogger));

            inMemoryLogger.Lines.Should().HaveCount(1);
            inMemoryLogger.Lines.Should().NotContain(n => n.Contains($"{userName}:{pw}"));
            inMemoryLogger.Lines.Should().Contain(n => n.Contains("http://[REDACTED]:[REDACTED]@localhost:8123"));
        }
        public void Should_Sanitize_HttpRequestMessage_In_Log()
        {
            var testLogger  = new TestLogger(LogLevel.Trace);
            var secretToken = "secretToken";
            var serverUrl   = "http://*****:*****@localhost:8200";

            var configSnapshotFromReader = new MockConfiguration(testLogger, logLevel: "Trace", serverUrl: serverUrl, secretToken: secretToken);
            var configStore = new ConfigurationStore(configSnapshotFromReader, testLogger);
            var service     = Service.GetDefaultService(configSnapshotFromReader, testLogger);

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

            handler.When(configUrl.AbsoluteUri)
            .Respond(_ =>
            {
                waitHandle.Set();
                return(new HttpResponseMessage(HttpStatusCode.ServiceUnavailable));
            });

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

            waitHandle.WaitOne();

            var count = 0;

            while (!testLogger.Log.Contains("Exception was thrown while fetching configuration from APM Server and parsing it.") &&
                   count < 10)
            {
                Thread.Sleep(500);
                count++;
            }

            testLogger.Log
            .Should().Contain($"Authorization: {Consts.Redacted}").And.NotContain(secretToken)
            .And.NotContain(serverUrl);
        }