Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public static IEndpoint AddNetTcpEndpoint(this IServiceHostConfigurator configurator, Type contract, NetTcpEndpointAddress address, Action <NetTcpBinding> configureBinding = null) => configurator.AddEndpoint(contract, address, configureBinding);
Ejemplo n.º 8
0
 public void ToString_returns_formed_Uri(NetTcpEndpointAddress testAddress)
 {
     Assert.That(testAddress.ToString(), Is.EqualTo($"Address: {testAddress.ToUri()}"));
 }
Ejemplo n.º 9
0
 public void ParseFromUri_throws_if_uri_is_null(NetTcpEndpointAddress _)
 {
     Assert.Throws <ArgumentNullException>(() => NetTcpEndpointAddress.ParseFromUri(null));
 }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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));
        }
Ejemplo n.º 13
0
        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));
        }
Ejemplo n.º 14
0
        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));
        }
Ejemplo n.º 15
0
        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));
        }