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"); }
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)); }