示例#1
0
        public void ServiceEndpointBuildingCanBeCustomized()
        {
            var source = new ConsulConfigurationSource()
                         .UseCache(new InMemoryEmergencyCache())
                         .MapService("myservice1", "serviceEndpoints:v1:myservice", EndpointFormatters.Http, NodeSelectors.First);

            var consulState = new ConsulState();

            consulState = consulState.UpdateService(new Service
            {
                Name  = "myservice1",
                Nodes = new[]
                {
                    new ServiceNode
                    {
                        Address = "myaddress",
                        Port    = 80
                    },
                }
            });

            var configProvider = _consul.LoadConfigProvider(source, consulState);

            string serviceEndpoint;

            configProvider.TryGet("serviceEndpoints:v1:myservice", out serviceEndpoint).Should().BeTrue();
            serviceEndpoint.Should().Be("http://myaddress:80");
        }
示例#2
0
        public void TryUpdateServiceWithSameValuesDoesNothing()
        {
            var consulState = _consulState.UpdateService(new Service
            {
                Id    = "myid",
                Name  = "myservice",
                Nodes = new[]
                {
                    new ServiceNode
                    {
                        Name    = "mynode1",
                        Address = "10.0.0.1",
                        Port    = 80,
                        Tags    = new[]
                        {
                            "tag1",
                            "tag2"
                        }
                    },
                }
            });

            consulState.TryUpdateService(new Service
            {
                Id    = "myid",
                Name  = "myservice",
                Nodes = new[]
                {
                    new ServiceNode
                    {
                        Name    = "mynode1",
                        Address = "10.0.0.1",
                        Port    = 80,
                        Tags    = new[]
                        {
                            "tag1",
                            "tag2"
                        }
                    },
                }
            }, out var dontCare).Should().BeFalse();
        }
示例#3
0
        public void NoRegisteredNodesThrowsWhenUsingFirstNodeSelector()
        {
            Assert.Throws <ConsulRxConfigurationException>(() =>
            {
                var source = new ConsulConfigurationSource()
                             .UseCache(new InMemoryEmergencyCache())
                             .MapService("missingservice", "serviceEndpoints:v1:myservice", EndpointFormatters.Http, NodeSelectors.First);

                var consulState = new ConsulState();
                consulState     = consulState.UpdateService(new Service
                {
                    Name  = "missingservice",
                    Nodes = new ServiceNode[0]
                });

                var configProvider = _consul.LoadConfigProvider(source, consulState);
            });
        }
示例#4
0
        public void ServiceEndpointsCanBeACollection()
        {
            var source = new ConsulConfigurationSource()
                         .UseCache(new InMemoryEmergencyCache())
                         .MapService("myservice1", "serviceEndpoints:v1:myservice", EndpointFormatters.AddressAndPort, NodeSelectors.All);

            var consulState = new ConsulState();

            consulState = consulState.UpdateService(new Service
            {
                Name  = "myservice1",
                Nodes = new[]
                {
                    new ServiceNode
                    {
                        Address = "myaddress",
                        Port    = 80
                    },
                    new ServiceNode
                    {
                        Address = "anotheraddress",
                        Port    = 8080
                    }
                }
            });

            var configProvider = _consul.LoadConfigProvider(source, consulState);

            string serviceEndpoint;

            configProvider.TryGet("serviceEndpoints:v1:myservice:0", out serviceEndpoint).Should().BeTrue();
            serviceEndpoint.Should().Be("myaddress:80");

            configProvider.TryGet("serviceEndpoints:v1:myservice:1", out serviceEndpoint).Should().BeTrue();
            serviceEndpoint.Should().Be("anotheraddress:8080");
        }