Example #1
0
        public async Task AwaitMessageProcessedAttempt_ShouldAwaitMessageProcessingBeforeReturning()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var batch = new List <BatchMessageRequest>
            {
                new BatchMessageRequest("Hello World!")
            }.ToArray();

            var response = await client.SendMessageBatchAsync(batch, FifoQueueName);

            var receivedTask = client.AwaitMessageProcessedAttempt(FifoQueueName);

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        message =>
            {
                Assert.Equal("Hello World!", message);
                return(true);
            }, new CancellationToken());

            await receivedTask;

            var messages = client.GetMessages(FifoQueueName);

            Assert.Empty(messages);
        }
Example #2
0
        public async Task MockQueue_ShouldNotRemoveMessageFromQueue_IfFalseIsReturned()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            await client.SendMessageAsync("Hello World!", FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        async(message) =>
            {
                Assert.Single(client.GetMessages(FifoQueueName));
                Assert.True(client.GetMessages(FifoQueueName).First().IsLocked);
                Assert.Equal("Hello World!", message);
                _messagePicked = true;
                return(await Task.FromResult(false));
            }, cancellationToken);

            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            cancellationTokenSource.Cancel();
            Assert.True(_messagePicked);
            Assert.Single(client.GetMessages(FifoQueueName));
            Assert.False(client.GetMessages(FifoQueueName).First().IsLocked);
            _messagePicked = false;
        }
Example #3
0
        public async Task AwaitMessageProcessedAttempt_ShouldWaitUntilMessageProcessorHasBeenCalled_WhenMessageProcessorFails()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        async(message) =>
            {
                await Task.Delay(1000);
                return(false);
            }, cancellationToken);

            await client.SendMessageAsync("Hello World!", FifoQueueName);

            var stopwatch = new Stopwatch();

            stopwatch.Start();
            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            stopwatch.Stop();

            Assert.True(stopwatch.ElapsedMilliseconds > 900);
        }
Example #4
0
        public async Task MockStartMessageReceiver_ShouldRetrieveMessageWithSyncProcessor_WhenQueueAndMessageExists()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            await client.SendMessageAsync("Hello World!", FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;


            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        message =>
            {
                Assert.Equal("Hello World!", message);
                _messagePicked = true;
                return(true);
            }, cancellationToken);

            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            cancellationTokenSource.Cancel();
            Assert.True(_messagePicked);
            _messagePicked = false;
        }
Example #5
0
        public async Task SQSMessage_ShouldNotRemoveMessageFromQueue_WhenNotAcked()
        {
            var client = new SQSClientMock("mockEndpoint", "mockRegion");
            await client.CreateStandardFifoQueueAsync(FifoQueueName);

            var cancellationTokenSource = new CancellationTokenSource();
            var cancellationToken       = cancellationTokenSource.Token;

            client.StartMessageReceiver(FifoQueueName, new MessageReceiverOptions(),
                                        async(ISQSMessage message) => { Assert.Equal("Bar", message.Body); }, cancellationToken);

            await client.SendMessageAsync("Bar", FifoQueueName);

            await client.AwaitMessageProcessedAttempt(FifoQueueName);

            cancellationTokenSource.Cancel();
            Assert.Single(client.GetMessages(FifoQueueName));
        }