Ejemplo n.º 1
0
        public async Task IncrementsExecutionCounterOnCallbackException()
        {
            var eventStoreRepository = A.Fake <IMessageQueueRepository>();

            A.CallTo(() => eventStoreRepository.GetDeadLetterListLength <TestMessage>()).Returns(1);
            var message = new TestMessage {
                Id = "0"
            };

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

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

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

            A.CallTo(() => eventStoreRepository.UpdateRetryData(A <IMessage> ._, A <string> ._)).MustHaveHappened();
            A.CallTo(() => eventStoreRepository.DeleteFromDeadLetterQueue <TestMessage>(A <RedisValue> ._, A <IMessage> .That.Matches(x => x.Id == message.Id))).MustNotHaveHappened();
        }
Ejemplo n.º 2
0
        public async Task DoesNotFailWithLargeNumberOfRetries()
        {
            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, eventStoreRepository);

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

            Assert.IsTrue(retryClass.CallBack1Called);
        }