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"); }
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(); }
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); }); }
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"); }