internal JsonInstanceInfo ToJsonInstance() { JsonInstanceInfo jinfo = new JsonInstanceInfo(); jinfo.InstanceId = this.InstanceId; jinfo.Sid = (this.Sid == null) ? "na" : this.Sid; jinfo.AppName = this.AppName; jinfo.AppGroupName = this.AppGroupName; jinfo.IpAddr = this.IpAddr; jinfo.Port = new JsonInstanceInfo.JsonPortWrapper(this.IsUnsecurePortEnabled, this.Port); jinfo.SecurePort = new JsonInstanceInfo.JsonPortWrapper(this.IsSecurePortEnabled, this.SecurePort); jinfo.HomePageUrl = this.HomePageUrl; jinfo.StatusPageUrl = this.StatusPageUrl; jinfo.HealthCheckUrl = this.HealthCheckUrl; jinfo.SecureHealthCheckUrl = this.SecureHealthCheckUrl; jinfo.VipAddress = this.VipAddress; jinfo.SecureVipAddress = this.SecureVipAddress; jinfo.CountryId = this.CountryId; jinfo.DataCenterInfo = (this.DataCenterInfo == null) ? null : ((AppInfo.DataCenterInfo)DataCenterInfo).ToJson(); jinfo.HostName = this.HostName; jinfo.Status = this.Status; jinfo.OverriddenStatus = this.OverriddenStatus; jinfo.LeaseInfo = (this.LeaseInfo == null) ? null : this.LeaseInfo.ToJson(); jinfo.IsCoordinatingDiscoveryServer = this.IsCoordinatingDiscoveryServer; jinfo.LastUpdatedTimestamp = DateTimeConversions.ToJavaMillis(new DateTime(this.LastUpdatedTimestamp, DateTimeKind.Utc)); jinfo.LastDirtyTimestamp = DateTimeConversions.ToJavaMillis(new DateTime(this.LastDirtyTimestamp, DateTimeKind.Utc)); jinfo.Actiontype = this.Actiontype; jinfo.AsgName = this.AsgName; jinfo.Metadata = (this.Metadata.Count == 0) ? new Dictionary <string, string>() { { "@class", "java.util.Collections$EmptyMap" } } : this.Metadata; return(jinfo); }
public void ToJsonInstance_DefaultInstanceConfig_Correct() { EurekaInstanceConfig config = new EurekaInstanceConfig(); InstanceInfo info = InstanceInfo.FromInstanceConfig(config); Assert.NotNull(info); JsonInstanceInfo jinfo = info.ToJsonInstance(); // Verify Assert.Equal(config.GetHostName(false), jinfo.InstanceId); Assert.Equal(EurekaInstanceConfig.Default_Appname.ToUpperInvariant(), jinfo.AppName); Assert.Null(jinfo.AppGroupName); Assert.Equal(config.IpAddress, jinfo.IpAddr); Assert.Equal("na", jinfo.Sid); Assert.NotNull(jinfo.Port); Assert.Equal(80, jinfo.Port.Port); Assert.True(Boolean.Parse(jinfo.Port.Enabled)); Assert.NotNull(jinfo.SecurePort); Assert.Equal(443, jinfo.SecurePort.Port); Assert.False(Boolean.Parse(jinfo.SecurePort.Enabled)); Assert.Equal("http://" + config.GetHostName(false) + ":" + 80 + "/", jinfo.HomePageUrl); Assert.Equal("http://" + config.GetHostName(false) + ":" + 80 + "/Status", jinfo.StatusPageUrl); Assert.Equal("http://" + config.GetHostName(false) + ":" + 80 + "/healthcheck", jinfo.HealthCheckUrl); Assert.Null(jinfo.SecureHealthCheckUrl); Assert.Equal(config.GetHostName(false) + ":" + 80, jinfo.VipAddress); Assert.Equal(config.GetHostName(false) + ":" + 443, jinfo.SecureVipAddress); Assert.Equal(1, jinfo.CountryId); Assert.NotNull(jinfo.DataCenterInfo); Assert.Equal("MyOwn", jinfo.DataCenterInfo.Name); Assert.Equal("com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo", jinfo.DataCenterInfo.ClassName); Assert.Equal(config.GetHostName(false), jinfo.HostName); Assert.Equal(InstanceStatus.STARTING, jinfo.Status); Assert.Equal(InstanceStatus.UNKNOWN, jinfo.OverriddenStatus); Assert.NotNull(jinfo.LeaseInfo); Assert.Equal(30, jinfo.LeaseInfo.RenewalIntervalInSecs); Assert.Equal(90, jinfo.LeaseInfo.DurationInSecs); Assert.Equal(0, jinfo.LeaseInfo.RegistrationTimestamp); Assert.Equal(0, jinfo.LeaseInfo.LastRenewalTimestamp); Assert.Equal(0, jinfo.LeaseInfo.LastRenewalTimestampLegacy); Assert.Equal(0, jinfo.LeaseInfo.EvictionTimestamp); Assert.Equal(0, jinfo.LeaseInfo.ServiceUpTimestamp); Assert.False(jinfo.IsCoordinatingDiscoveryServer); Assert.NotNull(jinfo.Metadata); Assert.Equal(1, jinfo.Metadata.Count); Assert.True(jinfo.Metadata.ContainsKey("@class")); Assert.True(jinfo.Metadata.ContainsValue("java.util.Collections$EmptyMap")); Assert.Equal(jinfo.LastDirtyTimestamp, jinfo.LastUpdatedTimestamp); Assert.Equal(ActionType.ADDED, jinfo.Actiontype); Assert.Null(jinfo.AsgName); }
public async void RegisterAsync_SendsValidPOSTData() { 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() { AppName = "foobar" }; 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(TestConfigServerStartup.LastRequest); Assert.Equal("POST", TestConfigServerStartup.LastRequest.Method); Assert.Equal("localhost:8888", TestConfigServerStartup.LastRequest.Host.Value); Assert.Equal("/apps/FOOBAR", TestConfigServerStartup.LastRequest.Path.Value); // Check JSON payload JsonInstanceInfoRoot recvJson = JsonInstanceInfoRoot.Deserialize(TestConfigServerStartup.RequestBody); Assert.NotNull(recvJson); Assert.NotNull(recvJson.Instance); // Compare a few random values JsonInstanceInfo sentJsonObj = info.ToJsonInstance(); Assert.Equal(sentJsonObj.Actiontype, recvJson.Instance.Actiontype); Assert.Equal(sentJsonObj.AppName, recvJson.Instance.AppName); Assert.Equal(sentJsonObj.HostName, recvJson.Instance.HostName); }
private static string GetInstanceIdFromJson(JsonInstanceInfo jinfo, Dictionary <string, string> metaData) { if (string.IsNullOrEmpty(jinfo.InstanceId)) { if (metaData == null) { return(null); } string mid = null; if (metaData.TryGetValue("instanceId", out mid)) { return(jinfo.HostName + ":" + mid); } return(null); } else { return(jinfo.InstanceId); } }
internal static InstanceInfo FromJsonInstance(JsonInstanceInfo json) { var info = new InstanceInfo(); if (json != null) { info._sid = json.Sid ?? "na"; info.AppName = json.AppName; info.AppGroupName = json.AppGroupName; info.IpAddr = json.IpAddr; info.Port = (json.Port == null) ? 0 : json.Port.Port; info.IsUnsecurePortEnabled = json.Port != null && json.Port.Enabled; info.SecurePort = (json.SecurePort == null) ? 0 : json.SecurePort.Port; info.IsSecurePortEnabled = json.SecurePort != null && json.SecurePort.Enabled; info.HomePageUrl = json.HomePageUrl; info.StatusPageUrl = json.StatusPageUrl; info.HealthCheckUrl = json.HealthCheckUrl; info.SecureHealthCheckUrl = json.SecureHealthCheckUrl; info.VipAddress = json.VipAddress; info.SecureVipAddress = json.SecureVipAddress; info.CountryId = json.CountryId; info.DataCenterInfo = (json.DataCenterInfo == null) ? null : AppInfo.DataCenterInfo.FromJson(json.DataCenterInfo); info.HostName = json.HostName; info.Status = json.Status; info.OverriddenStatus = json.OverriddenStatus; info.LeaseInfo = LeaseInfo.FromJson(json.LeaseInfo); info.IsCoordinatingDiscoveryServer = json.IsCoordinatingDiscoveryServer; info.LastUpdatedTimestamp = DateTimeConversions.FromJavaMillis(json.LastUpdatedTimestamp).Ticks; info.LastDirtyTimestamp = DateTimeConversions.FromJavaMillis(json.LastDirtyTimestamp).Ticks; info.Actiontype = json.Actiontype; info.AsgName = json.AsgName; info._metaData = GetMetaDataFromJson(json.Metadata); info.InstanceId = GetInstanceIdFromJson(json, info._metaData); } return(info); }
internal JsonInstanceInfo ToJsonInstance() { var jinfo = new JsonInstanceInfo { InstanceId = InstanceId, Sid = Sid ?? "na", AppName = AppName, AppGroupName = AppGroupName, IpAddr = IpAddr, Port = new JsonInstanceInfo.JsonPortWrapper(IsUnsecurePortEnabled, Port), SecurePort = new JsonInstanceInfo.JsonPortWrapper(IsSecurePortEnabled, SecurePort), HomePageUrl = HomePageUrl, StatusPageUrl = StatusPageUrl, HealthCheckUrl = HealthCheckUrl, SecureHealthCheckUrl = SecureHealthCheckUrl, VipAddress = VipAddress, SecureVipAddress = SecureVipAddress, CountryId = CountryId, DataCenterInfo = (DataCenterInfo == null) ? null : ((DataCenterInfo)DataCenterInfo).ToJson(), HostName = HostName, Status = Status, OverriddenStatus = OverriddenStatus, LeaseInfo = LeaseInfo?.ToJson(), IsCoordinatingDiscoveryServer = IsCoordinatingDiscoveryServer, LastUpdatedTimestamp = DateTimeConversions.ToJavaMillis(new DateTime(LastUpdatedTimestamp, DateTimeKind.Utc)), LastDirtyTimestamp = DateTimeConversions.ToJavaMillis(new DateTime(LastDirtyTimestamp, DateTimeKind.Utc)), Actiontype = Actiontype, AsgName = AsgName, Metadata = (Metadata.Count == 0) ? new Dictionary <string, string>() { { "@class", "java.util.Collections$EmptyMap" } } : Metadata }; return(jinfo); }
internal static InstanceInfo FromJsonInstance(JsonInstanceInfo json) { InstanceInfo info = new InstanceInfo(); if (json != null) { info._sid = (json.Sid == null) ? "na" : json.Sid; info._appName = json.AppName; info._appGroupName = json.AppGroupName; info._ipAddr = json.IpAddr; info._port = (json.Port == null) ? 0 : json.Port.Port; info._isUnsecurePortEnabled = (json.Port == null) ? false : Boolean.Parse(json.Port.Enabled); info._securePort = (json.SecurePort == null) ? 0 : json.SecurePort.Port; info._isSecurePortEnabled = (json.Port == null) ? false : Boolean.Parse(json.SecurePort.Enabled); info._homePageUrl = json.HomePageUrl; info._statusPageUrl = json.StatusPageUrl; info._healthCheckUrl = json.HealthCheckUrl; info._secureHealthCheckUrl = json.SecureHealthCheckUrl; info._vipAddress = json.VipAddress; info._secureVipAddress = json.SecureVipAddress; info._countryId = json.CountryId; info._dataCenterInfo = (json.DataCenterInfo == null) ? null : AppInfo.DataCenterInfo.FromJson(json.DataCenterInfo); info._hostName = json.HostName; info._status = json.Status; info._overRiddenStatus = json.OverriddenStatus; info._leaseInfo = LeaseInfo.FromJson(json.LeaseInfo); info._isCoordinatingDiscoveryServer = json.IsCoordinatingDiscoveryServer; info._lastUpdatedTimestamp = DateTimeConversions.FromJavaMillis(json.LastUpdatedTimestamp).Ticks; info._lastDirtyTimestamp = DateTimeConversions.FromJavaMillis(json.LastDirtyTimestamp).Ticks; info._actionType = json.Actiontype; info._asgName = json.AsgName; info._metaData = GetMetaDataFromJson(json.Metadata); info._instanceId = GetInstanceIdFromJson(json, info._metaData); } return(info); }
public void FromJsonInstance_Correct() { JsonInstanceInfo jinfo = new JsonInstanceInfo() { InstanceId = "InstanceId", AppName = "AppName", 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("", "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" }; InstanceInfo info = InstanceInfo.FromJsonInstance(jinfo); Assert.NotNull(info); // Verify Assert.Equal("InstanceId", info.InstanceId); Assert.Equal("AppName", 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.Equal(0, info.Metadata.Count); Assert.Equal(635935705417080000L, info.LastUpdatedTimestamp); Assert.Equal(635935705417080000L, info.LastDirtyTimestamp); Assert.Equal(ActionType.ADDED, info.Actiontype); Assert.Equal("AsgName", info.AsgName); }
public void Deserialize_GoodJson() { var json = @" { ""instanceId"":""localhost:foo"", ""hostName"":""localhost"", ""app"":""FOO"", ""ipAddr"":""192.168.56.1"", ""status"":""UP"", ""overriddenstatus"":""UNKNOWN"", ""port"":{""$"":8080,""@enabled"":""true""}, ""securePort"":{""$"":443,""@enabled"":""false""}, ""countryId"":1, ""dataCenterInfo"":{""@class"":""com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo"",""name"":""MyOwn""}, ""leaseInfo"":{""renewalIntervalInSecs"":30,""durationInSecs"":90,""registrationTimestamp"":1457714988223,""lastRenewalTimestamp"":1457716158319,""evictionTimestamp"":0,""serviceUpTimestamp"":1457714988223}, ""metadata"":{""@class"":""java.util.Collections$EmptyMap""}, ""homePageUrl"":""http://*****:*****@class")); Assert.True(metadata.ContainsValue("java.util.Collections$EmptyMap")); Assert.Equal("http://localhost:8080/", result.HomePageUrl); Assert.Equal("http://localhost:8080/info", result.StatusPageUrl); Assert.Equal("http://localhost:8080/health", result.HealthCheckUrl); Assert.Equal("foo", result.VipAddress); Assert.False(result.IsCoordinatingDiscoveryServer); Assert.Equal(1457714988223, result.LastUpdatedTimestamp); Assert.Equal(1457714988172, result.LastDirtyTimestamp); Assert.Equal(ActionType.ADDED, result.Actiontype); }
public void FromJsonApplications_WithMissingInstanceId() { 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.Null(app.GetInstance("InstanceId")); }
public void Deserialize_GoodJson() { var json = @" { 'instanceId':'localhost:foo', 'hostName':'localhost', 'app':'FOO', 'ipAddr':'192.168.56.1', 'status':'UP', 'overriddenstatus':'UNKNOWN', 'port':{'$':8080,'@enabled':'true'}, 'securePort':{'$':443,'@enabled':'false'}, 'countryId':1, 'dataCenterInfo':{'@class':'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo','name':'MyOwn'}, 'leaseInfo':{'renewalIntervalInSecs':30,'durationInSecs':90,'registrationTimestamp':1457714988223,'lastRenewalTimestamp':1457716158319,'evictionTimestamp':0,'serviceUpTimestamp':1457714988223}, 'metadata':{'@class':'java.util.Collections$EmptyMap'}, 'homePageUrl':'http://*****:*****@class")); Assert.True(metadata.ContainsValue("java.util.Collections$EmptyMap")); Assert.Equal("http://localhost:8080/", result.HomePageUrl); Assert.Equal("http://localhost:8080/info", result.StatusPageUrl); Assert.Equal("http://localhost:8080/health", result.HealthCheckUrl); Assert.Equal("foo", result.VipAddress); Assert.False(result.IsCoordinatingDiscoveryServer); Assert.Equal(1457714988223, result.LastUpdatedTimestamp); Assert.Equal(1457714988172, result.LastDirtyTimestamp); Assert.Equal(ActionType.ADDED, result.Actiontype); }
public void FromJsonApplications_Correct() { 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.NotNull(app.GetInstance("InstanceId")); var 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); }