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