public void TestTailWithExampleLog()
        {
            File.Delete("test.log");

            var tailfiber = new PoolFiber();
            var reset = new AutoResetEvent(false);

            using (var tail = new Tail())
            {
                var tailchannel = new Channel<string>();
                tailchannel.Subscribe(tailfiber, str =>
                                                     {
                                                         tail.OutputRecievedEvent += OnOutputRecievedEvent;
                                                         tail.Start("test.log");
                                                     });

                tailfiber.Start();

                using (var testlog = new CreateTestLog("test.log"))
                {
                    tailchannel.Publish("");
                    testlog.StartWritingToTestLog(10);
                    testlog.Stop(); //don't really need to call this, but heh, what the...
                }

                tail.Stop();
                while(tail.State != TailState.Stopped){/*wait for tail to stop*/}
            }

            File.Delete("test.log");
        }
Пример #2
0
        public void TestFollowerWithExampleLog()
        {
            IWindsorContainer container = new WindsorContainer();
            // need to have the eventaggregator registered completely before other stuff.
            container
                .AddFacility<EventAutoRegistrationFacility>()
                .AddFacility<UnsubscriberInterceptorFacility>()
                .Register(
                Component.For<IContextFactory>().ImplementedBy<ContextFactory>(),
                Component.For<IChannelManager>().ImplementedBy<ChannelManager>().LifeStyle.Singleton,
                Component.For<IListenerDisposerManager>().ImplementedBy<ListenerDisposalManager>().LifeStyle.Singleton,
                Component.For<IEventAggregator>().ImplementedBy<EventAggregator>().LifeStyle.Singleton,
                Component.For<IPublisher>().ImplementedBy<EventPublisher>().LifeStyle.Singleton
                );
            container
                .Register(
                Component.For<IFileFollower>().ImplementedBy<FileFollower>()
                );
            var reset = new AutoResetEvent(false);

            using (var follower = container.Resolve<IFileFollower>())
            {
                var broker = container.Resolve<IEventAggregator>();

                broker.AddListener<FollowerErrorMessage>(message => Console.WriteLine(message.Error.Message));

                broker.AddListener<FollowerStoppedMessage>(message =>
                                                               {
                                                                   Console.WriteLine("Follower Stopped");
                                                                   reset.Set();
                                                               });

                broker.AddListener<FollowerDataRecievedMessage>(message =>
                                                                Console.WriteLine(message.RecievedDateTime.ToString() +
                                                                                  ":" +
                                                                                  message.Output));

                File.Delete("followerwithexamplelog.txt");
                using (var testLog = new CreateTestLog("followerwithexamplelog.txt"))
                {
                    broker.SendMessage(new StartFollowingFileMessage("followerwithexamplelog.txt"));

                    testLog.StartWritingToTestLog(10);
                    testLog.Stop();
                }

                broker.SendMessage(new StopFollowingFileMessage(follower.Identifier));

            }

            File.Delete("followerwithexamplelog.txt");

            Assert.IsTrue(reset.WaitOne(30000, false));
        }