public void Constructor_Initializes_Correctly() { var clientConfig = new EurekaClientOptions() { ShouldRegisterWithEureka = false, ShouldFetchRegistry = false }; var cwrapper = new TestOptionMonitorWrapper <EurekaClientOptions>(clientConfig); var instConfig = new EurekaInstanceOptions(); var iwrapper = new TestOptionMonitorWrapper <EurekaInstanceOptions>(instConfig); var appMgr = new EurekaApplicationInfoManager(iwrapper); var client = new EurekaDiscoveryClient(cwrapper, iwrapper, appMgr); Assert.NotNull(client.ClientConfig); Assert.Equal(clientConfig, client.ClientConfig); Assert.NotNull(client.HttpClient); Assert.NotNull(client.Description); Assert.NotNull(client.Services); Assert.Empty(client.Services); var thisService = client.GetLocalServiceInstance(); Assert.NotNull(thisService); Assert.Equal(instConfig.GetHostName(false), thisService.Host); Assert.Equal(instConfig.SecurePortEnabled, thisService.IsSecure); Assert.NotNull(thisService.Metadata); Assert.Equal(instConfig.NonSecurePort, thisService.Port); Assert.Equal(instConfig.AppName, thisService.ServiceId); Assert.NotNull(thisService.Uri); string scheme = instConfig.SecurePortEnabled ? "https" : "http"; int uriPort = instConfig.SecurePortEnabled ? instConfig.SecurePort : instConfig.NonSecurePort; var uri = new Uri(scheme + "://" + instConfig.GetHostName(false) + ":" + uriPort.ToString()); Assert.Equal(uri, thisService.Uri); }
public void Constructor_ConfiguresEurekaDiscovery_Correctly() { // Arrange var appsettings = @" { 'eureka': { 'client': { 'eurekaServer': { 'proxyHost': 'proxyHost', 'proxyPort': 100, 'proxyUserName': '******', 'proxyPassword': '******', 'shouldGZipContent': true, 'connectTimeoutSeconds': 100 }, 'allowRedirects': true, 'shouldDisableDelta': true, 'shouldFilterOnlyUpInstances': true, 'shouldFetchRegistry': true, 'registryRefreshSingleVipAddress':'registryRefreshSingleVipAddress', 'shouldOnDemandUpdateStatusChange': true, 'shouldRegisterWithEureka': true, 'registryFetchIntervalSeconds': 100, 'instanceInfoReplicationIntervalSeconds': 100, 'serviceUrl': 'http://localhost:8761/eureka/' }, 'instance': { 'registrationMethod' : 'foobar', 'hostName': 'myHostName', 'instanceId': 'instanceId', 'appName': 'appName', 'appGroup': 'appGroup', 'instanceEnabledOnInit': true, 'port': 100, 'securePort': 100, 'nonSecurePortEnabled': true, 'securePortEnabled': true, 'leaseExpirationDurationInSeconds':100, 'leaseRenewalIntervalInSeconds': 100, 'secureVipAddress': 'secureVipAddress', 'vipAddress': 'vipAddress', 'asgName': 'asgName', 'metadataMap': { 'foo': 'bar', 'bar': 'foo' }, 'statusPageUrlPath': 'statusPageUrlPath', 'statusPageUrl': 'statusPageUrl', 'homePageUrlPath':'homePageUrlPath', 'homePageUrl': 'homePageUrl', 'healthCheckUrlPath': 'healthCheckUrlPath', 'healthCheckUrl':'healthCheckUrl', 'secureHealthCheckUrl':'secureHealthCheckUrl' } } }"; var path = TestHelpers.CreateTempFile(appsettings); string directory = Path.GetDirectoryName(path); string fileName = Path.GetFileName(path); ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); configurationBuilder.SetBasePath(directory); configurationBuilder.AddJsonFile(fileName); var config = configurationBuilder.Build(); var instSection = config.GetSection(EurekaInstanceOptions.EUREKA_INSTANCE_CONFIGURATION_PREFIX); var ro = new EurekaInstanceOptions(); instSection.Bind(ro); Assert.Equal("instanceId", ro.InstanceId); Assert.Equal("appName", ro.AppName); Assert.Equal("appGroup", ro.AppGroupName); Assert.True(ro.IsInstanceEnabledOnInit); Assert.Equal(100, ro.NonSecurePort); Assert.Equal(100, ro.SecurePort); Assert.True(ro.IsNonSecurePortEnabled); Assert.True(ro.SecurePortEnabled); Assert.Equal(100, ro.LeaseExpirationDurationInSeconds); Assert.Equal(100, ro.LeaseRenewalIntervalInSeconds); Assert.Equal("secureVipAddress", ro.SecureVirtualHostName); Assert.Equal("vipAddress", ro.VirtualHostName); Assert.Equal("asgName", ro.ASGName); Assert.Equal("statusPageUrlPath", ro.StatusPageUrlPath); Assert.Equal("statusPageUrl", ro.StatusPageUrl); Assert.Equal("homePageUrlPath", ro.HomePageUrlPath); Assert.Equal("homePageUrl", ro.HomePageUrl); Assert.Equal("healthCheckUrlPath", ro.HealthCheckUrlPath); Assert.Equal("healthCheckUrl", ro.HealthCheckUrl); Assert.Equal("secureHealthCheckUrl", ro.SecureHealthCheckUrl); Assert.Equal("myHostName", ro.GetHostName(false)); Assert.Equal("myHostName", ro.HostName); Assert.Equal("foobar", ro.RegistrationMethod); var map = ro.MetadataMap; Assert.NotNull(map); Assert.Equal(2, map.Count); Assert.Equal("bar", map["foo"]); Assert.Equal("foo", map["bar"]); }
public void Constructor_ConfiguresEurekaDiscovery_Correctly() { var appsettings = @" { ""eureka"": { ""client"": { ""eurekaServer"": { ""proxyHost"": ""proxyHost"", ""proxyPort"": 100, ""proxyUserName"": ""proxyUserName"", ""proxyPassword"": ""proxyPassword"", ""shouldGZipContent"": true, ""connectTimeoutSeconds"": 100 }, ""allowRedirects"": true, ""shouldDisableDelta"": true, ""shouldFilterOnlyUpInstances"": true, ""shouldFetchRegistry"": true, ""registryRefreshSingleVipAddress"":""registryRefreshSingleVipAddress"", ""shouldOnDemandUpdateStatusChange"": true, ""shouldRegisterWithEureka"": true, ""registryFetchIntervalSeconds"": 100, ""instanceInfoReplicationIntervalSeconds"": 100, ""serviceUrl"": ""http://localhost:8761/eureka/"" }, ""instance"": { ""registrationMethod"" : ""foobar"", ""hostName"": ""myHostName"", ""instanceId"": ""instanceId"", ""appName"": ""appName"", ""appGroup"": ""appGroup"", ""instanceEnabledOnInit"": true, ""port"": 100, ""securePort"": 100, ""nonSecurePortEnabled"": true, ""securePortEnabled"": true, ""leaseExpirationDurationInSeconds"":100, ""leaseRenewalIntervalInSeconds"": 100, ""secureVipAddress"": ""secureVipAddress"", ""vipAddress"": ""vipAddress"", ""asgName"": ""asgName"", ""metadataMap"": { ""foo"": ""bar"", ""bar"": ""foo"" }, ""statusPageUrlPath"": ""statusPageUrlPath"", ""statusPageUrl"": ""statusPageUrl"", ""homePageUrlPath"":""homePageUrlPath"", ""homePageUrl"": ""homePageUrl"", ""healthCheckUrlPath"": ""healthCheckUrlPath"", ""healthCheckUrl"":""healthCheckUrl"", ""secureHealthCheckUrl"":""secureHealthCheckUrl"" } } }"; using var sandbox = new Sandbox(); var path = sandbox.CreateFile("appsettings.json", appsettings); var directory = Path.GetDirectoryName(path); var fileName = Path.GetFileName(path); var configurationBuilder = new ConfigurationBuilder(); configurationBuilder.SetBasePath(directory); configurationBuilder.AddJsonFile(fileName); var config = configurationBuilder.Build(); var instSection = config.GetSection(EurekaInstanceOptions.EUREKA_INSTANCE_CONFIGURATION_PREFIX); var ro = new EurekaInstanceOptions(); instSection.Bind(ro); Assert.Equal("instanceId", ro.InstanceId); Assert.Equal("appName", ro.AppName); Assert.Equal("appGroup", ro.AppGroupName); Assert.True(ro.IsInstanceEnabledOnInit); Assert.Equal(100, ro.NonSecurePort); Assert.Equal(100, ro.SecurePort); Assert.True(ro.IsNonSecurePortEnabled); Assert.True(ro.SecurePortEnabled); Assert.Equal(100, ro.LeaseExpirationDurationInSeconds); Assert.Equal(100, ro.LeaseRenewalIntervalInSeconds); Assert.Equal("secureVipAddress", ro.SecureVirtualHostName); Assert.Equal("vipAddress", ro.VirtualHostName); Assert.Equal("asgName", ro.ASGName); Assert.Equal("statusPageUrlPath", ro.StatusPageUrlPath); Assert.Equal("statusPageUrl", ro.StatusPageUrl); Assert.Equal("homePageUrlPath", ro.HomePageUrlPath); Assert.Equal("homePageUrl", ro.HomePageUrl); Assert.Equal("healthCheckUrlPath", ro.HealthCheckUrlPath); Assert.Equal("healthCheckUrl", ro.HealthCheckUrl); Assert.Equal("secureHealthCheckUrl", ro.SecureHealthCheckUrl); Assert.Equal("myHostName", ro.GetHostName(false)); Assert.Equal("myHostName", ro.HostName); Assert.Equal("foobar", ro.RegistrationMethod); var map = ro.MetadataMap; Assert.NotNull(map); Assert.Equal(2, map.Count); Assert.Equal("bar", map["foo"]); Assert.Equal("foo", map["bar"]); }