コード例 #1
0
        private static void DoAdd(IServiceCollection services, RabbitServiceInfo info, IConfiguration config, ServiceLifetime contextLifetime)
        {
            RabbitProviderConnectorOptions rabbitConfig = new RabbitProviderConnectorOptions(config);
            RabbitProviderConnectorFactory factory      = new RabbitProviderConnectorFactory(info, rabbitConfig);

            services.Add(new ServiceDescriptor(typeof(ConnectionFactory), factory.Create, contextLifetime));
        }
コード例 #2
0
        public RabbitProviderConnectorFactory(RabbitServiceInfo sinfo, RabbitProviderConnectorOptions config)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            _info   = sinfo;
            _config = config;
        }
コード例 #3
0
        public void Constructor_ThrowsIfConfigNull()
        {
            // Arrange
            RabbitProviderConnectorOptions config = null;
            RabbitServiceInfo si = null;

            // Act and Assert
            var ex = Assert.Throws <ArgumentNullException>(() => new RabbitProviderConnectorFactory(si, config));

            Assert.Contains(nameof(config), ex.Message);
        }
コード例 #4
0
        internal void UpdateConfiguration(RabbitServiceInfo si, RabbitProviderConnectorOptions configuration)
        {
            if (si == null)
            {
                return;
            }

            if (!string.IsNullOrEmpty(si.Uri))
            {
                configuration.Port        = si.Port;
                configuration.Username    = si.UserName;
                configuration.Password    = si.Password;
                configuration.Server      = si.Host;
                configuration.VirtualHost = si.Path;
            }
        }
コード例 #5
0
        public void Create_ReturnsRabbitConnection()
        {
            RabbitProviderConnectorOptions config = new RabbitProviderConnectorOptions()
            {
                Server      = "localhost",
                Port        = 5672,
                Password    = "******",
                Username    = "******",
                VirtualHost = "vhost"
            };
            RabbitServiceInfo si = new RabbitServiceInfo("MyId", "amqp://*****:*****@example.com:5672/si_vhost");
            var factory          = new RabbitProviderConnectorFactory(si, config);
            var connection       = factory.Create(null);

            Assert.NotNull(connection);
        }
コード例 #6
0
        public static IServiceCollection AddRabbitConnection(this IServiceCollection services, IConfiguration config, ServiceLifetime contextLifetime = ServiceLifetime.Scoped, ILoggerFactory logFactory = null)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }

            RabbitServiceInfo info = config.GetSingletonServiceInfo <RabbitServiceInfo>();

            DoAdd(services, info, config, contextLifetime);
            return(services);
        }
コード例 #7
0
        public void UpdateConfiguration_WithRabbitServiceInfo_UpdatesConfigurationFromServiceInfo()
        {
            RabbitProviderConfigurer       configurer = new RabbitProviderConfigurer();
            RabbitProviderConnectorOptions config     = new RabbitProviderConnectorOptions()
            {
                Server      = "localhost",
                Port        = 1234,
                Username    = "******",
                Password    = "******",
                VirtualHost = "vhost"
            };
            RabbitServiceInfo si = new RabbitServiceInfo("MyId", "amqp://*****:*****@example.com:5672/si_vhost");

            configurer.UpdateConfiguration(si, config);

            Assert.Equal("example.com", config.Server);
            Assert.Equal(5672, config.Port);
            Assert.Equal("si_username", config.Username);
            Assert.Equal("si_password", config.Password);
            Assert.Equal("si_vhost", config.VirtualHost);
        }
コード例 #8
0
        public void Configure_ServiceInfoOveridesConfig_ReturnsOverriddenConnectionString()
        {
            RabbitProviderConnectorOptions config = new RabbitProviderConnectorOptions()
            {
                Server      = "localhost",
                Port        = 1234,
                Username    = "******",
                Password    = "******",
                VirtualHost = "vhost"
            };

            RabbitProviderConfigurer configurer = new RabbitProviderConfigurer();
            RabbitServiceInfo        si         = new RabbitServiceInfo("MyId", "amqp://*****:*****@example.com:5672/si_vhost");

            var opts = configurer.Configure(si, config);
            var uri  = new UriInfo(opts);

            Assert.Equal(uri.Host, "example.com");
            Assert.Equal(uri.Port, 5672);
            Assert.Equal(uri.UserName, "si_username");
            Assert.Equal(uri.Password, "si_password");
            Assert.Equal(uri.Path, "si_vhost");
        }
コード例 #9
0
        public void Constructor_CreatesExpected()
        {
            string        uri  = "amqp://*****:*****@192.168.0.81:5672/fb03d693-91fe-4dc5-8203-ff7a6390df66";
            List <string> uris = new List <string>()
            {
                "amqp://*****:*****@192.168.0.81:5672/fb03d693-91fe-4dc5-8203-ff7a6390df66"
            };
            string        managementUri  = "https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/";
            List <string> managementUris = new List <string>()
            {
                "https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/"
            };

            RabbitServiceInfo r1 = new RabbitServiceInfo("myId", uri);
            RabbitServiceInfo r2 = new RabbitServiceInfo("myId", uri, managementUri);
            RabbitServiceInfo r3 = new RabbitServiceInfo("myId", uri, managementUri, uris, managementUris);
            RabbitServiceInfo r4 = new RabbitServiceInfo("myId", "192.168.0.81", 5672, "03c7a684-6ff1-4bd0-ad45-d10374ffb2af", "l5oq2q0unl35s6urfsuib0jvpo", "fb03d693-91fe-4dc5-8203-ff7a6390df66");
            RabbitServiceInfo r5 = new RabbitServiceInfo("myId", "192.168.0.81", 5672, "03c7a684-6ff1-4bd0-ad45-d10374ffb2af", "l5oq2q0unl35s6urfsuib0jvpo", "fb03d693-91fe-4dc5-8203-ff7a6390df66", "https://*****:*****@pivotal-rabbitmq.system.testcloud.com/api/");

            Assert.Equal("myId", r1.Id);
            Assert.Equal("amqp", r1.Scheme);
            Assert.Equal("192.168.0.81", r1.Host);
            Assert.Equal(5672, r1.Port);
            Assert.Equal("l5oq2q0unl35s6urfsuib0jvpo", r1.Password);
            Assert.Equal("03c7a684-6ff1-4bd0-ad45-d10374ffb2af", r1.UserName);
            Assert.Equal("fb03d693-91fe-4dc5-8203-ff7a6390df66", r1.Path);
            Assert.Equal(null, r1.Query);
            Assert.Null(r1.Uris);
            Assert.Equal(uri, r1.Uri);
            Assert.Null(r1.ManagementUris);
            Assert.Equal(null, r1.ManagementUri);

            Assert.Equal("myId", r2.Id);
            Assert.Equal("amqp", r2.Scheme);
            Assert.Equal("192.168.0.81", r2.Host);
            Assert.Equal(5672, r2.Port);
            Assert.Equal("l5oq2q0unl35s6urfsuib0jvpo", r2.Password);
            Assert.Equal("03c7a684-6ff1-4bd0-ad45-d10374ffb2af", r2.UserName);
            Assert.Equal("fb03d693-91fe-4dc5-8203-ff7a6390df66", r2.Path);
            Assert.Equal(null, r2.Query);
            Assert.Null(r2.Uris);
            Assert.Equal(uri, r2.Uri);
            Assert.Null(r2.ManagementUris);
            Assert.Equal(managementUri, r2.ManagementUri);

            Assert.Equal("myId", r3.Id);
            Assert.Equal("amqp", r3.Scheme);
            Assert.Equal("192.168.0.81", r3.Host);
            Assert.Equal(5672, r3.Port);
            Assert.Equal("l5oq2q0unl35s6urfsuib0jvpo", r3.Password);
            Assert.Equal("03c7a684-6ff1-4bd0-ad45-d10374ffb2af", r3.UserName);
            Assert.Equal("fb03d693-91fe-4dc5-8203-ff7a6390df66", r3.Path);
            Assert.Equal(null, r3.Query);
            Assert.NotNull(r3.Uris);
            Assert.Equal(1, r3.Uris.Count);
            Assert.Equal(uris[0], r3.Uris[0]);
            Assert.Equal(uri, r3.Uri);
            Assert.NotNull(r3.ManagementUris);
            Assert.Equal(1, r3.ManagementUris.Count);
            Assert.Equal(managementUris[0], r3.ManagementUris[0]);
            Assert.Equal(managementUri, r3.ManagementUri);


            Assert.Equal("myId", r4.Id);
            Assert.Equal("amqp", r4.Scheme);
            Assert.Equal("192.168.0.81", r4.Host);
            Assert.Equal(5672, r4.Port);
            Assert.Equal("l5oq2q0unl35s6urfsuib0jvpo", r4.Password);
            Assert.Equal("03c7a684-6ff1-4bd0-ad45-d10374ffb2af", r4.UserName);
            Assert.Equal("fb03d693-91fe-4dc5-8203-ff7a6390df66", r4.Path);
            Assert.Equal(null, r4.Query);
            Assert.Null(r4.Uris);
            Assert.Equal(uri, r4.Uri);
            Assert.Null(r4.ManagementUris);
            Assert.Equal(null, r4.ManagementUri);


            Assert.Equal("myId", r5.Id);
            Assert.Equal("amqp", r5.Scheme);
            Assert.Equal("192.168.0.81", r5.Host);
            Assert.Equal(5672, r5.Port);
            Assert.Equal("l5oq2q0unl35s6urfsuib0jvpo", r5.Password);
            Assert.Equal("03c7a684-6ff1-4bd0-ad45-d10374ffb2af", r5.UserName);
            Assert.Equal("fb03d693-91fe-4dc5-8203-ff7a6390df66", r5.Path);
            Assert.Equal(null, r5.Query);
            Assert.Null(r5.Uris);
            Assert.Equal(uri, r5.Uri);
            Assert.Null(r5.ManagementUris);
            Assert.Equal(managementUri, r5.ManagementUri);
        }
コード例 #10
0
 internal string Configure(RabbitServiceInfo si, RabbitProviderConnectorOptions configuration)
 {
     UpdateConfiguration(si, configuration);
     return(configuration.ToString());
 }