Esempio n. 1
0
        public async Task DoesNotFailWithLargeNumberOfRetries()
        {
            var logger = A.Fake <ILogger>();
            var eventStoreRepository = A.Fake <IMessageQueueRepository>();

            A.CallTo(() => eventStoreRepository.GetDeadLetterListLength <TestMessage>()).Returns(1);
            var message = new TestMessage {
                Id = "0", TimeStamp = DateTimeOffset.UtcNow.AddHours(-1)
            };

            A.CallTo(() => eventStoreRepository.GetUnprocessedMessage <TestMessage>(0)).Returns(JsonConvert.SerializeObject(message));
            var retryData = new RetryData
            {
                LastRetryTime = DateTimeOffset.UtcNow.AddHours(-1),
                RetryCount    = 4000
            };

            A.CallTo(() => eventStoreRepository.GetRetryData(A <TestMessage> ._)).Returns(retryData);
            var subscriber = A.Fake <IEventSubscriber>();
            var retryClass = new TestRetryHoursSubscription(subscriber, logger, eventStoreRepository);

            await retryClass.RetryAsync().ConfigureAwait(false);

            Assert.IsTrue(retryClass.CallBack1Called);
        }
Esempio n. 2
0
        public async Task CallsCallbackIfTimeToLiveHasNotBeenExceeded()
        {
            var logger = A.Fake <ILogger>();
            var eventStoreRepository = A.Fake <IMessageQueueRepository>();

            A.CallTo(() => eventStoreRepository.GetDeadLetterListLength <TestMessage>()).Returns(1);
            var message = new TestMessage {
                Id = "0", TimeStamp = DateTimeOffset.UtcNow.AddHours(-1)
            };

            A.CallTo(() => eventStoreRepository.GetUnprocessedMessage <TestMessage>(0)).Returns(JsonConvert.SerializeObject(message));
            var retryData = new RetryData
            {
                LastRetryTime = DateTimeOffset.UtcNow.AddHours(-1),
                RetryCount    = 6
            };

            A.CallTo(() => eventStoreRepository.GetRetryData(A <TestMessage> ._)).Returns(retryData);
            var subscriber = A.Fake <IEventSubscriber>();
            var retryClass = new TestRetryHoursSubscription(subscriber, logger, eventStoreRepository);

            await retryClass.RetryAsync().ConfigureAwait(false);

            Assert.IsTrue(retryClass.CallBack1Called);
            A.CallTo(() => eventStoreRepository.DeleteFromDeadLetterQueue <TestMessage>(A <RedisValue> ._, A <IMessage> .That.Matches(x => x.Id == message.Id))).MustHaveHappened();
        }
        public async Task CallsCallbackIfRetryCounterIsGreaterThanThresholdButRetryForHoursIsSetAndHasNotBeenExceeded()
        {
            var logger = A.Fake <ILogger>();
            var eventStoreRepository = A.Fake <IMessageQueueRepository>();

            A.CallTo(() => eventStoreRepository.GetDeadLetterListLength <TestMessage>()).Returns(1);
            var message = new TestMessage {
                Id = "0", TimeStamp = DateTimeOffset.UtcNow.AddHours(-1)
            };

            A.CallTo(() => eventStoreRepository.GetUnprocessedMessage <TestMessage>(0)).Returns(JsonConvert.SerializeObject(message));
            var retryData = new RetryData
            {
                LastRetryTime = DateTimeOffset.UtcNow.AddHours(-1),
                RetryCount    = 6
            };

            A.CallTo(() => eventStoreRepository.GetRetryData(A <TestMessage> ._)).Returns(retryData);
            var subscriber = A.Fake <IEventSubscriber>();
            var retryClass = new TestRetryHoursSubscription(subscriber, logger, eventStoreRepository);

            await retryClass.RetryAsync().ConfigureAwait(false);

            Assert.IsTrue(retryClass.CallBack1Called);
        }