public async Task ShouldDeleteBadMessageFromQueue() { // Given var queueCreationOptions = new RabbitQueueCreationOptions { QueueName = Guid.NewGuid().ToString(), RetriesCount = 0, RetryInitialTimeout = TimeSpan.Zero, ExceptionHandlingPolicy = ExceptionHandlingPolicy.None }; // When var messageHandler = new ThrowingExceptionMessageHandler(); using (var queue = _queuesFactory.Create <string>(queueCreationOptions)) { await queue.SendMessageAsync("Test message"); await queue.SubscribeAsync(messageHandler); await Task.Delay(_completionTimeout); } // Then _mockLogger.VerifyErrorWasLogged <InvalidOperationException>(); Assert.Empty(messageHandler.Messages); Assert.Equal(0UL, GetQueueMessagesCount(queueCreationOptions.QueueName)); }
public async Task ShouldRequeueAndProcessBadMessage() { // Given const string expectedMessage = "Test message"; var queueCreationOptions = new RabbitQueueCreationOptions { QueueName = Guid.NewGuid().ToString(), RetriesCount = 0, RetryInitialTimeout = TimeSpan.FromMilliseconds(100), ExceptionHandlingPolicy = ExceptionHandlingPolicy.Requeue }; // When var messageHandler = new ThrowingExceptionMessageHandler(); using (var queue = _queuesFactory.Create <string>(queueCreationOptions)) { await queue.SendMessageAsync(expectedMessage); await queue.SubscribeAsync(messageHandler); await Task.Delay(_completionTimeout); } // Then _mockLogger.VerifyErrorWasLogged <InvalidOperationException>(); Assert.Equal(expectedMessage, messageHandler.Messages.Single()); Assert.Equal(0UL, GetQueueMessagesCount(queueCreationOptions.QueueName)); }
public async Task ShouldPushBadMessageIntoErrorsQueue() { // Given const string expectedMessage = "Test message"; var queueCreationOptions = new RabbitQueueCreationOptions { QueueName = Guid.NewGuid().ToString(), RetriesCount = 0, RetryInitialTimeout = TimeSpan.FromMilliseconds(100), ExceptionHandlingPolicy = ExceptionHandlingPolicy.SendToErrorsQueue }; var errorQueueCreationOptions = new RabbitQueueCreationOptions { QueueName = $"{queueCreationOptions.QueueName}.Errors", RetriesCount = 0, RetryInitialTimeout = TimeSpan.FromMilliseconds(100), ExceptionHandlingPolicy = ExceptionHandlingPolicy.None }; // When var messageHandler = new ThrowingExceptionMessageHandler(); using (var queue = _queuesFactory.Create <string>(queueCreationOptions)) { await queue.SubscribeAsync(messageHandler); await queue.SendMessageAsync(expectedMessage); await Task.Delay(_completionTimeout); } var errorMessagesHandler = new CatchingMessageHandler <ErrorInformation>(); using (var errorsQueue = _queuesFactory.Create <ErrorInformation>(errorQueueCreationOptions)) { await errorsQueue.SubscribeAsync(errorMessagesHandler); await Task.Delay(_completionTimeout); } // Then _mockLogger.VerifyErrorWasLogged <InvalidOperationException>(); Assert.Empty(messageHandler.Messages); Assert.Equal(0UL, GetQueueMessagesCount(queueCreationOptions.QueueName)); Assert.Contains(expectedMessage, errorMessagesHandler.Messages.Single().MessageContent); Assert.Equal(0UL, GetQueueMessagesCount(errorQueueCreationOptions.QueueName)); }
public void ShouldReturnNothingWhenExceptionThrown() { // Arrange var exception = new HttpRequestException("Test"); var httpMessageHandler = new ThrowingExceptionMessageHandler(exception); var client = new HttpClient(httpMessageHandler); // Sut var sut = new WeatherHttpClientBuilder().WithHttpClient(client).Build(); // Act var result = sut.GetWeatherFor(new List <string>() { "test" }).Result; // Assert Assert.IsTrue(result.ToList().Count == 0); }