Example #1
0
        public DynamoDbOutboxWritingMessageTests()
        {
            var messageHeader = new MessageHeader(
                messageId: Guid.NewGuid(),
                topic: "test_topic",
                messageType: MessageType.MT_DOCUMENT,
                timeStamp: DateTime.UtcNow.AddDays(-1),
                handledCount: 5,
                delayedMilliseconds: 5,
                correlationId: Guid.NewGuid(),
                replyTo: "ReplyAddress",
                contentType: "text/plain");

            messageHeader.Bag.Add(_key1, _value1);
            messageHeader.Bag.Add(_key2, _value2);
            messageHeader.Bag.Add(_key3, _value3);
            messageHeader.Bag.Add(_key4, _value4);
            messageHeader.Bag.Add(_key5, _value5);

            _messageEarliest = new Message(messageHeader, new MessageBody("message body"));

            _dynamoDbOutbox = new DynamoDbOutbox(Client, new DynamoDbConfiguration(Credentials, RegionEndpoint.EUWest1, TableName));

            _dynamoDbOutbox.Add(_messageEarliest);
        }
Example #2
0
        public DynamoDbOutboxMessageAlreadyExistsTests()
        {
            _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT), new MessageBody("message body"));
            _dynamoDbOutbox  = new DynamoDbOutbox(Client, new DynamoDbConfiguration(Credentials, RegionEndpoint.EUWest1, TableName));

            _dynamoDbOutbox.AddAsync(_messageEarliest).Wait();
        }
Example #3
0
        public void When_the_message_is_already_in_the_outbox()
        {
            _exception = Catch.Exception(() => DynamoDbOutbox.Add(_messageEarliest));

            //_should_ignore_the_duplicate_key_and_still_succeed
            _exception.Should().BeNull();
        }
        public void When_there_is_no_message_in_the_dynamo_db_outbox()
        {
            _storedMessage = DynamoDbOutbox.Get(_messageEarliest.Id);

            //_should_return_a_empty_message
            _storedMessage.Header.MessageType.Should().Be(MessageType.MT_NONE);
        }
        public async Task When_there_is_no_message_in_the_dynamo_db_message_store()
        {
            _storedMessage = await DynamoDbOutbox.GetAsync(_messageEarliest.Id);

            //_should_return_a_empty_message
            _storedMessage.Header.MessageType.Should().Be(MessageType.MT_NONE);
        }
Example #6
0
        public void When_reading_message_by_time_range()
        {
            var retrievedMessages = DynamoDbOutbox.Get(_topic, _timeStamp, _timeStamp.AddHours(-3), _timeStamp.AddHours(-2));

            //_should_read_the_last_middle_message_from_the_store
            retrievedMessages.Should().HaveCount(1);
            retrievedMessages.Single().Should().Be(_message2);
        }
        public async Task When_the_message_is_already_in_the_outbox_async()
        {
            await DynamoDbOutbox.AddAsync(_messageEarliest);

            _exception = await Catch.ExceptionAsync(() => DynamoDbOutbox.AddAsync(_messageEarliest));

            //_should_ignore_the_duplicate_key_and_still_succeed
            _exception.Should().BeNull();
        }
Example #8
0
        public void When_reading_message_until_time()
        {
            var retrievedMessages = DynamoDbOutbox.Get(_topic, _timeStamp, endTime: _timeStamp.AddHours(-2));

            //_should_read_the_last_two_messages_from_the_store
            retrievedMessages.Should().HaveCount(2);
            retrievedMessages.FirstOrDefault(m => m.Id == _guids[0]).Should().NotBeNull();
            retrievedMessages.FirstOrDefault(m => m.Id == _guids[1]).Should().NotBeNull();
        }
        public DynamoDbOutboxWritingMessageAsyncTests()
        {
            var messageHeader = new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT, DateTime.UtcNow.AddDays(-1), 5, 5);

            messageHeader.Bag.Add(_key1, _value1);
            messageHeader.Bag.Add(_key2, _value2);

            _messageEarliest = new Message(messageHeader, new MessageBody("message body"));
            _dynamoDbOutbox  = new DynamoDbOutbox(Client, new DynamoDbConfiguration(Credentials, RegionEndpoint.EUWest1, TableName));
        }
Example #10
0
        public DynamoDbOutboxWritingMessageTests()
        {
            var messageHeader = new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT, DateTime.UtcNow.AddDays(-1), 5, 5);

            messageHeader.Bag.Add(_key1, _value1);
            messageHeader.Bag.Add(_key2, _value2);

            _messageEarliest = new Message(messageHeader, new MessageBody("Body"));
            DynamoDbOutbox.Add(_messageEarliest);
        }
Example #11
0
        public BaseDynamoDBOutboxTests()
        {
            _dynamoDbTestHelper = new DynamoDbTestHelper();

            var createTableRequest = new DynamoDbOutboxBuilder(_dynamoDbTestHelper.DynamoDbMessageStoreTestConfiguration.TableName)
                                     .CreateOutboxTableRequest(_throughput, _throughput);

            _dynamoDbTestHelper.CreateOutboxTable(createTableRequest);

            DynamoDbOutbox = new DynamoDbOutbox(_dynamoDbTestHelper.DynamoDbContext, _dynamoDbTestHelper.DynamoDbMessageStoreTestConfiguration);
        }
        public DynamoDbOutboxRangeRequestTests()
        {
            var messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), _TopicFirstMessage, MessageType.MT_DOCUMENT), new MessageBody("message body"));
            var message1        = new Message(new MessageHeader(Guid.NewGuid(), "test_topic2", MessageType.MT_DOCUMENT), new MessageBody("message body2"));
            var message2        = new Message(new MessageHeader(Guid.NewGuid(), _TopicLastMessage, MessageType.MT_DOCUMENT), new MessageBody("message body3"));

            DynamoDbOutbox.Add(messageEarliest);
            Task.Delay(100);
            DynamoDbOutbox.Add(message1);
            Task.Delay(100);
            DynamoDbOutbox.Add(message2);
        }
        public async Task When_writing_messages_to_the_outbox()
        {
            var guids = new[] { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() };

            DynamoDbOutbox.Add(new Message(new MessageHeader(guids[0], "Test", MessageType.MT_COMMAND, DateTime.UtcNow.AddHours(-3)), new MessageBody("Body")));
            DynamoDbOutbox.Add(new Message(new MessageHeader(guids[1], "Test2", MessageType.MT_COMMAND, DateTime.UtcNow.AddHours(-2)), new MessageBody("Body2")));
            DynamoDbOutbox.Add(new Message(new MessageHeader(guids[2], "Test3", MessageType.MT_COMMAND, DateTime.UtcNow.AddHours(-1)), new MessageBody("Body3")));

            var retrievedMessages = (await _dynamoDbTestHelper.Scan()).ToList();

            //_should_read_the_messages_from_the__outbox
            retrievedMessages.Should().HaveCount(3);
            retrievedMessages.Single(m => m.MessageId == guids[0].ToString()).Should().NotBeNull();
            retrievedMessages.Single(m => m.MessageId == guids[1].ToString()).Should().NotBeNull();
            retrievedMessages.Single(m => m.MessageId == guids[2].ToString()).Should().NotBeNull();
        }
        public async Task When_there_are_multiple_messages_in_the_outbox_and_a_range_by_index_is_fetched()
        {
            await DynamoDbOutbox.AddAsync(_messageEarliest);

            await Task.Delay(100);

            await DynamoDbOutbox.AddAsync(_message1);

            await Task.Delay(100);

            await DynamoDbOutbox.AddAsync(_message2);

            var exception = await Catch.ExceptionAsync(() => DynamoDbOutbox.GetAsync(1, 3));

            exception.Should().BeOfType <NotSupportedException>();
        }
        public async Task When_writing_messages_to_the_outbox_async()
        {
            await DynamoDbOutbox.AddAsync(_messageEarliest);

            await DynamoDbOutbox.AddAsync(_message2);

            await DynamoDbOutbox.AddAsync(_messageLatest);

            var retrievedMessages = (await _dynamoDbTestHelper.Scan()).ToList();

            //_should_read_the_messages_from_the__outbox
            retrievedMessages.Should().HaveCount(3);
            retrievedMessages.Single(m => m.MessageId == _guids[0].ToString()).Should().NotBeNull();
            retrievedMessages.Single(m => m.MessageId == _guids[1].ToString()).Should().NotBeNull();
            retrievedMessages.Single(m => m.MessageId == _guids[2].ToString()).Should().NotBeNull();
        }
Example #16
0
        public DynamoDbRangeOfMessagesTests()
        {
            _guids = new[] { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() };

            _messageEarliest =
                new Message(new MessageHeader(_guids[0], _topic, MessageType.MT_COMMAND, _timeStamp.AddHours(-4)), new MessageBody("Body"));
            _message2 = new Message(
                new MessageHeader(_guids[1], _topic, MessageType.MT_COMMAND, _timeStamp.AddHours(-2)), new MessageBody("Body2"));
            _messageLatest =
                new Message(new MessageHeader(_guids[2], _topic, MessageType.MT_COMMAND, _timeStamp.AddHours(-1)), new MessageBody("Body3"));
            _nonTopicMessage =
                new Message(new MessageHeader(_guids[3], "Test2", MessageType.MT_COMMAND, _timeStamp.AddHours(-2)), new MessageBody("Body 4"));

            DynamoDbOutbox.Add(_messageEarliest);
            DynamoDbOutbox.Add(_message2);
            DynamoDbOutbox.Add(_messageLatest);
            DynamoDbOutbox.Add(_nonTopicMessage);
        }
Example #17
0
        public void When_writing_a_message_to_the_dynamo_db_outbox()
        {
            _storedMessage = DynamoDbOutbox.Get(_messageEarliest.Id);

            //_should_read_the_message_from_the__sql_outbox
            _storedMessage.Body.Value.Should().Be(_messageEarliest.Body.Value);
            //_should_read_the_message_header_first_bag_item_from_the__sql_outbox
            _storedMessage.Header.Bag.ContainsKey(_key1).Should().BeTrue();
            _storedMessage.Header.Bag[_key1].Should().Be(_value1);
            //_should_read_the_message_header_second_bag_item_from_the__sql_outbox
            _storedMessage.Header.Bag.ContainsKey(_key2).Should().BeTrue();
            _storedMessage.Header.Bag[_key2].Should().Be(_value2);
            //_should_read_the_message_header_timestamp_from_the__sql_outbox
            _storedMessage.Header.TimeStamp.Should().Be(_messageEarliest.Header.TimeStamp);
            //_should_read_the_message_header_topic_from_the__sql_outbox
            _storedMessage.Header.Topic.Should().Be(_messageEarliest.Header.Topic);
            //_should_read_the_message_header_type_from_the__sql_outbox
            _storedMessage.Header.MessageType.Should().Be(_messageEarliest.Header.MessageType);
        }
        public void When_there_are_multiple_messages_in_the_outbox_and_a_range_is_fetched()
        {
            var exception = Catch.Exception(() => DynamoDbOutbox.GetAsync(1, 3).Wait());

            exception.Should().BeOfType <NotSupportedException>();
        }
Example #19
0
 public DynamoDbOutboxMessageAlreadyExistsTests()
 {
     _messageEarliest = new Message(new MessageHeader(Guid.NewGuid(), "test_topic", MessageType.MT_DOCUMENT), new MessageBody("message body"));
     DynamoDbOutbox.Add(_messageEarliest);
 }
Example #20
0
        public void When_reading_messages_by_numerical_range()
        {
            var exception = Catch.Exception(() => DynamoDbOutbox.Get(3, 1));

            exception.Should().BeOfType <NotSupportedException>();
        }