Пример #1
0
        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();
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        public void Logging_Test()
        {
            const int    messagesToLog          = 100;
            const int    expectedCount          = messagesToLog * 14;
            const int    maxMemoryLoggerEntries = expectedCount / 2;
            TestEndpoint testEndpoint           = new TestEndpoint();
            MemoryLogger memoryLogger           = new MemoryLogger();

            TestUtils.TestForError <ArgumentOutOfRangeException>(
                () => memoryLogger.MaxNumEntries = -1,
                "Should not allow a negative value for MaxNumEntries.");
            memoryLogger.MaxNumEntries = maxMemoryLoggerEntries;

            using (ConsoleLogger consoleLogger = new ConsoleLogger())
                using (TextLogger textLogger = new TextLogger())
                    using (LogService logger = new LogService())
                    {
                        textLogger.MaxLogFileEntries = maxMemoryLoggerEntries;

                        logger.RegisterEndpoint(testEndpoint);
                        logger.RegisterEndpoint(consoleLogger);
                        logger.RegisterEndpoint(new DebugTraceLogger());
                        logger.RegisterEndpoint(memoryLogger);
                        logger.RegisterEndpoint(textLogger);
                        logger.AddFeature("Test Feature");
                        logger.AddFeature("Test Feature2");
                        logger.RemoveFeature("Test Feature2");
                        ConsoleLogger removeLogger = new ConsoleLogger();
                        logger.RegisterEndpoint(removeLogger);
                        logger.UnregisterEndpoint(removeLogger);
                        logger.RegisterInternalEndpoint(removeLogger);
                        logger.UnregisterInternalEndpoint(removeLogger);

                        logger.RegisterEndpoint(
                            new TextLogger(
                                Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "TestLogs"),
                                "TestLogs_"));

                        for (int i = 0; i < messagesToLog; i++)
                        {
                            logger.LogInfo($"Test info message {i}");
                            logger.LogInfo("Test Feature", $"Test feature info message {i}");

                            logger.LogDebug($"Test debug message {i}");
                            logger.LogDebug("Test Feature", $"Test feature debug message {i}");

                            logger.LogVerbose($"Test verbose message {i}");
                            logger.LogVerbose("Test Feature", $"Test feature verbose message {i}");

                            logger.LogStatus($"Test status message {i}");
                            logger.LogStatus("Test Feature", $"Test feature status message {i}");

                            logger.LogWarning($"Test warning message {i}");
                            logger.LogWarning("Test Feature", $"Test feature warning message {i}");

                            logger.LogCritical($"Test critical message {i}");
                            logger.LogCritical("Test Feature", $"Test feature critical message {i}");

                            logger.LogFatal($"Test fatal message {i}");
                            logger.LogFatal("Test Feature", $"Test feature fatal message {i}");
                        }

                        logger.SignalShutDown(TimeSpan.FromSeconds(5));
                        logger.SignalShutDown();
                    }

            Assert.AreEqual(expectedCount, testEndpoint.NumMessagesLogged);
            Assert.AreEqual(maxMemoryLoggerEntries, memoryLogger.Entries.Count);
        }