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); }
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); }