public void Failing_poller_should_not_interfere_with_other_pollers() { var builder = new ContainerBuilder(); builder.Register(c => new TestPoller("p1", 0, 10)).Named<IPoller>("svc1").SingleInstance(); builder.Register(c => new FailingPoller("p2", 2, 10)).Named<IPoller>("svc2").SingleInstance(); var sut = new MultiPoller(builder.Build(), new[] { "svc1", "svc2" }, TimeSpan.Zero); sut.Start(); WaitFor(48); sut.Stop(); Log.ToArray().Should().Have.SameSequenceAs(new[] { "p1 ctor", "p2 ctor", "p1 poll", "p2 error", "p1 poll", "p2 error", "p1 poll", "p2 error", "p1 poll", "p2 error", "p1 poll", "p2 error", }); }
public static void Main() { BasicConfigurator.Configure(); var builder = new ContainerBuilder(); builder.Register(c => new Poller("svc1")).Named<IPoller>("svc1").InstancePerLifetimeScope(); builder.Register(c => new Poller("svc2")).Named<IPoller>("svc2").InstancePerLifetimeScope(); builder.Register(c => new Poller("svc3")).Named<IPoller>("svc3").InstancePerLifetimeScope(); IContainer container = builder.Build(); var multiService = new MultiPoller(container, new[] { "svc1", "svc2", "svc4" }, TimeSpan.FromSeconds(5)); HostFactory.Run(hcfg => { hcfg.UseLog4Net(); hcfg.Service<MultiPoller>(scfg => { scfg.ConstructUsing(() => multiService); scfg.WhenStarted(svc => svc.Start()); scfg.WhenStopped(svc => svc.Stop()); }); }); }
public void Should_delegate_to_ioc_poller_lifetime() { var builder = new ContainerBuilder(); builder.Register(c => new TestPoller("p1", 0, 10)).Named<IPoller>("svc1").InstancePerLifetimeScope(); var sut = new MultiPoller(builder.Build(), new []{"svc1"}, TimeSpan.Zero); sut.Start(); WaitFor(45); sut.Stop(); Log.ToArray().Should().Have.SameSequenceAs(new[] { "p1 ctor", "p1 poll", "p1 ctor", "p1 poll", "p1 ctor", "p1 poll", "p1 ctor", "p1 poll", "p1 ctor", "p1 poll" }); }
public void Should_execute_pollers_in_parallel() { var builder = new ContainerBuilder(); builder.Register(c => new TestPoller("p1", 0, 10)).Named<IPoller>("svc1").SingleInstance(); builder.Register(c => new TestPoller("p2", 2, 10)).Named<IPoller>("svc2").SingleInstance(); var container = builder.Build(); var sut = new MultiPoller(container, new[] { "svc1", "svc2" }, TimeSpan.Zero); sut.Start(); WaitFor(48); sut.Stop(); Log.ToArray().Should().Have.SameSequenceAs(new[] { "p1 ctor", "p2 ctor", "p1 poll", "p2 poll", "p1 poll", "p2 poll", "p1 poll", "p2 poll", "p1 poll", "p2 poll", "p1 poll", "p2 poll", }); }