コード例 #1
0
        public void TestInit()
        {
            this.config            = new Configuration();
            this.allSettingsView   = new AllSettingsConfigurationView();
            this.testSource        = new DebugConfigurationSource();
            this.appConfigSource   = new AppSettingsConfigurationSource();
            this.lockingTestSource = new DebugConfigurationSource();

            this.config.RegisterConfigurationView(this.allSettingsView);
            this.config.RegisterConfigurationSource(this.appConfigSource);
            this.config.RegisterConfigurationSource(this.testSource);
            this.config.RegisterConfigurationSource(this.lockingTestSource);

            this.lockingTestSource.TryAddOrUpdateSetting(ConfigNames.LockedSetting, "locked");
            this.lockingTestSource.TryLockSetting(ConfigNames.LockedSetting);
        }
コード例 #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);
        }