public void Given_The_Message_Cannot_Be_Processed_When_I_Set_A_DeadLetter_Then_The_Message_Is_Only_Handled_The_Correct_Amount_Of_Times() { //arrange const int maxAttempts = 5; var message1 = $"Hello, world {Guid.NewGuid()}"; _messageHandler.SetResult(false); //act _sut .WithProject(_projectId) .WithTopic(_topicId) .CreateSubscription(_subscriptionId, 60) .WithDeadLetter(_deadLetterTopicId, maxAttempts) .StartConsuming(_messageHandler, true); PublishMessage(message1); Thread.Sleep(20000); // allow time for processing the messages off the queue //assert Assert.IsNotNull(_messageHandler.MessagesHandled); Assert.AreEqual(0, _messageHandler.MessagesHandled.Count); Assert.IsTrue(_messageHandler.MessagesNotHandled.Count == maxAttempts || _messageHandler.MessagesNotHandled.Count == maxAttempts + 1); Assert.IsTrue(_messageHandler.MessagesNotHandled.Contains(message1)); }
public void Given_Subscribe_To_One_Message_When_I_Call_StopConsuming_Using_FluentApi_Then_Subsequent_Messages_Are_Not_Handled() { //arrange var message1 = $"Hello, world {Guid.NewGuid()}"; var message2 = $"Why, Hello {Guid.NewGuid()}"; //act _sut .WithProject(_projectId) .WithSubscription(_subscriptionId) .StartConsuming(_messageHandler); PublishMessage(message1); Thread.Sleep(5000); // allow time for processing the messages off the queue _sut.StopConsuming(); PublishMessage(message2); Thread.Sleep(5000); // allow time for processing the messages off the queue //assert Assert.IsNotNull(_messageHandler.MessagesHandled); Assert.AreEqual(1, _messageHandler.MessagesHandled.Count); Assert.IsTrue(_messageHandler.MessagesHandled.Contains(message1)); }
public void Given_The_Same_DeadLetter_For_Two_Subscriptions_When_A_Message_Fails_Then_The_Message__Put_On_The_One_Deadletter_Topic() { //arrange const int maxAttempts = 5; var message1 = $"Hello, world {Guid.NewGuid()}"; var message2 = $"Hello, world {Guid.NewGuid()}"; _messageHandler1.SetResult(false); _messageHandler2.SetResult(false); //act _sut1 .WithProject(_projectId) .WithTopic(_topic1Id) .CreateSubscription(_subscription1Id, 60) .WithDeadLetter(_deadLetterTopicId, maxAttempts) .StartConsuming(_messageHandler1, true); _sut2 .WithProject(_projectId) .WithTopic(_topic2Id) .CreateSubscription(_subscription2Id, 60) .WithDeadLetter(_deadLetterTopicId, maxAttempts) .StartConsuming(_messageHandler2, true); PublishMessage(message1, _topic1Id); PublishMessage(message2, _topic2Id); Thread.Sleep(20000); // allow time for processing the messages off the queue var subscription1Message = _messageHelper.GetMessage(_projectId, _subscription1Id); var subscription2Message = _messageHelper.GetMessage(_projectId, _subscription2Id); Thread.Sleep(20000); // allow time for processing the messages onto the deadletter queue var deadletterMessage1 = _messageHelper.GetMessage(_projectId, _deadLetterSubscriptionId); var deadletterMessage2 = _messageHelper.GetMessage(_projectId, _deadLetterSubscriptionId); //assert Assert.IsNull(subscription1Message); Assert.IsNull(subscription2Message); Assert.IsNotNull(deadletterMessage1); Assert.IsNotNull(deadletterMessage2); Assert.IsTrue(deadletterMessage1 == message1 || deadletterMessage2 == message1); Assert.IsTrue(deadletterMessage1 == message2 || deadletterMessage2 == message2); }
public void Given_A_Message_When_I_Call_PublishMessage_Then_The_Message_Is_Published() { //arrange var message = $"Hello, world {Guid.NewGuid()}"; _topicService.CreateTopic(_projectId, _topicId); _subscriptionService.CreateSubscription(_projectId, _topicId, _subscriptionId, _ackTimeoutInSeconds); //act _sut .WithProject(_projectId) .WithTopic(_topicId) .Publish(message); var result = _messageHelper.GetMessage(_projectId, _subscriptionId); //assert Assert.IsNotNull(result); Assert.AreEqual(message, result); }
public void Given_I_Supply_Valid_Arguments_I_Can_Create_And_Consume_From_A_Subscription_In_One_Call() { //arrange var message1 = $"Hello, world {Guid.NewGuid()}"; //act _sut .WithProject(_projectId) .WithTopic(_topicId) .CreateSubscription(_subscriptionId, 600) .StartConsuming(_messageHandler, true); PublishMessage(message1); Thread.Sleep(5000); // allow time for processing the messages off the queue //assert Assert.IsNotNull(_messageHandler.MessagesHandled); Assert.AreEqual(1, _messageHandler.MessagesHandled.Count); Assert.IsTrue(_messageHandler.MessagesHandled.Contains(message1)); }