public void ProcessBatch_Subscriberfails_WithFakeStoreProvider() { TestUtils.TestHelper.autoEvent = new AutoResetEvent(false); var m = new Message(); var messagePacket = TestUtils.TestHelper.BuildAMessage<Message>(m) .WithSubscriberMetadataFor(typeof(TestUtils.SpeedySubscriberGuaranteedExceptions<Message>), false, false).GetMessage(); var beforeRetryCount = messagePacket.SubscriberMetadataList[0].RetryCount; MessagePacket<Message> outputPostProcessMP = default(MessagePacket<Message>); string outputMessageId = string.Empty; var MessagePubSubChannel = new PublishSubscribeChannel<Message>(); var stubStoreProvider = new StubIStoreProvider<Message> { ProcessStoreAsBatchFuncOfMessagePacketOfT0StringBoolean = funct => MessagePubSubChannel.HandleMessageForBatchProcessing(messagePacket, messagePacket.MessageId.ToString()), UpdateMessageStoreMessagePacketOfT0 = UpdatedMessagepacket => { outputPostProcessMP = UpdatedMessagepacket; TestUtils.TestHelper.autoEvent.Set(); return; }, SubscriberGroupCompletedForMessageString = messageId => { Assert.IsTrue(messagePacket.MessageId.ToString() == messageId); return true; } }; MessagePubSubChannel.StorageProvider = stubStoreProvider; MessagePubSubChannel.AddSubscriberType(typeof(TestUtils.SpeedySubscriberGuaranteedExceptions<Message>)).WithTimeToExpire(new TimeSpan(0, 0, 0, 1)); MessagePubSubChannel.ProcessBatch(); TestUtils.TestHelper.autoEvent.WaitOne(); //new TimeSpan(0, 0, 0, 5, 0) Assert.IsTrue(outputPostProcessMP.SubscriberMetadataList[0].RetryCount == messagePacket.SubscriberMetadataList[0].RetryCount + 1); Assert.IsTrue(outputPostProcessMP.MessageId == messagePacket.MessageId); Assert.IsTrue(outputPostProcessMP.SubscriberMetadataList.Count == 1); Assert.IsTrue(outputPostProcessMP.SubscriberMetadataList[0].FailedOrTimedOut == true); }