private void BuildServiceInfos() { _serviceInfos.Clear(); CloudFoundryApplicationOptions appOpts = new CloudFoundryApplicationOptions(); var aopSection = _config.GetSection(CloudFoundryApplicationOptions.CONFIGURATION_PREFIX); aopSection.Bind(appOpts); ApplicationInstanceInfo appInfo = new ApplicationInstanceInfo(appOpts); var serviceSection = _config.GetSection(CloudFoundryServicesOptions.CONFIGURATION_PREFIX); CloudFoundryServicesOptions serviceOpts = new CloudFoundryServicesOptions(); serviceSection.Bind(serviceOpts); foreach (KeyValuePair <string, Service[]> serviceopt in serviceOpts.Services) { foreach (Service s in serviceopt.Value) { IServiceInfoFactory factory = FindFactory(s); if (factory != null) { if (factory.Create(s) is ServiceInfo info) { info.ApplicationInfo = appInfo; _serviceInfos.Add(info); } } } } }
private void BuildServiceInfos() { _serviceInfos.Clear(); CloudFoundryApplicationOptions appOpts = new CloudFoundryApplicationOptions(); _config.Bind(appOpts); ApplicationInstanceInfo appInfo = new ApplicationInstanceInfo(appOpts); CloudFoundryServicesOptions serviceOpts = new CloudFoundryServicesOptions(); _config.Bind(serviceOpts); foreach (Service s in serviceOpts.Services) { IServiceInfoFactory factory = FindFactory(s); if (factory != null) { var info = factory.Create(s) as ServiceInfo; if (info != null) { info.ApplicationInfo = appInfo; _serviceInfos.Add(info); } } } }
public async Task SpringBootAdminClient_RegistersAndDeletes() { var appsettings = new Dictionary <string, string>() { ["management:endpoints:path"] = "/management", ["management:endpoints:health:path"] = "myhealth", ["URLS"] = "http://localhost:8080;https://localhost:8082", ["spring:boot:admin:client:url"] = "http://springbootadmin:9090", ["spring:application:name"] = "MySteeltoeApplication", }; var config = new ConfigurationBuilder().AddInMemoryCollection(appsettings).Build(); var appInfo = new ApplicationInstanceInfo(config); var sbaOptions = new SpringBootAdminClientOptions(config, appInfo); var mgmtOptions = new ManagementEndpointOptions(config); var healthOptions = new HealthEndpointOptions(config); var httpMessageHandler = new MockHttpMessageHandler(); httpMessageHandler .Expect(HttpMethod.Post, "http://springbootadmin:9090/instances") .Respond("application/json", "{\"Id\":\"1234567\"}"); httpMessageHandler .Expect(HttpMethod.Delete, "http://springbootadmin:9090/instances/1234567") .Respond(req => new HttpResponseMessage(HttpStatusCode.NoContent)); Assert.Null(SpringBootAdminClientHostedService.RegistrationResult); var service = new SpringBootAdminClientHostedService(sbaOptions, mgmtOptions, healthOptions, httpMessageHandler.ToHttpClient()); await service.StartAsync(default);
public void ConstructorReadsApplicationConfiguration() { // Arrange var configJson = @" { ""Application"" : { ""Name"": ""my-app"", ""ApplicationId"": ""fa05c1a9-0fc1-4fbd-bae1-139850dec7a3"", ""Uris"": [ ""my-app.10.244.0.34.xip.io"", ""my-app2.10.244.0.34.xip.io"" ], ""Version"": ""fb8fbcc6-8d58-479e-bcc7-3b4ce5a7f0ca"" } }"; var path = TestHelpers.CreateTempFile(configJson); var directory = Path.GetDirectoryName(path); var fileName = Path.GetFileName(path); var builder = new ConfigurationBuilder(); builder.SetBasePath(directory); builder.AddJsonFile(fileName); var config = builder.Build(); var options = new ApplicationInstanceInfo(config, true); Assert.Equal("fa05c1a9-0fc1-4fbd-bae1-139850dec7a3", options.ApplicationId); Assert.Equal("my-app", options.ApplicationName); Assert.NotNull(options.Uris); Assert.Equal(2, options.Uris.Count()); Assert.Contains("my-app.10.244.0.34.xip.io", options.Uris); Assert.Contains("my-app2.10.244.0.34.xip.io", options.Uris); Assert.Equal("fb8fbcc6-8d58-479e-bcc7-3b4ce5a7f0ca", options.Version); }
public void Constructor_InitializesValues() { ApplicationInstanceInfo info = new ApplicationInstanceInfo(ApplicationInstanceInfoTest.MakeCloudFoundryApplicationOptions()); var si = new TestServiceInfo("id", info); Assert.Equal("id", si.Id); Assert.Equal(info, si.ApplicationInfo); }
public void Constructor_InitializesValues() { var info = new ApplicationInstanceInfo(TestHelpers.GetConfigurationFromDictionary(new Dictionary <string, string>())); var si = new TestServiceInfo("id", info); Assert.Equal("id", si.Id); Assert.Equal(info, si.ApplicationInfo); }
public ServiceInfo(string id, ApplicationInstanceInfo info) { if (string.IsNullOrEmpty(id)) { throw new ArgumentNullException(nameof(id)); } Id = id; ApplicationInfo = info; }
public void ConstructorUsesAppInfo() { var appsettings = new Dictionary <string, string> { { "application:Uris:0", "http://somehost" } }; var config = new ConfigurationBuilder().AddInMemoryCollection(appsettings).Build(); var appInfo = new ApplicationInstanceInfo(config, string.Empty); var opts = new SpringBootAdminClientOptions(config, appInfo); Assert.NotNull(opts); Assert.Equal("http://somehost", opts.BasePath); }
public void Constructor_ThrowsForNulls() { var emptyConfig = TestHelpers.GetConfigurationFromDictionary(new Dictionary <string, string>()); var appInfo = new ApplicationInstanceInfo(emptyConfig); var serviceInfo = new ServicesOptions(emptyConfig); var ex = Assert.Throws <ArgumentNullException>(() => new CloudFoundryForwarderOptions(null, serviceInfo, emptyConfig)); Assert.Equal("appInfo", ex.ParamName); ex = Assert.Throws <ArgumentNullException>(() => new CloudFoundryForwarderOptions(appInfo, null, emptyConfig)); Assert.Equal("serviceInfo", ex.ParamName); ex = Assert.Throws <ArgumentNullException>(() => new CloudFoundryForwarderOptions(appInfo, serviceInfo, null)); Assert.Equal("config", ex.ParamName); }
public void UpdateConfigurationFindsUrls() { var config = new ConfigurationBuilder().AddInMemoryCollection(new Dictionary <string, string>() { { "urls", "https://myapp:1234;http://0.0.0.0:1233;http://::1233;http://*:1233" } }).Build(); var instOpts = new EurekaInstanceOptions(); var appInfo = new ApplicationInstanceInfo(config); EurekaPostConfigurer.UpdateConfiguration(config, instOpts, appInfo); Assert.Equal("myapp", instOpts.HostName); Assert.Equal(1234, instOpts.SecurePort); Assert.Equal(1233, instOpts.Port); }
public void ApplicationName_ReturnsExpected() { var appsettings = new Dictionary <string, string>(); var builder = new ConfigurationBuilder(); builder.AddInMemoryCollection(appsettings); var config = builder.Build(); var appInstanceInfo = new ApplicationInstanceInfo(config); // Uses Assembly name as default var opts = new TracingOptions(appInstanceInfo, config); Assert.Equal(Assembly.GetEntryAssembly().GetName().Name, opts.Name); // Finds Spring app name appsettings.Add("spring:application:name", "SpringApplicationName"); config = builder.Build(); appInstanceInfo = new ApplicationInstanceInfo(config); opts = new TracingOptions(appInstanceInfo, config); Assert.Equal("SpringApplicationName", opts.Name); // Platform app name overrides spring name appsettings.Add("application:name", "PlatformName"); config = builder.Build(); appInstanceInfo = new ApplicationInstanceInfo(config); opts = new TracingOptions(appInstanceInfo, config); Assert.Equal("PlatformName", opts.Name); // Finds and uses management name appsettings.Add("management:name", "ManagementName"); config = builder.Build(); appInstanceInfo = new ApplicationInstanceInfo(config); opts = new TracingOptions(appInstanceInfo, config); Assert.Equal("ManagementName", opts.Name); // management:tracing name beats all else appsettings.Add("management:tracing:name", "ManagementTracingName"); config = builder.Build(); appInstanceInfo = new ApplicationInstanceInfo(config); opts = new TracingOptions(appInstanceInfo, config); Assert.Equal("ManagementTracingName", opts.Name); }
private void BuildServiceInfos() { ServiceInfos.Clear(); var appInfo = new ApplicationInstanceInfo(_config); var serviceOpts = new ServicesOptions(_config); foreach (var serviceopt in serviceOpts.Services) { foreach (var s in serviceopt.Value) { var factory = FindFactory(s); if (factory != null && factory.Create(s) is ServiceInfo info) { info.ApplicationInfo = appInfo; ServiceInfos.Add(info); } } } }
public void Constructor_BuildsExpectedFromOpts() { CloudFoundryApplicationOptions opts = MakeCloudFoundryApplicationOptions(); ApplicationInstanceInfo info = new ApplicationInstanceInfo(opts); Assert.Equal(opts.ApplicationId, info.ApplicationId); Assert.Equal(opts.ApplicationName, info.ApplicationName); Assert.Equal(opts.ApplicationUris[0], info.ApplicationUris[0]); Assert.Equal(opts.ApplicationVersion, info.ApplicationVersion); Assert.Equal(opts.DiskLimit, info.DiskLimit); Assert.Equal(opts.FileDescriptorLimit, info.FileDescriptorLimit); Assert.Equal(opts.InstanceId, info.InstanceId); Assert.Equal(opts.InstanceIndex, info.InstanceIndex); Assert.Equal(opts.MemoryLimit, info.MemoryLimit); Assert.Equal(opts.Port, info.Port); Assert.Equal(opts.SpaceId, info.SpaceId); Assert.Equal(opts.SpaceName, info.SpaceName); Assert.Equal(opts.Uris[0], info.Uris[0]); Assert.Equal(opts.Version, info.Version); }
public void AppName_SetAsExpected() { var options = new ConsulDiscoveryOptions(); var appsettings = new Dictionary <string, string>(); var config = TestHelpers.GetConfigurationFromDictionary(appsettings); var appInstanceInfo = new ApplicationInstanceInfo(config); // default value is assembly name var result = ConsulRegistration.CreateRegistration(options, appInstanceInfo); Assert.Equal(TestHelpers.EntryAssemblyName.Replace(".", "-"), result.Service.Name); // followed by spring:application:name appsettings.Add("spring:application:name", "SpringApplicationName"); config = TestHelpers.GetConfigurationFromDictionary(appsettings); appInstanceInfo = new ApplicationInstanceInfo(config); result = ConsulRegistration.CreateRegistration(options, appInstanceInfo); Assert.Equal("SpringApplicationName", result.Service.Name); // Platform app name overrides spring name appsettings.Add("application:name", "PlatformName"); config = TestHelpers.GetConfigurationFromDictionary(appsettings); appInstanceInfo = new ApplicationInstanceInfo(config); result = ConsulRegistration.CreateRegistration(options, appInstanceInfo); Assert.Equal("PlatformName", result.Service.Name); // Consul-specific value beats generic value appsettings.Add("consul:serviceName", "ConsulServiceName"); config = TestHelpers.GetConfigurationFromDictionary(appsettings); appInstanceInfo = new ApplicationInstanceInfo(config); result = ConsulRegistration.CreateRegistration(options, appInstanceInfo); Assert.Equal("ConsulServiceName", result.Service.Name); // Consul-discovery is highest priority appsettings.Add("consul:discovery:serviceName", "ConsulDiscoveryServiceName"); config = TestHelpers.GetConfigurationFromDictionary(appsettings); appInstanceInfo = new ApplicationInstanceInfo(config); result = ConsulRegistration.CreateRegistration(options, appInstanceInfo); Assert.Equal("ConsulDiscoveryServiceName", result.Service.Name); }
public void ConstructorSetsDefaults() { var builder = new ConfigurationBuilder(); var config = builder.Build(); var options = new ApplicationInstanceInfo(config, true); Assert.Null(options.ApplicationId); Assert.Equal(Assembly.GetEntryAssembly().GetName().Name, options.ApplicationName); Assert.Null(options.ApplicationVersion); Assert.Null(options.InstanceId); Assert.Equal(-1, options.InstanceIndex); Assert.Null(options.Uris); Assert.Null(options.Version); Assert.Null(options.InstanceIP); Assert.Null(options.InternalIP); Assert.Equal(-1, options.DiskLimit); Assert.Equal(-1, options.FileDescriptorLimit); Assert.Equal(-1, options.InstanceIndex); Assert.Equal(-1, options.MemoryLimit); Assert.Equal(-1, options.Port); }
public TestServiceInfo(string id, ApplicationInstanceInfo info) : base(id, info) { }