public async Task ReconfigureAsyncOnLogfile_Should_DisposeOldPreprocessorsAndRoutersAndReplaceConfiguration() { var preprocessor = new TestPreprocessor(); var router = new TestRouter <LogEvent <StandardLoglevel> >(); var logfileConfiguration = (new LogfileConfigurationBuilder <StandardLoglevel>() .AddPreprocessor(preprocessor) .AddRouter(router) as LogfileConfigurationBuilder <StandardLoglevel>) .Build(); var logfile = new Logfile <StandardLoglevel>(); await logfile.ReconfigureAsync(logfileConfiguration, default); var preprocessorDisposed = false; ((TestPreprocessor)logfile.Configuration.Preprocessors.OfType <TestPreprocessor>().Single()).DisposeCallback = () => preprocessorDisposed = true; var routerDisposed = false; ((TestRouter <LogEvent <StandardLoglevel> >)logfile.Configuration.Routers.Single()).DisposeCallback = () => routerDisposed = true; var newRouter = new TestRouter <LogEvent <StandardLoglevel> >(); var newLogfileConfiguration = (new LogfileConfigurationBuilder <StandardLoglevel>() .AddRouter(newRouter) as LogfileConfigurationBuilder <StandardLoglevel>) .Build(); await logfile.ReconfigureAsync(newLogfileConfiguration, default); preprocessorDisposed.Should().BeTrue(); routerDisposed.Should().BeTrue(); logfile.Configuration.Should().BeSameAs(newLogfileConfiguration); }
public async Task ReconfigureAsyncOnLogfileWithExceptionInPreprocessorDispose_Should_DisposeOtherPreprocessorsAnyway() { var preprocessor = new TestPreprocessor(); var router = new TestRouter <LogEvent <StandardLoglevel> >(); var logfileConfiguration = (new LogfileConfigurationBuilder <StandardLoglevel>() .AddPreprocessor(preprocessor) .AddRouter(router) as LogfileConfigurationBuilder <StandardLoglevel>) .Build(); var logfile = new Logfile <StandardLoglevel>(); await logfile.ReconfigureAsync(logfileConfiguration, default); ((TestPreprocessor)logfile.Configuration.Preprocessors.OfType <TestPreprocessor>().First()).DisposeCallback = () => throw new InvalidOperationException(); var preprocessorDisposed = false; ((TestPreprocessor)logfile.Configuration.Preprocessors.OfType <TestPreprocessor>().Last()).DisposeCallback = () => preprocessorDisposed = true; var newRouter = new TestRouter <LogEvent <StandardLoglevel> >(); var newLogfileConfiguration = (new LogfileConfigurationBuilder <StandardLoglevel>() .AddRouter(newRouter) as LogfileConfigurationBuilder <StandardLoglevel>) .Build(); await logfile.ReconfigureAsync(newLogfileConfiguration, default); preprocessorDisposed.Should().BeTrue(); logfile.Configuration.Should().BeSameAs(newLogfileConfiguration); }
public void Constructor_Should_SetProperties() { var router1 = new TestRouter <LogEvent <StandardLoglevel> >(); var routers = new IRouter <LogEvent <StandardLoglevel> >[] { router1 }; var preprocessor1 = new TestPreprocessor(); var preprocessors = new IRoutablePreprocessor <LogEvent <StandardLoglevel> >[] { preprocessor1 }; var logfileConfiguration = new LogfileConfiguration <StandardLoglevel>( routers, preprocessors, 1, 2, TimeSpan.FromMilliseconds(3), true); logfileConfiguration.Routers.Should().Contain(router1); logfileConfiguration.Preprocessors.Should().Contain(preprocessor1); logfileConfiguration.MaximumRoutablesQueueLength.Should().Be(1); logfileConfiguration.MaximumRoutablesForwardingCount.Should().Be(2); logfileConfiguration.WaitForMoreRoutablesForwardingDelay.Should().Be(TimeSpan.FromMilliseconds(3)); logfileConfiguration.IsDeveloperModeEnabled.Should().BeTrue(); }
public void Build_Should_CreateHubConfiguration() { var router1 = new TestRouter <LogEvent <StandardLoglevel> >(); var preprocessor1 = new TestPreprocessor(); var builder = new LogfileConfigurationBuilder <StandardLoglevel>(); builder.AllowLoglevels.Add(StandardLoglevel.Warning); builder.BlockLoglevels.Add(StandardLoglevel.Error); builder.Routers.Add(router1); builder.Preprocessors.Add(preprocessor1); builder.MaximumRoutableQueueLength = 1; builder.MaximumRoutablesForwardingCount = 2; builder.WaitForMoreRoutablesForwardingDelay = TimeSpan.FromMilliseconds(3); var logfileConfiguration = builder.Build(); logfileConfiguration.Routers.Should().Contain(router1); logfileConfiguration.Preprocessors.Should().Contain(preprocessor1); logfileConfiguration.MaximumRoutablesQueueLength.Should().Be(1); logfileConfiguration.MaximumRoutablesForwardingCount.Should().Be(2); logfileConfiguration.WaitForMoreRoutablesForwardingDelay.Should().Be(TimeSpan.FromMilliseconds(3)); logfileConfiguration.Preprocessors.OfType <LoglevelFilter <StandardLoglevel> >().Single(); }