public void Log_Viewer_Test() { // This test should be manually verified by running Log Viewer const int numMessagesToLog = 100; ConsoleLogger consoleLogger = new ConsoleLogger(); TestEndpoint sourceEndpoint = new TestEndpoint(); using (LogService sourceLogger = new LogService()) { sourceLogger.RegisterEndpoint(sourceEndpoint); sourceLogger.RegisterEndpoint(consoleLogger); sourceLogger.RegisterEndpoint( new WcfLogger( sourceLogger, new NetNamedPipeBinding(), DefaultWcfEndpoints.GetNetNamedPipeEndpointAddress(), 10, TimeSpan.FromMilliseconds(250))); Random r = new Random(); for (int i = 0; i < numMessagesToLog; i++) { sourceLogger.LogInfo($"Test message {i}"); Thread.Sleep(r.Next(50)); } while (sourceEndpoint.NumMessagesLogged < numMessagesToLog) { Thread.Sleep(16); } Thread.Sleep(1000); sourceLogger.SignalShutDown(); } }
public void Wcf_Logging_Test() { const int numMessagesToLog = 21; var baseAddresses = new[] { DefaultWcfEndpoints.GetNetNamedPipeUri() }; DefaultWcfEndpoints.GetHttpEndpointAddress(); DefaultWcfEndpoints.GetNetTcpEndpointAddress(); DefaultWcfEndpoints.GetMsmqEndpointAddress(); TestEndpoint internalEndpoint = new TestEndpoint(); ConsoleLogger consoleLogger = new ConsoleLogger(); TestEndpoint destEndpoint = new TestEndpoint(); TestEndpoint sourceEndpoint = new TestEndpoint(); using (LogService destLogger = new LogService()) using (LogService sourceLogger = new LogService()) { destLogger.RegisterInternalEndpoint(internalEndpoint); destLogger.RegisterEndpoint(consoleLogger); destLogger.RegisterEndpoint(destEndpoint); using (WcfLogService.ServiceHolder serviceHolder = WcfLogService.Run( destLogger, baseAddresses, DefaultWcfEndpoints.DefaultNamedPipeServiceName, new NetNamedPipeBinding())) { Assert.IsTrue(serviceHolder.IsRunning); // Wait for the WCF service to spin up. while (internalEndpoint.NumMessagesLogged == 0) { Thread.Sleep(16); } WcfLoggerConfigView configView = new WcfLoggerConfigView(); DebugConfigurationSource configSource = new DebugConfigurationSource(); Configuration config = new Configuration(); config.RegisterConfigurationSource(configSource); config.RegisterConfigurationView(configView); configSource.TryAddOrUpdateSetting("binding", "netHttp"); configSource.TryAddOrUpdateSetting("logfiledirectory", "dir"); configSource.TryAddOrUpdateSetting("logfileprefix", "prefix"); configSource.TryAddOrUpdateSetting("servicename", "service"); configSource.TryAddOrUpdateSetting("uri", "uri"); using (new WcfLogger( destLogger, new BasicHttpBinding(), new EndpointAddress("http://FakeEndpoint"))) { } using (WcfLogger wcfLogger = new WcfLogger( destLogger, new NetNamedPipeBinding(), DefaultWcfEndpoints.GetNetNamedPipeEndpointAddress(), 10, TimeSpan.FromMilliseconds(250))) { sourceLogger.RegisterEndpoint(consoleLogger); sourceLogger.RegisterEndpoint(sourceEndpoint); sourceLogger.RegisterEndpoint(wcfLogger); Random r = new Random(); for (int i = 0; i < numMessagesToLog; i++) { sourceLogger.LogInfo($"Test message {i}"); Thread.Sleep(r.Next(50)); } while (destEndpoint.NumMessagesLogged < numMessagesToLog) { } sourceLogger.SignalShutDown(TimeSpan.FromSeconds(5)); destLogger.SignalShutDown(TimeSpan.FromSeconds(5)); } serviceHolder.Shutdown(TimeSpan.FromMilliseconds(-1)); } } Assert.AreEqual(numMessagesToLog, destEndpoint.NumMessagesLogged); }