Пример #1
0
        public void Dispose()
        {
            if (MetricsCollector is IDisposable disposableMetricsCollector)
            {
                disposableMetricsCollector.Dispose();
            }

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

            CentralConfigFetcher?.Dispose();
        }
        public void Should_Update_Logger_That_Is_ILogLevelSwitchable()
        {
            var logLevel   = LogLevel.Trace;
            var testLogger = new ConsoleLogger(logLevel);

            var configSnapshotFromReader = new MockConfigSnapshot(testLogger, logLevel: "Trace");
            var configStore = new ConfigStore(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.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();

            // wait up to 60 seconds for the log level to change. Change can often be slower in CI
            var count = 0;

            while (count < 60 && testLogger.LogLevelSwitch.Level == logLevel)
            {
                count++;
                Thread.Sleep(TimeSpan.FromSeconds(1));
            }

            testLogger.LogLevelSwitch.Level.Should().Be(LogLevel.Error);
        }
Пример #3
0
        public void CentralConfigNoUserNamePwPrinted()
        {
            var userName = "******";
            var pw       = "def";

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

            var configStore = new ConfigStore(configReader, inMemoryLogger);

            using var centralConfigFetcher =
                      new CentralConfigFetcher(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_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);
        }