Ejemplo n.º 1
0
        public async Task WriteAsync_should_set_metric_processed_events_to_one(IEvent evt)
        {
            if (evt is null)
            {
                throw new ArgumentNullException(nameof(evt));
            }

            using var resetEvent = new ManualResetEvent(false);

            var bus     = new FakeBus();
            var pattern = new PatternBuilder().FromTopic(evt.Topic).Build();

            using var subscription = new AsyncActionSubscription(bus, pattern, e =>
            {
                resetEvent.Set();
                return(Task.CompletedTask);
            });

            await subscription.EnableAsync().ConfigureAwait(false);

            await subscription.WriteAsync(evt).ConfigureAwait(false);

            var wasReset = resetEvent.WaitOne(this.waitTimeout);

            Assert.True(wasReset);

            var metric = Assert.Single(subscription.GetMetrics(), m => m.Name == Metrics.Subscription.ProcessedEvents);

            Assert.Equal(1L, metric.Value);
        }
Ejemplo n.º 2
0
        public async Task WriteAsync_after_Enabled_should_call_registered_action(IEvent evt)
        {
            if (evt is null)
            {
                throw new ArgumentNullException(nameof(evt));
            }

            using var resetEvent = new ManualResetEvent(false);

            var bus     = new FakeBus();
            var pattern = new PatternBuilder().FromTopic(evt.Topic).Build();

            using var subscription = new AsyncActionSubscription(bus, pattern, e =>
            {
                resetEvent.Set();
                return(Task.CompletedTask);
            });

            await subscription.EnableAsync().ConfigureAwait(false);

            await subscription.WriteAsync(evt).ConfigureAwait(false);

            var wasReset = resetEvent.WaitOne(this.waitTimeout);

            Assert.True(wasReset);
        }
Ejemplo n.º 3
0
        public async Task Enable_then_Disable_should_subscribe_and_unsubscribe()
        {
            var bus     = new FakeBus();
            var pattern = new PatternBuilder("root").Build();

            using var subscription = new AsyncActionSubscription(bus, pattern, e => Task.CompletedTask);

            await subscription.EnableAsync().ConfigureAwait(false);

            Assert.True(bus.IsSubscribed(subscription));

            await subscription.DisableAsync().ConfigureAwait(false);

            Assert.False(bus.IsSubscribed(subscription));
        }
Ejemplo n.º 4
0
        public async Task Enable_then_Disable_multiple_times_should_set_isEnabled_accordingly(int times)
        {
            var bus     = new FakeBus();
            var pattern = new PatternBuilder("root").Build();

            using var subscription = new AsyncActionSubscription(bus, pattern, e => Task.CompletedTask);

            for (int i = 0; i < times; i++)
            {
                await subscription.EnableAsync().ConfigureAwait(false);

                Assert.True(subscription.IsEnabled);

                await subscription.DisableAsync().ConfigureAwait(false);

                Assert.False(subscription.IsEnabled);
            }
        }
Ejemplo n.º 5
0
        public async Task WriteAsync_should_set_metric_received_events_to_one(IEvent evt)
        {
            if (evt is null)
            {
                throw new ArgumentNullException(nameof(evt));
            }

            var bus     = new FakeBus();
            var pattern = new PatternBuilder().FromTopic(evt.Topic).Build();

            using var subscription = new AsyncActionSubscription(bus, pattern, e => Task.CompletedTask);

            await subscription.EnableAsync().ConfigureAwait(false);

            await subscription.WriteAsync(evt).ConfigureAwait(false);

            var metric = Assert.Single(subscription.GetMetrics(), m => m.Name == Metrics.Subscription.ReceivedEvents);

            Assert.Equal(1L, metric.Value);
        }
Ejemplo n.º 6
0
        public async Task WriteAsync_before_Enabled_should_call_registered_action_after_enabled()
        {
            using var resetEvent = new ManualResetEvent(false);

            var bus           = new FakeBus();
            var topic         = new TopicBuilder("root").Build();
            var pattern       = new PatternBuilder("root").Build();
            var expectedEvent = new FakeEvent(topic, "Test");

            using var subscription = new AsyncActionSubscription(bus, pattern, evt =>
            {
                Assert.Equal(expectedEvent, evt);
                resetEvent.Set();
                return(Task.CompletedTask);
            });

            await subscription.WriteAsync(expectedEvent).ConfigureAwait(false);

            await subscription.EnableAsync().ConfigureAwait(false);

            var wasReset = resetEvent.WaitOne(this.waitTimeout);

            Assert.True(wasReset);
        }