public static NetTcpEndpointAddress UseECS(this NetTcpEndpointAddress endpointAddress, IConfiguration configuration, Action <ECSContainerMetadataOptions> configureOptions = null) { if (Environment.GetEnvironmentVariable(EMG.Extensions.Configuration.ECSMetadataExtensions.ECSContainerMetadataFileKey) == null) { return(endpointAddress); } var containerMetadata = configuration.Get <ECSContainerMetadata>(); if (containerMetadata == null) { return(endpointAddress); } var options = new ECSContainerMetadataOptions(); configureOptions?.Invoke(options); var portMapping = options.PortMappingSelector(containerMetadata.PortMappings); if (portMapping == null) { return(endpointAddress); } return(EndpointAddress.ForNetTcp(portMapping.HostPort, containerMetadata.HostPrivateIPv4Address, endpointAddress.Path)); }
public void UseECS_uses_selected_port_mapping(NetTcpEndpointAddress endpointAddress, IConfiguration configuration, PortMapping mapping) { AddFakeContainerMetadataFileKey(); var newEndpoint = ECSMetadataExtensions.UseECS(endpointAddress, configuration, options => options.PortMappingSelector = items => mapping); Assert.That(newEndpoint.Port, Is.EqualTo(mapping.HostPort)); }
public void UseECS_uses_configureOptions(NetTcpEndpointAddress endpointAddress, IConfiguration configuration, Action <ECSContainerMetadataOptions> configureOptions) { AddFakeContainerMetadataFileKey(); ECSMetadataExtensions.UseECS(endpointAddress, configuration, configureOptions); Mock.Get(configureOptions).Verify(p => p(It.IsAny <ECSContainerMetadataOptions>()), Times.Once()); }
public void UseECS_returns_same_address_if_port_mapping_is_null(NetTcpEndpointAddress endpointAddress, IConfiguration configuration) { AddFakeContainerMetadataFileKey(); var newEndpoint = ECSMetadataExtensions.UseECS(endpointAddress, configuration, options => options.PortMappingSelector = list => null); Assert.That(newEndpoint, Is.SameAs(endpointAddress)); }
public void Valid_URI_can_be_cast_to_EndpointAddress(NetTcpEndpointAddress testAddress) { var testUri = testAddress.ToUri(); NetTcpEndpointAddress address = testUri; Assert.That(address.Host, Is.EqualTo(testAddress.Host).IgnoreCase); Assert.That(address.Port, Is.EqualTo(testAddress.Port)); Assert.That(address.Path, Is.EqualTo(testAddress.Path).IgnoreCase); }
public void ParseFromUri_returns_EndpointAddress(NetTcpEndpointAddress testAddress) { var testUri = testAddress.ToUri(); var address = NetTcpEndpointAddress.ParseFromUri(testUri); Assert.That(address.Host, Is.EqualTo(testAddress.Host).IgnoreCase); Assert.That(address.Port, Is.EqualTo(testAddress.Port)); Assert.That(address.Path, Is.EqualTo(testAddress.Path).IgnoreCase); }
public static IEndpoint AddNetTcpEndpoint(this IServiceHostConfigurator configurator, Type contract, NetTcpEndpointAddress address, Action <NetTcpBinding> configureBinding = null) => configurator.AddEndpoint(contract, address, configureBinding);
public void ToString_returns_formed_Uri(NetTcpEndpointAddress testAddress) { Assert.That(testAddress.ToString(), Is.EqualTo($"Address: {testAddress.ToUri()}")); }
public void ParseFromUri_throws_if_uri_is_null(NetTcpEndpointAddress _) { Assert.Throws <ArgumentNullException>(() => NetTcpEndpointAddress.ParseFromUri(null)); }
public void ParseFromUri_throws_if_invalid_scheme(NetTcpEndpointAddress testAddress, string invalidScheme) { var testUri = new UriBuilder(invalidScheme, testAddress.Host, testAddress.Port, testAddress.Path).Uri; Assert.Throws <ArgumentException>(() => NetTcpEndpointAddress.ParseFromUri(testUri)); }
public void GetNetTcpEndpointAddress_can_return_endpoint(ConfigurationBuilder builder, NetTcpEndpointAddress testAddress) { var configuration = builder.AddInMemoryCollection(new Dictionary <string, string>() { ["Host"] = testAddress.Host, ["Port"] = testAddress.Port.ToString(), ["Path"] = testAddress.Path }).Build(); Uri result = ConfigurationExtensions.GetNetTcpEndpointAddress(configuration); Assert.That(result.Scheme, Is.EqualTo(Uri.UriSchemeNetTcp)); Assert.That(result.Host, Is.EqualTo(testAddress.Host).IgnoreCase); Assert.That(result.Port, Is.EqualTo(testAddress.Port)); Assert.That(result.AbsolutePath, Is.EqualTo("/" + testAddress.Path).IgnoreCase); }
public void AddNetTcpEndpoint_forwards_to_configurator(IServiceHostConfigurator configurator, Action <NetTcpBinding> testDelegate, NetTcpEndpointAddress address) { configurator.AddNetTcpEndpoint(typeof(ITestService), address, testDelegate); Mock.Get(configurator).Verify(p => p.AddEndpoint <NetTcpBinding>(typeof(ITestService), address, testDelegate)); }
public void UseECS_returns_same_address_if_ECSContainerMetadataFileKey_not_available(NetTcpEndpointAddress endpointAddress, IConfiguration configuration) { var newEndpoint = ECSMetadataExtensions.UseECS(endpointAddress, configuration); Assert.That(newEndpoint, Is.SameAs(endpointAddress)); }
public void UseECS_returns_private_IPV4_address([Frozen] ECSContainerMetadata metadata, NetTcpEndpointAddress endpointAddress, IConfiguration configuration, Action <ECSContainerMetadataOptions> configureOptions) { AddFakeContainerMetadataFileKey(); var newEndpoint = ECSMetadataExtensions.UseECS(endpointAddress, configuration, configureOptions); Assert.That(newEndpoint.Host, Is.EqualTo(metadata.HostPrivateIPv4Address)); }
public void UseECS_returns_same_address_if_metadata_not_found_in_configuration(NetTcpEndpointAddress endpointAddress, ConfigurationBuilder configurationBuilder) { AddFakeContainerMetadataFileKey(); var newEndpoint = ECSMetadataExtensions.UseECS(endpointAddress, configurationBuilder.Build()); Assert.That(newEndpoint, Is.SameAs(endpointAddress)); }