public void Should_execute_services_in_parallel()
        {
            _target = new MultiPollerService(new Func<IService>[] {
                () => new TestService("S1", _log),
                () => new TestService("S2", _log)
            }, TimeSpan.Zero);

            _target.Start();
            Thread.Sleep(45 * TestSlowness);
            _target.Stop();

            _log.ToArray().Should().Have.SameSequenceAs(new[] {
                "S1: create",
                "S2: create",
                "S1: work",
                "S2: work",
                "S1: work",
                "S2: work",
                "S1: work",
                "S2: work",
                "S1: work",
                "S2: work",
                "S1: work",
                "S2: work"
            });
        }
        public void Failing_service_should_not_interfere_with_other_services()
        {
            _target = new MultiPollerService(new Func<IService>[] {
                () => new TestService("S1", _log),
                () => new TestService("S2", _log) { ExceptionFreq = 1 },
            }, TimeSpan.Zero);

            _target.Start();
            Thread.Sleep(45 * TestSlowness);
            _target.Stop();

            _log.Where(x=>x.StartsWith("S1")).Should().Have.SameSequenceAs(new[] {
                "S1: create",
                "S1: work",
                "S1: work",
                "S1: work",
                "S1: work",
                "S1: work"
            });
        }
        public void Should_reinit_after_exception()
        {
            _target = new MultiPollerService(new Func<IService>[] {
                () => new TestService("S1", _log) { ExceptionFreq = 2 }
            }, TimeSpan.Zero);

            _target.Start();
            Thread.Sleep(45 * TestSlowness);
            _target.Stop();

            _log.ToArray().Should().Have.SameSequenceAs(new[] {
                "S1: create",
                "S1: work",
                "S1: exception",
                "S1: create",
                "S1: work",
                "S1: exception",
                "S1: create",
                "S1: work"
            });
        }