Ejemplo n.º 1
0
        public void GetServices_ReturnsExpected()
        {
            var options = new ConsulDiscoveryOptions();

            var queryResult = new QueryResult <Dictionary <string, string[]> >()
            {
                Response = new Dictionary <string, string[]>
                {
                    { "foo", new string[] { "I1", "I2" } },
                    { "bar", new string[] { "I1", "I2" } },
                }
            };
            var result    = Task.FromResult(queryResult);
            var clientMoq = new Mock <IConsulClient>();
            var catMoq    = new Mock <ICatalogEndpoint>();

            clientMoq.Setup(c => c.Catalog).Returns(catMoq.Object);
            catMoq.Setup(c => c.Services(QueryOptions.Default, default(CancellationToken))).Returns(result);

            var dc       = new ConsulDiscoveryClient(clientMoq.Object, options);
            var services = dc.GetServices();

            Assert.Equal(2, services.Count);
            Assert.Contains("foo", services);
            Assert.Contains("bar", services);
        }
Ejemplo n.º 2
0
        public async void AddInstancesToListAsync_AddsExpected()
        {
            var options = new ConsulDiscoveryOptions();

            var queryResult = new QueryResult <ServiceEntry[]>()
            {
                Response = new ServiceEntry[]
                {
                    new ServiceEntry()
                    {
                        Service = new AgentService()
                        {
                            Service = "ServiceId",
                            Address = "foo.bar.com",
                            Port    = 1234,
                            Tags    = new string[] { "foo=bar", "secure=true" }
                        }
                    },
                    new ServiceEntry()
                    {
                        Service = new AgentService()
                        {
                            Service = "ServiceId",
                            Address = "foo1.bar1.com",
                            Port    = 5678,
                            Tags    = new string[] { "bar=foo", "secure=false" }
                        }
                    }
                }
            };

            var result    = Task.FromResult(queryResult);
            var clientMoq = new Mock <IConsulClient>();
            var healthMoq = new Mock <IHealthEndpoint>();

            clientMoq.Setup(c => c.Health).Returns(healthMoq.Object);
            healthMoq.Setup(h => h.Service("ServiceId", options.DefaultQueryTag, options.QueryPassing, QueryOptions.Default, default(CancellationToken))).Returns(result);

            var dc   = new ConsulDiscoveryClient(clientMoq.Object, options);
            var list = new List <IServiceInstance>();
            await dc.AddInstancesToListAsync(list, "ServiceId", QueryOptions.Default);

            Assert.Equal(2, list.Count);

            var inst = list[0];

            Assert.Equal("foo.bar.com", inst.Host);
            Assert.Equal("ServiceId", inst.ServiceId);
            Assert.True(inst.IsSecure);
            Assert.Equal(1234, inst.Port);
            Assert.Equal(2, inst.Metadata.Count);
            Assert.Contains("foo", inst.Metadata.Keys);
            Assert.Contains("secure", inst.Metadata.Keys);
            Assert.Contains("bar", inst.Metadata.Values);
            Assert.Contains("true", inst.Metadata.Values);
            Assert.Equal(new Uri("https://foo.bar.com:1234"), inst.Uri);

            inst = list[1];
            Assert.Equal("foo1.bar1.com", inst.Host);
            Assert.Equal("ServiceId", inst.ServiceId);
            Assert.False(inst.IsSecure);
            Assert.Equal(5678, inst.Port);
            Assert.Equal(2, inst.Metadata.Count);
            Assert.Contains("bar", inst.Metadata.Keys);
            Assert.Contains("secure", inst.Metadata.Keys);
            Assert.Contains("foo", inst.Metadata.Values);
            Assert.Contains("false", inst.Metadata.Values);
            Assert.Equal(new Uri("http://foo1.bar1.com:5678"), inst.Uri);
        }
        public void GetAllInstances_ReturnsExpected()
        {
            var options = new ConsulDiscoveryOptions();

            var queryResult1 = new QueryResult <Dictionary <string, string[]> >()
            {
                Response = new Dictionary <string, string[]>
                {
                    { "ServiceId", new string[] { "I1", "I2" } },
                }
            };
            var result1 = Task.FromResult(queryResult1);

            var queryResult2 = new QueryResult <ServiceEntry[]>()
            {
                Response = new ServiceEntry[]
                {
                    new ServiceEntry()
                    {
                        Service = new AgentService()
                        {
                            Service = "ServiceId",
                            Address = "foo.bar.com",
                            Port    = 1234,
                            Tags    = new string[] { "foo=bar", "secure=true" }
                        }
                    },
                    new ServiceEntry()
                    {
                        Service = new AgentService()
                        {
                            Service = "ServiceId",
                            Address = "foo1.bar1.com",
                            Port    = 5678,
                            Tags    = new string[] { "bar=foo", "secure=false" }
                        }
                    }
                }
            };
            var result2 = Task.FromResult(queryResult2);

            var clientMoq = new Mock <IConsulClient>();
            var catMoq    = new Mock <ICatalogEndpoint>();

            clientMoq.Setup(c => c.Catalog).Returns(catMoq.Object);
            catMoq.Setup(c => c.Services(QueryOptions.Default, default)).Returns(result1);

            var healthMoq = new Mock <IHealthEndpoint>();

            clientMoq.Setup(c => c.Health).Returns(healthMoq.Object);
            healthMoq.Setup(h => h.Service("ServiceId", options.DefaultQueryTag, options.QueryPassing, QueryOptions.Default, default)).Returns(result2);

            var dc   = new ConsulDiscoveryClient(clientMoq.Object, options);
            var list = dc.GetAllInstances(QueryOptions.Default);

            Assert.Equal(2, list.Count);

            var inst = list[0];

            Assert.Equal("foo.bar.com", inst.Host);
            Assert.Equal("ServiceId", inst.ServiceId);
            Assert.True(inst.IsSecure);
            Assert.Equal(1234, inst.Port);
            Assert.Equal(2, inst.Metadata.Count);
            Assert.Contains("foo", inst.Metadata.Keys);
            Assert.Contains("secure", inst.Metadata.Keys);
            Assert.Contains("bar", inst.Metadata.Values);
            Assert.Contains("true", inst.Metadata.Values);
            Assert.Equal(new Uri("https://foo.bar.com:1234"), inst.Uri);

            inst = list[1];
            Assert.Equal("foo1.bar1.com", inst.Host);
            Assert.Equal("ServiceId", inst.ServiceId);
            Assert.False(inst.IsSecure);
            Assert.Equal(5678, inst.Port);
            Assert.Equal(2, inst.Metadata.Count);
            Assert.Contains("bar", inst.Metadata.Keys);
            Assert.Contains("secure", inst.Metadata.Keys);
            Assert.Contains("foo", inst.Metadata.Values);
            Assert.Contains("false", inst.Metadata.Values);
            Assert.Equal(new Uri("http://foo1.bar1.com:5678"), inst.Uri);
        }