protected virtual async Task <EurekaHttpResponse <Applications> > DoGetApplicationsAsync(string path, ISet <string> regions) { string regionParams = CommaDelimit(regions); var queryArgs = new Dictionary <string, string>(); if (regionParams != null) { queryArgs.Add("regions", regionParams); } HttpClient client = GetHttpClient(_config); var requestUri = GetRequestUri(_serviceUrl + path, queryArgs); var request = GetRequestMessage(HttpMethod.Get, requestUri); #if NET452 // If certificate validation is disabled, inject a callback to handle properly RemoteCertificateValidationCallback prevValidator = null; if (!_config.ValidateCertificates) { prevValidator = ServicePointManager.ServerCertificateValidationCallback; ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; } #endif try { using (HttpResponseMessage response = await client.SendAsync(request)) { Stream stream = await response.Content.ReadAsStreamAsync(); JsonApplicationsRoot jroot = JsonApplicationsRoot.Deserialize(stream); Applications appsResp = null; if (response.StatusCode == HttpStatusCode.OK) { if (jroot != null) { appsResp = Applications.FromJsonApplications(jroot.Applications); } } _logger?.LogDebug("DoGetApplicationsAsync {0}, status: {1}, applications: {2}", requestUri.ToString(), response.StatusCode, ((appsResp != null) ? appsResp.ToString() : "null")); EurekaHttpResponse <Applications> resp = new EurekaHttpResponse <Applications>(response.StatusCode, appsResp); resp.Headers = response.Headers; return(resp); } } catch (Exception e) { _logger?.LogError("DoGetApplicationsAsync Exception: {0}", e); throw; } finally { DisposeHttpClient(client); #if NET452 ServicePointManager.ServerCertificateValidationCallback = prevValidator; #endif } }
protected async Task <EurekaHttpResponse <Applications> > DoGetApplicationsAsync(string path, ISet <string> regions) { string regionParams = CommaDelimit(regions); var queryArgs = new Dictionary <string, string>(); if (regionParams != null) { queryArgs.Add("regions", regionParams); } HttpClient client = GetHttpClient(_config); var requestUri = GetRequestUri(_serviceUrl + path, queryArgs); var request = GetRequestMessage(HttpMethod.Get, requestUri); try { using (HttpResponseMessage response = await client.SendAsync(request)) { Stream stream = await response.Content.ReadAsStreamAsync(); JsonApplicationsRoot jroot = JsonApplicationsRoot.Deserialize(stream); Applications appsResp = null; if (response.StatusCode == HttpStatusCode.OK) { if (jroot != null) { appsResp = Applications.FromJsonApplications(jroot.Applications); } } Trace.TraceInformation("DoGetApplicationsAsync {0}, status: {1}, applications: {2}", requestUri.ToString(), (appsResp != null) ? appsResp.ToString() : "null"); EurekaHttpResponse <Applications> resp = new EurekaHttpResponse <Applications>(response.StatusCode, appsResp) { Headers = response.Headers }; return(resp); } } catch (Exception e) { Trace.TraceError("DoGetApplicationsAsync Exception: {0}", e); throw; } finally { DisposeHttpClient(client); } }
public void FromJsonApplications_Correct() { JsonInstanceInfo jinfo = new JsonInstanceInfo() { InstanceId = "InstanceId", AppName = "myApp", AppGroupName = "AppGroupName", IpAddr = "IpAddr", Sid = "Sid", Port = new JsonInstanceInfo.JsonPortWrapper(true, 100), SecurePort = new JsonInstanceInfo.JsonPortWrapper(false, 100), HomePageUrl = "HomePageUrl", StatusPageUrl = "StatusPageUrl", HealthCheckUrl = "HealthCheckUrl", SecureHealthCheckUrl = "SecureHealthCheckUrl", VipAddress = "VipAddress", SecureVipAddress = "SecureVipAddress", CountryId = 1, DataCenterInfo = new JsonInstanceInfo.JsonDataCenterInfo(string.Empty, "MyOwn"), HostName = "HostName", Status = InstanceStatus.DOWN, OverriddenStatus = InstanceStatus.OUT_OF_SERVICE, LeaseInfo = new JsonLeaseInfo() { RenewalIntervalInSecs = 1, DurationInSecs = 2, RegistrationTimestamp = 1457973741708, LastRenewalTimestamp = 1457973741708, LastRenewalTimestampLegacy = 1457973741708, EvictionTimestamp = 1457973741708, ServiceUpTimestamp = 1457973741708 }, IsCoordinatingDiscoveryServer = false, Metadata = new Dictionary <string, string>() { { "@class", "java.util.Collections$EmptyMap" } }, LastUpdatedTimestamp = 1457973741708, LastDirtyTimestamp = 1457973741708, Actiontype = ActionType.ADDED, AsgName = "AsgName" }; JsonApplication japp = new JsonApplication() { Name = "myApp", Instances = new List <JsonInstanceInfo> { jinfo } }; JsonApplications japps = new JsonApplications() { AppsHashCode = "AppsHashCode", VersionDelta = 1L, Applications = new List <JsonApplication>() { japp } }; Applications apps = Applications.FromJsonApplications(japps); Assert.Equal("AppsHashCode", apps.AppsHashCode); Assert.Equal(1, apps.Version); Assert.NotNull(apps.ApplicationMap); Assert.Single(apps.ApplicationMap); Application app = apps.GetRegisteredApplication("myApp"); // Verify Assert.NotNull(app); Assert.Equal("myApp", app.Name); Assert.NotNull(app.Instances); Assert.Equal(1, app.Count); Assert.Equal(1, app.Instances.Count); Assert.NotNull(app.GetInstance("InstanceId")); InstanceInfo info = app.GetInstance("InstanceId"); Assert.Equal("InstanceId", info.InstanceId); Assert.Equal("myApp", info.AppName); Assert.Equal("AppGroupName", info.AppGroupName); Assert.Equal("IpAddr", info.IpAddr); Assert.Equal("Sid", info.Sid); Assert.Equal(100, info.Port); Assert.True(info.IsUnsecurePortEnabled); Assert.Equal(100, info.SecurePort); Assert.False(info.IsSecurePortEnabled); Assert.Equal("HomePageUrl", info.HomePageUrl); Assert.Equal("StatusPageUrl", info.StatusPageUrl); Assert.Equal("HealthCheckUrl", info.HealthCheckUrl); Assert.Equal("SecureHealthCheckUrl", info.SecureHealthCheckUrl); Assert.Equal("VipAddress", info.VipAddress); Assert.Equal("SecureVipAddress", info.SecureVipAddress); Assert.Equal(1, info.CountryId); Assert.Equal("MyOwn", info.DataCenterInfo.Name.ToString()); Assert.Equal("HostName", info.HostName); Assert.Equal(InstanceStatus.DOWN, info.Status); Assert.Equal(InstanceStatus.OUT_OF_SERVICE, info.OverriddenStatus); Assert.NotNull(info.LeaseInfo); Assert.Equal(1, info.LeaseInfo.RenewalIntervalInSecs); Assert.Equal(2, info.LeaseInfo.DurationInSecs); Assert.Equal(635935705417080000L, info.LeaseInfo.RegistrationTimestamp); Assert.Equal(635935705417080000L, info.LeaseInfo.LastRenewalTimestamp); Assert.Equal(635935705417080000L, info.LeaseInfo.LastRenewalTimestampLegacy); Assert.Equal(635935705417080000L, info.LeaseInfo.EvictionTimestamp); Assert.Equal(635935705417080000L, info.LeaseInfo.ServiceUpTimestamp); Assert.False(info.IsCoordinatingDiscoveryServer); Assert.NotNull(info.Metadata); Assert.Empty(info.Metadata); Assert.Equal(635935705417080000L, info.LastUpdatedTimestamp); Assert.Equal(635935705417080000L, info.LastDirtyTimestamp); Assert.Equal(ActionType.ADDED, info.Actiontype); Assert.Equal("AsgName", info.AsgName); }
public void FromJsonApplications_WithMissingInstanceId() { var jinfo = new JsonInstanceInfo() { // InstanceId = "InstanceId", AppName = "myApp", AppGroupName = "AppGroupName", IpAddr = "IpAddr", Sid = "Sid", Port = new JsonInstanceInfo.JsonPortWrapper(true, 100), SecurePort = new JsonInstanceInfo.JsonPortWrapper(false, 100), HomePageUrl = "HomePageUrl", StatusPageUrl = "StatusPageUrl", HealthCheckUrl = "HealthCheckUrl", SecureHealthCheckUrl = "SecureHealthCheckUrl", VipAddress = "VipAddress", SecureVipAddress = "SecureVipAddress", CountryId = 1, DataCenterInfo = new JsonInstanceInfo.JsonDataCenterInfo(string.Empty, "MyOwn"), HostName = "HostName", Status = InstanceStatus.DOWN, OverriddenStatus = InstanceStatus.OUT_OF_SERVICE, LeaseInfo = new JsonLeaseInfo() { RenewalIntervalInSecs = 1, DurationInSecs = 2, RegistrationTimestamp = 1457973741708, LastRenewalTimestamp = 1457973741708, LastRenewalTimestampLegacy = 1457973741708, EvictionTimestamp = 1457973741708, ServiceUpTimestamp = 1457973741708 }, IsCoordinatingDiscoveryServer = false, Metadata = new Dictionary <string, string>() { { "@class", "java.util.Collections$EmptyMap" } }, LastUpdatedTimestamp = 1457973741708, LastDirtyTimestamp = 1457973741708, Actiontype = ActionType.ADDED, AsgName = "AsgName" }; var japp = new JsonApplication() { Name = "myApp", Instances = new List <JsonInstanceInfo> { jinfo } }; var japps = new JsonApplications() { AppsHashCode = "AppsHashCode", VersionDelta = 1L, Applications = new List <JsonApplication>() { japp } }; var apps = Applications.FromJsonApplications(japps); Assert.Equal("AppsHashCode", apps.AppsHashCode); Assert.Equal(1, apps.Version); Assert.NotNull(apps.ApplicationMap); Assert.Single(apps.ApplicationMap); var app = apps.GetRegisteredApplication("myApp"); // Verify Assert.NotNull(app); Assert.Equal("myApp", app.Name); Assert.NotNull(app.Instances); Assert.Equal(1, app.Count); Assert.Equal(1, app.Instances.Count); Assert.Null(app.GetInstance("InstanceId")); }