Пример #1
0
        public void WhenNoTimeoutProvided_TakesDefault()
        {
            // arrange
            var ra  = new RequestA();
            var rb  = new RequestB();
            var t0  = DateTimeOffset.UtcNow;
            var t10 = t0.AddSeconds(11);
            var t20 = t0.AddSeconds(21);

            // act
            var raTask = _bus.Send(ra);
            var rbTask = _bus.Send(rb);

            // when 10 seconds passed
            _bus.CurrentTimeProvider = () => t10;
            Thread.Sleep(1200); // give the internal cleanup timer a chance to execute

            // assert
            raTask.IsCanceled.Should().BeTrue();
            rbTask.IsCanceled.Should().BeFalse();

            // when 20 seconds passed
            _bus.CurrentTimeProvider = () => t20;
            Thread.Sleep(1200); // give the internal cleanup timer a chance to execute

            rbTask.IsCanceled.Should().BeTrue();
        }
        public void WhenNoTimeoutProvided_TakesDefaultTimeoutForRequestType()
        {
            // arrange
            var ra = new RequestA();
            var rb = new RequestB();

            // act
            var raTask = _bus.Send(ra);
            var rbTask = _bus.Send(rb);

            WaitForTasks(2000, raTask, rbTask);

            // after 10 seconds
            _timeNow = _timeZero.AddSeconds(timeoutForA_10 + 1);
            _bus.CleanPendingRequests();

            // assert
            raTask.IsCanceled.Should().BeTrue();
            rbTask.IsCanceled.Should().BeFalse();

            // adter 20 seconds
            _timeNow = _timeZero.AddSeconds(timeoutDefault_20 + 1);
            _bus.CleanPendingRequests();

            // assert
            rbTask.IsCanceled.Should().BeTrue();
        }