Beispiel #1
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));
        }
Beispiel #2
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));
        }
Beispiel #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());
        }
Beispiel #4
0
        public void AddECSContainerSupport_does_nothing_if_no_ECS_metadata_file_key_available(IServiceCollection services, IConfiguration configuration)
        {
            Environment.SetEnvironmentVariable(EMG.Extensions.Configuration.ECSMetadataExtensions.ECSContainerMetadataFileKey, null);

            ECSMetadataExtensions.AddECSContainerSupport(services, configuration);

            Mock.Get(services).Verify(p => p.Add(It.IsAny <ServiceDescriptor>()), Times.Never);
        }
Beispiel #5
0
        public void AddECSContainerSupport_configures_AnnouncementServiceOptions(IServiceCollection services, IConfiguration configuration)
        {
            AddFakeContainerMetadataFileKey();

            ECSMetadataExtensions.AddECSContainerSupport(services, configuration);

            Mock.Get(services).Verify(p => p.Add(It.Is <ServiceDescriptor>(sd => sd.ServiceType == typeof(IConfigureOptions <AnnouncementServiceOptions>))));
        }
Beispiel #6
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));
        }
Beispiel #7
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));
        }
Beispiel #8
0
        public void AddECSContainerSupport_configuration_throws_if_endpoint_has_no_address(ServiceCollection services, IConfiguration configuration, ServiceEndpoint endpoint)
        {
            AddFakeContainerMetadataFileKey();

            ECSMetadataExtensions.AddECSContainerSupport(services, configuration);

            var serviceProvider = services.BuildServiceProvider();

            var options = serviceProvider.GetRequiredService <IOptions <AnnouncementServiceOptions> >();

            Assert.Throws <ArgumentNullException>(() => options.Value.EndpointDiscoveryMetadata(endpoint));
        }
Beispiel #9
0
        public void AddECSContainerSupport_configuration_returns_metadata_with_same_if_no_mapping(ServiceCollection services, [Frozen] ECSContainerMetadata containerMetadata, IConfiguration configuration, ServiceEndpoint endpoint, int port, string address)
        {
            AddFakeContainerMetadataFileKey();

            var expectedAddress = new Uri($"http://{containerMetadata.HostPrivateIPv4Address}:{port}/{address}");

            endpoint.Address = new EndpointAddress($"http://localhost:{port}/{address}");

            ECSMetadataExtensions.AddECSContainerSupport(services, configuration);

            var serviceProvider = services.BuildServiceProvider();

            var options = serviceProvider.GetRequiredService <IOptions <AnnouncementServiceOptions> >();

            var result = options.Value.EndpointDiscoveryMetadata(endpoint);

            Assert.That(result.Address.Uri, Is.EqualTo(expectedAddress).IgnoreCase);
        }
Beispiel #10
0
        public void AddECSContainerSupport_configuration_returns_metadata_with_same_address_when_ecs_metadata_has_no_ipv4_address(ServiceCollection services, IConfiguration configuration, ServiceEndpoint endpoint, int port, string address)
        {
            AddFakeContainerMetadataFileKey();

            configuration[nameof(ECSContainerMetadata.HostPrivateIPv4Address)] = null;

            endpoint.Address = new EndpointAddress($"http://localhost:{port}/{address}");

            ECSMetadataExtensions.AddECSContainerSupport(services, configuration);

            var serviceProvider = services.BuildServiceProvider();

            var options = serviceProvider.GetRequiredService <IOptions <AnnouncementServiceOptions> >();

            var result = options.Value.EndpointDiscoveryMetadata(endpoint);

            Assert.That(result.Address.Uri, Is.EqualTo(endpoint.Address.Uri));
        }
Beispiel #11
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));
        }