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); }
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); }