Beispiel #1
0
 public void TestAdmit(IMessage message, long offset, bool expected)
 {
     using (var checkpointer = new NullCheckpointer())
     {
         bool result = checkpointer.Admit(message);
         Assert.Equal(expected, result);
     }
 }
        public async Task InvokeTest()
        {
            // Arrange
            const int    MessagesCount = 10;
            const string EndpointId    = "endpoint1";
            var          endpoint      = new NullEndpoint(EndpointId);
            var          priorities    = new List <uint>()
            {
                0, 1, 2, 100, 101, 102
            };
            var checkpointer                 = new NullCheckpointer();
            var endpointExecutorConfig       = new EndpointExecutorConfig(TimeSpan.FromHours(1), RetryStrategy.NoRetry, TimeSpan.FromHours(1));
            var asyncEndpointExecutorOptions = new AsyncEndpointExecutorOptions(10);
            var messageStore                 = new TestMessageStore();
            var storingAsyncEndpointExecutor = new StoringAsyncEndpointExecutor(endpoint, priorities, checkpointer, endpointExecutorConfig, asyncEndpointExecutorOptions, messageStore);
            IEnumerable <IMessage> messages  = GetNewMessages(MessagesCount, 0);

            // Act - Send messages to invoke
            foreach (IMessage message in messages)
            {
                await storingAsyncEndpointExecutor.Invoke(message, 0, 3600);
            }

            // Assert - Check that the message store received the messages sent to invoke.
            List <IMessage> storeMessages = messageStore.GetReceivedMessagesForEndpoint(EndpointId);

            Assert.NotNull(storeMessages);
            Assert.Equal(MessagesCount, storeMessages.Count);
            for (int i = 0; i < MessagesCount; i++)
            {
                IMessage message = storeMessages[i];
                Assert.True(message.Properties.ContainsKey($"key{i}"));
                Assert.Equal($"value{i}", message.Properties[$"key{i}"]);
            }

            // Assert - Make sure no additional / duplicate messages were sent.
            storeMessages = messageStore.GetReceivedMessagesForEndpoint(EndpointId);
            Assert.NotNull(storeMessages);
            Assert.Equal(10, storeMessages.Count);

            // Act - Send messages again to Invoke.
            messages = GetNewMessages(MessagesCount, MessagesCount);
            foreach (IMessage message in messages)
            {
                await storingAsyncEndpointExecutor.Invoke(message, 0, 3600);
            }

            // Assert - Make sure the store now has the old and the new messages.
            storeMessages = messageStore.GetReceivedMessagesForEndpoint(EndpointId);
            Assert.NotNull(storeMessages);
            Assert.Equal(MessagesCount * 2, storeMessages.Count);
            for (int i = 0; i < MessagesCount * 2; i++)
            {
                IMessage message = storeMessages[i];
                Assert.True(message.Properties.ContainsKey($"key{i}"));
                Assert.Equal($"value{i}", message.Properties[$"key{i}"]);
            }
        }
Beispiel #3
0
        public async Task TestCommit(IMessage message)
        {
            using (var checkpointer1 = new NullCheckpointer())
            {
                await checkpointer1.CommitAsync(new[] { message }, new IMessage[] { }, Option.None <DateTime>(), Option.None <DateTime>(), CancellationToken.None);

                Assert.Equal(Checkpointer.InvalidOffset, checkpointer1.Offset);
                await checkpointer1.CloseAsync(CancellationToken.None);
            }
        }