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",
            });
        }
Exemple #2
0
        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",
            });
        }