Beispiel #1
0
        public void FetchRegistryDeltaAsync_ReturnsNull_IfFetchCounterMismatch()
        {
            var envir = HostingHelpers.GetHostingEnvironment();

            TestConfigServerStartup.Response     = string.Empty;
            TestConfigServerStartup.ReturnStatus = 200;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);

            var uri = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);
            var config = new EurekaClientConfig()
            {
                ShouldFetchRegistry      = false,
                ShouldRegisterWithEureka = false,
                EurekaServerServiceUrls  = uri.ToString()
            };

            var httpClient = new EurekaHttpClient(config, server.CreateClient());
            var client     = new DiscoveryClient(config, httpClient);
            var result     = client.FetchRegistryDeltaAsync();

            client.RegistryFetchCounter = 100;
            var apps = result.GetAwaiter().GetResult();

            Assert.Null(apps);
        }
Beispiel #2
0
        public async void SendHeartBeatAsync_InvokesServer_ReturnsStatusCodeAndHeaders()
        {
            var startup = new TestConfigServerStartup("", 200);
            var server  = TestServer.Create(startup.Configure);
            var uri     = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);
            EurekaInstanceConfig config = new EurekaInstanceConfig()
            {
                AppName    = "foo",
                InstanceId = "id1"
            };
            InstanceInfo info = InstanceInfo.FromInstanceConfig(config);

            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client = new EurekaHttpClient(cconfig, server.CreateClient());
            EurekaHttpResponse <InstanceInfo> resp = await client.SendHeartBeatAsync("foo", "id1", info, InstanceStatus.UNKNOWN);

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.OK, resp.StatusCode);
            Assert.NotNull(resp.Headers);

            Assert.Equal("PUT", startup.LastRequest.Method);
            Assert.Equal("localhost:8888", startup.LastRequest.Host.Value);
            Assert.Equal("/apps/FOO/id1", startup.LastRequest.Path.Value);
            var time = DateTimeConversions.ToJavaMillis(new DateTime(info.LastDirtyTimestamp, DateTimeKind.Utc));

            Assert.Equal("?status=STARTING&lastDirtyTimestamp=" + time, startup.LastRequest.QueryString.Value);
        }
Beispiel #3
0
        public async void RenewAsync_ReturnsTrue_WhenOKStatusReturned()
        {
            var startup = new TestConfigServerStartup("", 200);
            var server  = TestServer.Create(startup.Configure);
            var uri     = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);
            EurekaClientConfig config = new EurekaClientConfig()
            {
                ShouldFetchRegistry      = false,
                ShouldRegisterWithEureka = false,
                EurekaServerServiceUrls  = uri.ToString()
            };

            InstanceInfo inst = new InstanceInfo()
            {
                InstanceId = "localhost:foo",
                HostName   = "localhost",
                AppName    = "FOO",
                IpAddr     = "192.168.56.1",
                Status     = InstanceStatus.STARTING
            };

            ApplicationInfoManager.Instance.InstanceInfo = inst;

            var             httpClient = new EurekaHttpClient(config, server.CreateClient());
            DiscoveryClient client     = new DiscoveryClient(config, httpClient);
            var             result     = await client.RenewAsync();

            Assert.True(result);
        }
        public async System.Threading.Tasks.Task StatusUpdateAsync_InvokesServer_ReturnsStatusCodeAndHeaders()
        {
            var envir = HostingHelpers.GetHostingEnvironment();

            TestConfigServerStartup.Response     = string.Empty;
            TestConfigServerStartup.ReturnStatus = 200;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);

            var uri = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);

            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client   = new EurekaHttpClient(cconfig, server.CreateClient());
            var now      = DateTime.UtcNow.Ticks;
            var javaTime = DateTimeConversions.ToJavaMillis(new DateTime(now, DateTimeKind.Utc));
            var resp     = await client.StatusUpdateAsync("foo", "bar", InstanceStatus.DOWN, new InstanceInfo()
            {
                LastDirtyTimestamp = now
            });

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.OK, resp.StatusCode);
            Assert.NotNull(resp.Headers);
            Assert.Equal("PUT", TestConfigServerStartup.LastRequest.Method);
            Assert.Equal("localhost:8888", TestConfigServerStartup.LastRequest.Host.Value);
            Assert.Equal("/apps/foo/bar/status", TestConfigServerStartup.LastRequest.Path.Value);
            Assert.Equal("?value=DOWN&lastDirtyTimestamp=" + javaTime, TestConfigServerStartup.LastRequest.QueryString.Value);

            Assert.Equal("http://localhost:8888/", client._serviceUrl);
        }
        public async void RegisterAsync_InvokesServer_ReturnsStatusCodeAndHeaders()
        {
            IHostingEnvironment envir = new HostingEnvironment();

            TestConfigServerStartup.Response     = "";
            TestConfigServerStartup.ReturnStatus = 204;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);


            var uri = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);
            EurekaInstanceConfig config = new EurekaInstanceConfig();
            InstanceInfo         info   = InstanceInfo.FromInstanceConfig(config);

            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client = new EurekaHttpClient(cconfig, server.CreateClient());

            EurekaHttpResponse resp = await client.RegisterAsync(info);

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.NoContent, resp.StatusCode);
            Assert.NotNull(resp.Headers);
        }
        public void GetRequestMessage_Adds_Auth_When_JustPassword_In_Url()
        {
            var config = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = "http://:pass@boo:123/eureka/"
            };
            var client = new EurekaHttpClient(config);
            var result = client.GetRequestMessage(HttpMethod.Post, new Uri(config.EurekaServerServiceUrls));

            Assert.Equal(HttpMethod.Post, result.Method);
            Assert.Equal(new Uri("http://*****:*****@boo:123/eureka/"
            };
            var optionsMonitor = new TestOptionMonitorWrapper <EurekaClientOptions>(clientOptions);

            client = new EurekaHttpClient(optionsMonitor);

            // act
            result = client.GetRequestMessage(HttpMethod.Post, new Uri(clientOptions.EurekaServerServiceUrls));

            // assert
            Assert.Equal(HttpMethod.Post, result.Method);
            Assert.Equal(new Uri("http://boo:123/eureka/"), result.RequestUri);
            Assert.True(result.Headers.Contains("Authorization"));
        }
Beispiel #7
0
        public async void StatusUpdateAsync_InvokesServer_ReturnsStatusCodeAndHeaders()
        {
            var startup = new TestConfigServerStartup("", 200);
            var server  = TestServer.Create(startup.Configure);
            var uri     = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);

            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client              = new EurekaHttpClient(cconfig, server.CreateClient());
            var now                 = DateTime.UtcNow.Ticks;
            var javaTime            = DateTimeConversions.ToJavaMillis(new DateTime(now, DateTimeKind.Utc));
            EurekaHttpResponse resp = await client.StatusUpdateAsync("foo", "bar", InstanceStatus.DOWN, new InstanceInfo()
            {
                LastDirtyTimestamp = now
            });

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.OK, resp.StatusCode);
            Assert.NotNull(resp.Headers);
            Assert.Equal("PUT", startup.LastRequest.Method);
            Assert.Equal("localhost:8888", startup.LastRequest.Host.Value);
            Assert.Equal("/apps/foo/bar/status", startup.LastRequest.Path.Value);
            Assert.Equal("?value=DOWN&lastDirtyTimestamp=" + javaTime, startup.LastRequest.QueryString.Value);
        }
        public async void DeleteStatusOverrideAsync_InvokesServer_ReturnsStatusCodeAndHeaders()
        {
            IHostingEnvironment envir = new HostingEnvironment();

            TestConfigServerStartup.Response     = "";
            TestConfigServerStartup.ReturnStatus = 200;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);

            var uri = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);
            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client              = new EurekaHttpClient(cconfig, server.CreateClient());
            var now                 = DateTime.UtcNow.Ticks;
            var javaTime            = DateTimeConversions.ToJavaMillis(new DateTime(now, DateTimeKind.Utc));
            EurekaHttpResponse resp = await client.DeleteStatusOverrideAsync("foo", "bar", new InstanceInfo()
            {
                LastDirtyTimestamp = now
            });

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.OK, resp.StatusCode);
            Assert.NotNull(resp.Headers);
            Assert.Equal("DELETE", TestConfigServerStartup.LastRequest.Method);
            Assert.Equal("localhost:8888", TestConfigServerStartup.LastRequest.Host.Value);
            Assert.Equal("/apps/foo/bar/status", TestConfigServerStartup.LastRequest.Path.Value);
            Assert.Equal("?lastDirtyTimestamp=" + javaTime, TestConfigServerStartup.LastRequest.QueryString.Value);
        }
        public async void CancelAsync_InvokesServer_ReturnsStatusCodeAndHeaders()
        {
            IHostingEnvironment envir = new HostingEnvironment();

            TestConfigServerStartup.Response     = "";
            TestConfigServerStartup.ReturnStatus = 200;
            var builder = new WebHostBuilder().UseStartup <TestConfigServerStartup>().UseEnvironment(envir.EnvironmentName);
            var server  = new TestServer(builder);

            var uri = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);

            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client = new EurekaHttpClient(cconfig, server.CreateClient());
            EurekaHttpResponse resp = await client.CancelAsync("foo", "bar");

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.OK, resp.StatusCode);
            Assert.NotNull(resp.Headers);
            Assert.Equal("DELETE", TestConfigServerStartup.LastRequest.Method);
            Assert.Equal("localhost:8888", TestConfigServerStartup.LastRequest.Host.Value);
            Assert.Equal("/apps/foo/bar", TestConfigServerStartup.LastRequest.Path.Value);
        }
        public async void GetInstanceAsync_Throws_IfIDNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.GetInstanceAsync(null));

            Assert.Contains("id", ex.Message);
        }
        public async void GetApplicationAsync_Throws_IfAppNameNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.GetApplicationAsync(null));

            Assert.Contains("appName", ex.Message);
        }
        public async void GetSecureVipAsync_Throws_IfVipAddressNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.GetSecureVipAsync(null));

            Assert.Contains("secureVipAddress", ex.Message);
        }
        public async void SendHeartbeat_Throws_IfInstanceInfoNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentNullException>(() => client.SendHeartBeatAsync("foo", "bar", null, InstanceStatus.DOWN));

            Assert.Contains("info", ex.Message);
        }
        public async void StatusUpdateAsync_Throws_IfIdNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.StatusUpdateAsync("appName", null, InstanceStatus.UP, null));

            Assert.Contains("id", ex.Message);
        }
        public async System.Threading.Tasks.Task StatusUpdateAsync_Throws_IfInstanceInfoNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentNullException>(() => client.StatusUpdateAsync("appName", "bar", InstanceStatus.UP, null));

            Assert.Contains("info", ex.Message);
        }
        public async System.Threading.Tasks.Task CancelAsync_Throws_IfAppNameNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.CancelAsync(null, "id"));

            Assert.Contains("appName", ex.Message);
        }
        public async void Register_Throws_IfInstanceInfoNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentNullException>(() => client.RegisterAsync(null));

            Assert.Contains("info", ex.Message);
        }
        public async System.Threading.Tasks.Task GetVipAsync_Throws_IfVipAddressNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.GetVipAsync(null));

            Assert.Contains("vipAddress", ex.Message);
        }
        public async System.Threading.Tasks.Task SendHeartbeat_Throws_IfIdNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.SendHeartBeatAsync("foo", null, new InstanceInfo(), InstanceStatus.DOWN));

            Assert.Contains("id", ex.Message);
        }
        public async void CancelAsync_Throws_IfAppNameNotNullAndIDNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.CancelAsync("appName", null));

            Assert.Contains("id", ex.Message);
        }
        public async System.Threading.Tasks.Task DeleteStatusOverrideAsync_Throws_IfIdNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentException>(() => client.DeleteStatusOverrideAsync("appName", null, null));

            Assert.Contains("id", ex.Message);
        }
        public async void DeleteStatusOverrideAsync_Throws_IfInstanceInfoNull()
        {
            var config = new EurekaClientConfig();
            var client = new EurekaHttpClient(config);
            var ex     = await Assert.ThrowsAsync <ArgumentNullException>(() => client.DeleteStatusOverrideAsync("appName", "bar", null));

            Assert.Contains("info", ex.Message);
        }
Beispiel #23
0
        public async void GetInstanceAsync_InvokesServer_ReturnsExpectedInstances()
        {
            var json    = @"{ 
'instance':
    {
    'instanceId':'DESKTOP-GNQ5SUT',
    'app':'FOOBAR',
    'appGroupName':null,
    'ipAddr':'192.168.0.147',
    'sid':'na',
    'port':{'@enabled':true,'$':80},
    'securePort':{'@enabled':false,'$':443},
    'homePageUrl':'http://*****:*****@class':'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo','name':'MyOwn'},
    'hostName':'DESKTOP-GNQ5SUT',
    'status':'UP',
    'overriddenstatus':'UNKNOWN',
    'leaseInfo':{'renewalIntervalInSecs':30,'durationInSecs':90,'registrationTimestamp':0,'lastRenewalTimestamp':0,'renewalTimestamp':0,'evictionTimestamp':0,'serviceUpTimestamp':0},
    'isCoordinatingDiscoveryServer':false,
    'metadata':{'@class':'java.util.Collections$EmptyMap','metadata':null},
    'lastUpdatedTimestamp':1458116137663,
    'lastDirtyTimestamp':1458116137663,
    'actionType':'ADDED',
    'asgName':null
    }
}";
            var startup = new TestConfigServerStartup(json, 200);
            var server  = TestServer.Create(startup.Configure);
            var uri     = "http://localhost:8888/";

            server.BaseAddress = new Uri(uri);

            var cconfig = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = uri
            };
            var client = new EurekaHttpClient(cconfig, server.CreateClient());
            EurekaHttpResponse <InstanceInfo> resp = await client.GetInstanceAsync("DESKTOP-GNQ5SUT");

            Assert.NotNull(resp);
            Assert.Equal(HttpStatusCode.OK, resp.StatusCode);
            Assert.Equal("GET", startup.LastRequest.Method);
            Assert.Equal("localhost:8888", startup.LastRequest.Host.Value);
            Assert.Equal("/instances/DESKTOP-GNQ5SUT", startup.LastRequest.Path.Value);
            Assert.NotNull(resp.Headers);
            Assert.NotNull(resp.Response);
            Assert.Equal("DESKTOP-GNQ5SUT", resp.Response.InstanceId);
            Assert.Equal("DESKTOP-GNQ5SUT:80", resp.Response.VipAddress);
            Assert.Equal("DESKTOP-GNQ5SUT", resp.Response.HostName);
            Assert.Equal("192.168.0.147", resp.Response.IpAddr);
            Assert.Equal(InstanceStatus.UP, resp.Response.Status);
        }
 public async void RegisterAsync_ThrowsHttpRequestException_ServerTimeout()
 {
     var config = new EurekaClientConfig()
     {
         EurekaServerServiceUrls = "http://localhost:9999/"
     };
     var client = new EurekaHttpClient(config);
     HttpRequestException ex = await Assert.ThrowsAsync <HttpRequestException>(() => client.RegisterAsync(new InstanceInfo()));
 }
 public async System.Threading.Tasks.Task RegisterAsync_ThrowsHttpRequestException_ServerTimeout()
 {
     var config = new EurekaClientConfig()
     {
         EurekaServerServiceUrls = "http://localhost:9999/",
         EurekaServerRetryCount  = 0
     };
     var client = new EurekaHttpClient(config);
     var ex     = await Assert.ThrowsAsync <EurekaTransportException>(() => client.RegisterAsync(new InstanceInfo()));
 }
        public void GetServiceUrlCandidates_NoFailingUrls_ReturnsExpected()
        {
            var config = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = "http://*****:*****@boo:123/eureka/,http://user:pass@foo:123/eureka"
            };
            var client = new EurekaHttpClient(config);
            var result = client.GetServiceUrlCandidates();

            Assert.Contains("http://*****:*****@boo:123/eureka/", result);
            Assert.Contains("http://*****:*****@foo:123/eureka/", result);
        }
        public void GetRequestMessage_Adds_Auth_When_Creds_In_Url()
        {
            var config = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = "http://*****:*****@boo:123/eureka/"
            };
            var client = new EurekaHttpClient(config);
            var result = client.GetRequestMessage(HttpMethod.Post, new Uri(config.EurekaServerServiceUrls));

            Assert.Equal(HttpMethod.Post, result.Method);
            Assert.Equal(new Uri("http://boo:123/eureka/"), result.RequestUri);
            Assert.True(result.Headers.Contains("Authorization"));
        }
        public void TestRegister()
        {
            var tmp          = Uri.EscapeDataString("AA-BB:DD CC?");
            var clientConfig = new EurekaClientConfig();

            ConfigurationBinder.Bind(Configuration.GetSection("eureka:client"), clientConfig);

            // Build Eureka instance info config from configuration
            var instConfig = new EurekaInstanceConfig();

            ConfigurationBinder.Bind(Configuration.GetSection("eureka:instance"), instConfig);

            IEurekaHttpClient eurekaHttpClient = new EurekaHttpClient(clientConfig);
            var result = eurekaHttpClient.RegisterAsync(InstanceInfo.FromInstanceConfig(instConfig)).ConfigureAwait(false).GetAwaiter().GetResult();
        }
        public void GetRequestUri_ReturnsCorrect_WithQueryArguments()
        {
            var config = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = "http://boo:123/eureka/"
            };
            var client = new EurekaHttpClient(config, new HttpClient());
            Dictionary <string, string> queryArgs = new Dictionary <string, string>()
            {
                { "foo", "bar" },
                { "bar", "foo" }
            };
            Uri result = client.GetRequestUri("http://boo:123/eureka", queryArgs);

            Assert.NotNull(result);
            Assert.Equal("http://boo:123/eureka?foo=bar&bar=foo", result.ToString());
        }
        public void GetRequestMessage_ReturnsCorrectMesssage_WithAdditionalHeaders()
        {
            Dictionary <string, string> headers = new Dictionary <string, string>()
            {
                { "foo", "bar" }
            };
            var config = new EurekaClientConfig()
            {
                EurekaServerServiceUrls = "http://boo:123/eureka/"
            };
            var client = new EurekaHttpClient(config, headers);
            var result = client.GetRequestMessage(HttpMethod.Post, new Uri("http://boo:123/eureka/"));

            Assert.Equal(HttpMethod.Post, result.Method);
            Assert.Equal(new Uri("http://boo:123/eureka/"), result.RequestUri);
            Assert.True(result.Headers.Contains("foo"));
        }