Beispiel #1
0
        public async Task PingAllEndpoints_AllEndpointsWorking_ResultsAreAllSuccess()
        {
            var broker = Substitute.For <IBroker>();

            broker.IsConnected.Returns(true);
            var producer1 = Substitute.For <IProducer>();
            var producer2 = Substitute.For <IProducer>();
            var producer3 = Substitute.For <IProducer>();

            broker.GetProducer(new TestEndpoint("endpoint1")).Returns(producer1);
            broker.GetProducer(new TestEndpoint("endpoint2")).Returns(producer2);
            broker.GetProducer(new TestEndpoint("endpoint3")).Returns(producer3);
            var configuration = Substitute.For <IOutboundRoutingConfiguration>();

            configuration.Routes.Returns(new List <IOutboundRoute>
            {
                new OutboundRoutingConfiguration.OutboundRoute(typeof(TestEventOne), new TestEndpoint("endpoint1"), typeof(OutboundConnector)),
                new OutboundRoutingConfiguration.OutboundRoute(typeof(TestEventTwo), new TestEndpoint("endpoint2"), typeof(OutboundConnector)),
                new OutboundRoutingConfiguration.OutboundRoute(typeof(TestEventThree), new TestEndpoint("endpoint3"), typeof(OutboundConnector)),
            });

            var service = new OutboundEndpointsHealthCheckService(configuration, broker);

            var results = await service.PingAllEndpoints();

            results.ForEach(r => r.IsSuccessful.Should().BeTrue());
        }
Beispiel #2
0
        public async Task PingAllEndpoints_AllEndpointsWorking_EachEndpointIsPinged()
        {
            var broker = Substitute.For <IBroker>();

            broker.IsConnected.Returns(true);
            var producer1 = Substitute.For <IProducer>();
            var producer2 = Substitute.For <IProducer>();
            var producer3 = Substitute.For <IProducer>();

            broker.GetProducer(new TestEndpoint("endpoint1")).Returns(producer1);
            broker.GetProducer(new TestEndpoint("endpoint2")).Returns(producer2);
            broker.GetProducer(new TestEndpoint("endpoint3")).Returns(producer3);
            var configuration = Substitute.For <IOutboundRoutingConfiguration>();

            configuration.Routes.Returns(new List <IOutboundRoute>
            {
                new OutboundRoutingConfiguration.OutboundRoute(typeof(TestEventOne), new TestEndpoint("endpoint1"), typeof(OutboundConnector)),
                new OutboundRoutingConfiguration.OutboundRoute(typeof(TestEventTwo), new TestEndpoint("endpoint2"), typeof(OutboundConnector)),
                new OutboundRoutingConfiguration.OutboundRoute(typeof(TestEventThree), new TestEndpoint("endpoint3"), typeof(OutboundConnector)),
            });

            var service = new OutboundEndpointsHealthCheckService(configuration, broker);

            await service.PingAllEndpoints();

            await producer1.ReceivedWithAnyArgs(1).ProduceAsync(null);

            await producer2.ReceivedWithAnyArgs(1).ProduceAsync(null);

            await producer3.ReceivedWithAnyArgs(1).ProduceAsync(null);
        }
        public async Task PingAllEndpoints_SomeEndpointNotWorking_FailureIsProperlyReported()
        {
            var broker = Substitute.For <IBroker>();

            broker.IsConnected.Returns(true);
            broker.ProducerEndpointType.Returns(typeof(TestProducerEndpoint));
            broker.ConsumerEndpointType.Returns(typeof(TestConsumerEndpoint));
            var producer1 = Substitute.For <IProducer>();
            var producer2 = Substitute.For <IProducer>();

            producer2.ProduceAsync((PingMessage?)null).ThrowsForAnyArgs <ProduceException>();
            var producer3 = Substitute.For <IProducer>();

            broker.GetProducer(new TestProducerEndpoint("endpoint1")).Returns(producer1);
            broker.GetProducer(new TestProducerEndpoint("endpoint2")).Returns(producer2);
            broker.GetProducer(new TestProducerEndpoint("endpoint3")).Returns(producer3);
            var configuration = Substitute.For <IOutboundRoutingConfiguration>();

            configuration.Routes.Returns(
                new List <IOutboundRoute>
            {
                new OutboundRoute(
                    typeof(TestEventOne),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint1"))),
                new OutboundRoute(
                    typeof(TestEventTwo),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint2"))),
                new OutboundRoute(
                    typeof(TestEventThree),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint3")))
            });

            var service = new OutboundEndpointsHealthCheckService(
                configuration,
                new BrokerCollection(new[] { broker }),
                Substitute.For <IServiceProvider>());

            var results = (await service.PingAllEndpointsAsync()).ToList();

            results[0].EndpointName.Should().Be("endpoint1");
            results[0].IsSuccessful.Should().BeTrue();
            results[0].ErrorMessage.Should().BeNull();

            results[1].EndpointName.Should().Be("endpoint2");
            results[1].IsSuccessful.Should().BeFalse();
            results[1].ErrorMessage.Should().NotBeNullOrEmpty();

            results[2].EndpointName.Should().Be("endpoint3");
            results[2].IsSuccessful.Should().BeTrue();
            results[2].ErrorMessage.Should().BeNull();
        }
        public async Task PingAllEndpoints_AllEndpointsWorking_EachEndpointIsPinged()
        {
            var broker = Substitute.For <IBroker>();

            broker.IsConnected.Returns(true);
            broker.ProducerEndpointType.Returns(typeof(TestProducerEndpoint));
            broker.ConsumerEndpointType.Returns(typeof(TestConsumerEndpoint));
            var producer1 = Substitute.For <IProducer>();
            var producer2 = Substitute.For <IProducer>();
            var producer3 = Substitute.For <IProducer>();

            broker.GetProducer(new TestProducerEndpoint("endpoint1")).Returns(producer1);
            broker.GetProducer(new TestProducerEndpoint("endpoint2")).Returns(producer2);
            broker.GetProducer(new TestProducerEndpoint("endpoint3")).Returns(producer3);
            var configuration = Substitute.For <IOutboundRoutingConfiguration>();

            configuration.Routes.Returns(
                new List <IOutboundRoute>
            {
                new OutboundRoute(
                    typeof(TestEventOne),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint1"))),
                new OutboundRoute(
                    typeof(TestEventTwo),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint2"))),
                new OutboundRoute(
                    typeof(TestEventThree),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint3")))
            });

            var service = new OutboundEndpointsHealthCheckService(
                configuration,
                new BrokerCollection(new[] { broker }),
                Substitute.For <IServiceProvider>());

            await service.PingAllEndpointsAsync();

            await producer1.ReceivedWithAnyArgs(1).ProduceAsync((PingMessage?)null);

            await producer2.ReceivedWithAnyArgs(1).ProduceAsync((PingMessage?)null);

            await producer3.ReceivedWithAnyArgs(1).ProduceAsync((PingMessage?)null);
        }
        public async Task PingAllEndpoints_AllEndpointsWorking_ResultsAreAllSuccess()
        {
            var broker = Substitute.For <IBroker>();

            broker.IsConnected.Returns(true);
            broker.ProducerEndpointType.Returns(typeof(TestProducerEndpoint));
            broker.ConsumerEndpointType.Returns(typeof(TestConsumerEndpoint));
            var producer1 = Substitute.For <IProducer>();
            var producer2 = Substitute.For <IProducer>();
            var producer3 = Substitute.For <IProducer>();

            broker.GetProducer(new TestProducerEndpoint("endpoint1")).Returns(producer1);
            broker.GetProducer(new TestProducerEndpoint("endpoint2")).Returns(producer2);
            broker.GetProducer(new TestProducerEndpoint("endpoint3")).Returns(producer3);
            var configuration = Substitute.For <IOutboundRoutingConfiguration>();

            configuration.Routes.Returns(
                new List <IOutboundRoute>
            {
                new OutboundRoute(
                    typeof(TestEventOne),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint1"))),
                new OutboundRoute(
                    typeof(TestEventTwo),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint2"))),
                new OutboundRoute(
                    typeof(TestEventThree),
                    _ => new StaticOutboundRouter(new TestProducerEndpoint("endpoint3")))
            });

            var service = new OutboundEndpointsHealthCheckService(
                configuration,
                new BrokerCollection(new[] { broker }),
                Substitute.For <IServiceProvider>());

            var results = await service.PingAllEndpointsAsync();

            results.ForEach(r => r.IsSuccessful.Should().BeTrue());
        }