public virtual async Task InitializeAsync()
        {
            Given();

            SystemUnderTest = CreateSystemUnderTest();
            await WhenAsync().ConfigureAwait(false);
        }
예제 #2
0
        private JustSaying.JustSayingBus CreateSystemUnderTest()
        {
            var serializerRegister = new FakeSerializationRegister();
            var bus = new JustSaying.JustSayingBus(Config,
                                                   serializerRegister,
                                                   LoggerFactory,
                                                   Monitor);

            bus.SetGroupSettings(new SubscriptionGroupSettingsBuilder()
                                 .WithDefaultConcurrencyLimit(8),
                                 new Dictionary <string, SubscriptionGroupConfigBuilder>());

            return(bus);
        }
예제 #3
0
        public virtual async Task InitializeAsync()
        {
            Given();

            try
            {
                SystemUnderTest = CreateSystemUnderTest();
                await WhenAsync().ConfigureAwait(false);
            }
            catch (Exception ex) when(_recordThrownExceptions)
            {
                ThrownException = ex;
            }
        }
        public async Task Add_Different_Handler_Per_Queue()
        {
            // Arrange
            string group1     = "group1";
            string group2     = "group2";
            string queueName1 = "queue1";
            string queueName2 = "queue2";

            JustSaying.JustSayingBus bus = CreateBus();

            var handler1 = new InspectableHandler <TestJustSayingMessage>();
            var handler2 = new InspectableHandler <TestJustSayingMessage>();

            bus.AddMessageHandler(queueName1, () => handler1);
            bus.AddMessageHandler(queueName2, () => handler2);

            ISqsQueue queue1 = TestQueue(bus.SerializationRegister, queueName1);
            ISqsQueue queue2 = TestQueue(bus.SerializationRegister, queueName2);

            bus.AddQueue(group1, queue1);
            bus.AddQueue(group2, queue2);

            using var cts = new CancellationTokenSource();

            // Act
            await bus.StartAsync(cts.Token);

            await Patiently.AssertThatAsync(_outputHelper,
                                            () =>
            {
                handler1.ReceivedMessages.Count.ShouldBeGreaterThan(0);
                handler2.ReceivedMessages.Count.ShouldBeGreaterThan(0);
            });

            cts.Cancel();
            await bus.Completion;

            foreach (var message in handler1.ReceivedMessages)
            {
                message.QueueName.ShouldBe(queueName1);
            }

            foreach (var message in handler2.ReceivedMessages)
            {
                message.QueueName.ShouldBe(queueName2);
            }

            bus.Dispose();
        }
        private JustSaying.JustSayingBus CreateSystemUnderTest()
        {
            var subjectProvider   = new GenericMessageSubjectProvider();
            var serializerFactory = new NewtonsoftSerializationFactory();
            var bus = new JustSaying.JustSayingBus(Config,
                                                   new MessageSerializationRegister(subjectProvider, serializerFactory),
                                                   LoggerFactory)
            {
                Monitor = Monitor
            };

            bus.SetGroupSettings(new SubscriptionGroupSettingsBuilder()
                                 .WithDefaultConcurrencyLimit(8),
                                 new Dictionary <string, SubscriptionGroupConfigBuilder>());

            return(bus);
        }
예제 #6
0
        public async Task Add_Different_Handler_Per_Queue()
        {
            // Arrange
            string group1     = "group1";
            string group2     = "group2";
            string region     = "region";
            string queueName1 = "queue1";
            string queueName2 = "queue2";

            JustSaying.JustSayingBus bus = CreateBus();

            ISqsQueue queue1 = TestQueue(bus.SerializationRegister, queueName1);
            ISqsQueue queue2 = TestQueue(bus.SerializationRegister, queueName2);

            bus.AddQueue(region, group1, queue1);
            bus.AddQueue(region, group2, queue2);

            var handledBy1 = new List <TestJustSayingMessage>();
            var handledBy2 = new List <TestJustSayingMessage>();

            bus.AddMessageHandler(queueName1, () => new TestHandler <TestJustSayingMessage>(x => handledBy1.Add(x)));
            bus.AddMessageHandler(queueName2, () => new TestHandler <TestJustSayingMessage>(x => handledBy2.Add(x)));

            var cts = new CancellationTokenSource();

            cts.CancelAfter(TimeoutPeriod);

            // Act
            await bus.StartAsync(cts.Token);

            await cts.Token.WaitForCancellation();

            // Assert
            handledBy1.Count.ShouldBeGreaterThan(0);
            foreach (var message in handledBy1)
            {
                message.QueueName.ShouldBe(queueName1);
            }

            handledBy2.Count.ShouldBeGreaterThan(0);
            foreach (var message in handledBy2)
            {
                message.QueueName.ShouldBe(queueName2);
            }
        }
        private JustSaying.JustSayingBus CreateBus()
        {
            var config = Substitute.For <IMessagingConfig>();
            var serializationRegister = new MessageSerializationRegister(
                new NonGenericMessageSubjectProvider(),
                new NewtonsoftSerializationFactory());

            var bus = new JustSaying.JustSayingBus(config, serializationRegister, LoggerFactory, MessageMonitor);

            var defaultSubscriptionSettings = new SubscriptionGroupSettingsBuilder()
                                              .WithDefaultMultiplexerCapacity(1)
                                              .WithDefaultPrefetch(1)
                                              .WithDefaultBufferSize(1)
                                              .WithDefaultConcurrencyLimit(1);

            bus.SetGroupSettings(defaultSubscriptionSettings, new Dictionary <string, SubscriptionGroupConfigBuilder>());

            return(bus);
        }