public void AddRedisConnectionMultiplexer_WithEnterpriseVCAPs_AddsRedisConnectionMultiplexer()
        {
            // Arrange
            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", RedisCacheTestHelpers.SingleServerEnterpriseVCAP);
            var appsettings = new Dictionary <string, string>()
            {
                ["redis:client:AbortOnConnectFail"] = "false",
                ["redis:client:connectTimeout"]     = "1"
            };
            IServiceCollection services = new ServiceCollection();
            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            builder.AddInMemoryCollection(appsettings);
            var config = builder.Build();

            // Act
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);
            var service = services.BuildServiceProvider().GetService <IConnectionMultiplexer>();

            // Assert
            Assert.NotNull(service);
            Assert.IsType <ConnectionMultiplexer>(service);
            Assert.Contains("redis-1076.redis-enterprise.system.cloudyazure.io", service.Configuration);
            Assert.Contains(":1076", service.Configuration);
            Assert.Contains("password=rQrMqqg-.LJzO498EcAIfp-auu4czBiGM40wjveTdHw-EJu0", service.Configuration);
        }
        public void AddRedisConnectionMultiplexer_NoVCAPs_AddsConnectionMultiplexer()
        {
            // Arrange
            var    appsettings = @"
{
   'redis': {
        'client': {
            'host': '127.0.0.1',
            'port': 1234,
            'password': '******',
            'abortOnConnectFail': false
        }
   }
}";
            var    path        = TestHelpers.CreateTempFile(appsettings);
            string directory   = Path.GetDirectoryName(path);
            string fileName    = Path.GetFileName(path);

            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.SetBasePath(directory);
            configurationBuilder.AddJsonFile(fileName);
            var config = configurationBuilder.Build();

            IServiceCollection services = new ServiceCollection();

            // Act and Assert
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);

            var service = services.BuildServiceProvider().GetService <ConnectionMultiplexer>();

            Assert.NotNull(service);
        }
        public void AddRedisConnectionMultiplexer_NoVCAPs_AddsConnectionMultiplexer()
        {
            // Arrange
            var appsettings = new Dictionary <string, string>()
            {
                ["redis:client:host"]               = "127.0.0.1",
                ["redis:client:port"]               = "1234",
                ["redis:client:password"]           = "******",
                ["redis:client:abortOnConnectFail"] = "false",
                ["redis:client:connectTimeout"]     = "1"
            };

            ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

            configurationBuilder.AddInMemoryCollection(appsettings);
            var config = configurationBuilder.Build();

            IServiceCollection services  = new ServiceCollection();
            IServiceCollection services2 = new ServiceCollection();

            // Act
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);
            var service = services.BuildServiceProvider().GetService <IConnectionMultiplexer>();

            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services2, config, config, null);
            var service2 = services2.BuildServiceProvider().GetService <IConnectionMultiplexer>();

            // Assert
            Assert.NotNull(service);
            Assert.IsType <ConnectionMultiplexer>(service);
            Assert.Contains("password=pass,word", (service as ConnectionMultiplexer).Configuration);
            Assert.NotNull(service2);
            Assert.IsType <ConnectionMultiplexer>(service2);
            Assert.Contains("password=pass,word", (service as ConnectionMultiplexer).Configuration);
        }
        public void AddRedisConnectionMultiplexer_WithVCAPs_AddsRedisConnectionMultiplexer()
        {
            // Arrange
            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", RedisCacheTestHelpers.SingleServerVCAP);
            var appsettings = new Dictionary <string, string>()
            {
                ["redis:client:AbortOnConnectFail"] = "false",
                ["redis:client:connectTimeout"]     = "1"
            };
            IServiceCollection   services = new ServiceCollection();
            ConfigurationBuilder builder  = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            builder.AddInMemoryCollection(appsettings);
            var config = builder.Build();

            // Act
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);
            var service = services.BuildServiceProvider().GetService <IConnectionMultiplexer>();

            // Assert
            Assert.NotNull(service);
            Assert.IsType <ConnectionMultiplexer>(service);
            Assert.Contains("192.168.0.103", service.Configuration);
            Assert.Contains(":60287", service.Configuration);
            Assert.Contains("password=133de7c8-9f3a-4df1-8a10-676ba7ddaa10", service.Configuration);
        }
        public void AddRedisConnectionMultiplexer_WithAzureVCAPs_AddsRedisConnectionMultiplexer()
        {
            // Arrange
            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", RedisCacheTestHelpers.SingleServerVCAP_AzureBroker);
            var appsettings = new Dictionary <string, string>()
            {
                ["redis:client:AbortOnConnectFail"]    = "false",
                ["redis:client:urlEncodedCredentials"] = "true"
            };
            IServiceCollection   services = new ServiceCollection();
            ConfigurationBuilder builder  = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            builder.AddInMemoryCollection(appsettings);
            var config = builder.Build();

            // Act
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);
            var service = services.BuildServiceProvider().GetService <IConnectionMultiplexer>();

            // Assert
            Assert.NotNull(service);
            Assert.IsType <ConnectionMultiplexer>(service);
            Assert.Contains("cbe9d9a0-6502-438d-87ec-f26f1974e378.redis.cache.windows.net", service.Configuration);
            Assert.Contains(":6379", service.Configuration);
            Assert.Contains("password=V+4dv03jSUZkEcjGhVMR0hjEPfILCCcth1JE8vPRki4=", service.Configuration);
        }
        public void AddRedisConnectionMultiplexer_WithSecureAzureVCAPs_AddsRedisConnectionMultiplexer()
        {
            // Arrange
            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", RedisCacheTestHelpers.SingleServerVCAP_AzureBrokerSecure);
            var appsettings = new Dictionary <string, string>()
            {
                ["redis:client:AbortOnConnectFail"]    = "false",
                ["redis:client:urlEncodedCredentials"] = "true"
            };
            IServiceCollection   services = new ServiceCollection();
            ConfigurationBuilder builder  = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            builder.AddInMemoryCollection(appsettings);
            var config = builder.Build();

            // Act
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);
            var service = services.BuildServiceProvider().GetService <IConnectionMultiplexer>();

            // Assert
            Assert.NotNull(service);
            Assert.IsType <ConnectionMultiplexer>(service);
            Assert.Contains("9b67c347-03b8-4956-aa2a-858ac30aced5.redis.cache.windows.net", service.Configuration);
            Assert.Contains(":6380", service.Configuration);
            Assert.Contains("password=mAG0+CdozukoUTOIEAo6wTKHdMoqg4+Jfno8docw3Zg=", service.Configuration);
            Assert.Contains("ssl=True", service.Configuration);
        }
Exemple #7
0
        public void AddRedisConnectionMultiplexer_ThrowsIfServiceNameNull()
        {
            IServiceCollection services    = new ServiceCollection();
            IConfigurationRoot config      = null;
            string             serviceName = null;

            var ex = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config, serviceName));

            Assert.Contains(nameof(serviceName), ex.Message);
        }
Exemple #8
0
        public void AddDistributedRedisCache_ThrowsIfServiceNameNull()
        {
            IServiceCollection services = new ServiceCollection();
            var    config      = new ConfigurationBuilder().Build();
            string serviceName = null;

            var ex = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, serviceName));

            Assert.Contains(nameof(serviceName), ex.Message);
        }
Exemple #9
0
        public void AddDistributedRedisCache_NoVCAPs_AddsDistributedCache()
        {
            IServiceCollection services = new ServiceCollection();
            var config = new ConfigurationBuilder().Build();

            RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config);
            var service = services.BuildServiceProvider().GetService <IDistributedCache>();

            Assert.NotNull(service);
            Assert.IsType <RedisCache>(service);
        }
        public void AddDistributedRedisCache_WithServiceName_NoVCAPs_ThrowsConnectorException()
        {
            // Arrange
            IServiceCollection services = new ServiceCollection();
            IConfigurationRoot config   = new ConfigurationBuilder().Build();

            // Act and Assert
            var ex = Assert.Throws <ConnectorException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, "foobar"));

            Assert.Contains("foobar", ex.Message);
        }
        public void AddDistributedRedisCache_ThrowsIfServiceNameNull()
        {
            // Arrange
            IServiceCollection services    = new ServiceCollection();
            IConfigurationRoot config      = null;
            string             serviceName = null;

            // Act and Assert
            var ex = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, serviceName));

            Assert.Contains(nameof(serviceName), ex.Message);
        }
        public void AddDistributedRedisCache_NoVCAPs_AddsDistributedCache()
        {
            // Arrange
            IServiceCollection services = new ServiceCollection();
            IConfigurationRoot config   = new ConfigurationBuilder().Build();

            // Act and Assert
            RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config);

            var service = services.BuildServiceProvider().GetService <IDistributedCache>();

            Assert.NotNull(service);
        }
Exemple #13
0
        public void AddDistributedRedisCache_AddsRedisHealthContributor()
        {
            IServiceCollection services = new ServiceCollection();
            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config = builder.Build();

            RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config);
            var healthContributor = services.BuildServiceProvider().GetService <IHealthContributor>() as RedisHealthContributor;

            Assert.NotNull(healthContributor);
        }
Exemple #14
0
        public void AddRedisConnectionMultiplexer_WithServiceName_NoVCAPs_ThrowsConnectorException()
        {
            IServiceCollection services = new ServiceCollection();
            var config = new ConfigurationBuilder().Build();

            var ex = Assert.Throws <ConnectorException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config, "foobar"));

            Assert.Contains("foobar", ex.Message);

            var ex2 = Assert.Throws <ConnectorException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config, config, "foobar"));

            Assert.Contains("foobar", ex2.Message);
        }
        public void AddRedisConnectionMultiplexer_ThrowsIfConfigurtionNull()
        {
            // Arrange
            IServiceCollection services = new ServiceCollection();
            IConfigurationRoot config   = null;

            // Act and Assert
            var ex = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config));

            Assert.Contains(nameof(config), ex.Message);

            var ex2 = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config, "foobar"));

            Assert.Contains(nameof(config), ex2.Message);
        }
        public void AddRedisConnectionMultiplexer_AddsRedisHealthContributor()
        {
            // Arrange
            IServiceCollection services = new ServiceCollection();
            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddCloudFoundry();
            var config = builder.Build();

            // Act
            RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config);
            var healthContributor = services.BuildServiceProvider().GetService<IHealthContributor>() as RedisHealthContributor;

            // Assert
            Assert.NotNull(healthContributor);
        }
        public void AddDistributedRedisCache_ThrowsIfServiceCollectionNull()
        {
            // Arrange
            IServiceCollection services = null;
            IConfigurationRoot config = new ConfigurationBuilder().Build();

            // Act and Assert
            var ex = Assert.Throws<ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config));
            Assert.Contains(nameof(services), ex.Message);

            var ex2 = Assert.Throws<ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, "foobar"));
            Assert.Contains(nameof(services), ex2.Message);

            var ex3 = Assert.Throws<ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, config, "foobar"));
            Assert.Contains(nameof(services), ex3.Message);
        }
Exemple #18
0
        public void AddRedisConnectionMultiplexer_ThrowsIfServiceCollectionNull()
        {
            IServiceCollection services = null;
            var config = new ConfigurationBuilder().Build();

            var ex = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config));

            Assert.Contains(nameof(services), ex.Message);

            var ex2 = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config, "foobar"));

            Assert.Contains(nameof(services), ex2.Message);

            var ex3 = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddRedisConnectionMultiplexer(services, config, config, "foobar"));

            Assert.Contains(nameof(services), ex3.Message);
        }
Exemple #19
0
        public void AddDistributedRedisCache_AddsRedisHealthContributor_WhenCommunityHealthCheckExistsAndForced()
        {
            IServiceCollection services = new ServiceCollection();
            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config = builder.Build();

            var cm = new ConnectionStringManager(config);
            var ci = cm.Get <RedisConnectionInfo>();

            services.AddHealthChecks().AddRedis(ci.ConnectionString, name: ci.Name);

            RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, addSteeltoeHealthChecks: true);
            var healthContributor = services.BuildServiceProvider().GetService <IHealthContributor>() as RedisHealthContributor;

            Assert.NotNull(healthContributor);
        }
Exemple #20
0
        public void AddDistributedRedisCache_ThrowsIfConfigurationNull()
        {
            IServiceCollection services = new ServiceCollection();
            IConfigurationRoot config   = null;
            var connectionConfig        = new ConfigurationBuilder().Build();

            var ex = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config));

            Assert.Contains(nameof(config), ex.Message);

            var ex2 = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, "foobar"));

            Assert.Contains(nameof(config), ex2.Message);

            var ex3 = Assert.Throws <ArgumentNullException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, connectionConfig, "foobar"));

            Assert.Contains("applicationConfiguration", ex3.Message);
        }
        public void AddDistributedRedisCache_MultipleRedisServices_ThrowsConnectorException()
        {
            // Arrange
            IServiceCollection services = new ServiceCollection();

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", TestHelpers.VCAP_APPLICATION);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", RedisCacheTestHelpers.TwoServerVCAP);

            ConfigurationBuilder builder = new ConfigurationBuilder();
            builder.AddCloudFoundry();
            var config = builder.Build();

            // Act and Assert
            var ex = Assert.Throws<ConnectorException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config));
            Assert.Contains("Multiple", ex.Message);

            var ex2 = Assert.Throws<ConnectorException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config, config, null));
            Assert.Contains("Multiple", ex2.Message);
        }
        public void AddDistributedRedisCache_DoesntAddRedisHealthContributor_WhenCommunityHealthCheckExists()
        {
            // Arrange
            IServiceCollection services = new ServiceCollection();
            var builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config = builder.Build();

            var cm = new ConnectionStringManager(config);
            var ci = cm.Get <RedisConnectionInfo>();

            services.AddHealthChecks().AddRedis(ci.ConnectionString, name: ci.Name);

            // Act
            RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config);
            var healthContributor = services.BuildServiceProvider().GetService <IHealthContributor>() as RedisHealthContributor;

            // Assert
            Assert.Null(healthContributor);
        }
        public void AddDistributedRedisCache_MultipleRedisServices_ThrowsConnectorException()
        {
            // Arrange
            var env1 = @"
{
      'limits': {
        'fds': 16384,
        'mem': 1024,
        'disk': 1024
      },
      'application_name': 'spring-cloud-broker',
      'application_uris': [
        'spring-cloud-broker.apps.testcloud.com'
      ],
      'name': 'spring-cloud-broker',
      'space_name': 'p-spring-cloud-services',
      'space_id': '65b73473-94cc-4640-b462-7ad52838b4ae',
      'uris': [
        'spring-cloud-broker.apps.testcloud.com'
      ],
      'users': null,
      'version': '07e112f7-2f71-4f5a-8a34-db51dbed30a3',
      'application_version': '07e112f7-2f71-4f5a-8a34-db51dbed30a3',
      'application_id': '798c2495-fe75-49b1-88da-b81197f2bf06'
    }
}";
            var env2 = @"
{
      'p-redis': [
        {
            'credentials': {
                'host': '192.168.0.103',
                'password': '******',
                'port': 60287
            },
          'syslog_drain_url': null,
          'label': 'p-redis',
          'provider': null,
          'plan': 'shared-vm',
          'name': 'myRedisService1',
          'tags': [
            'pivotal',
            'redis'
          ]
        }, 
        {
            'credentials': {
                'host': '192.168.0.103',
                'password': '******',
                'port': 60287
            },
          'syslog_drain_url': null,
          'label': 'p-redis',
          'provider': null,
          'plan': 'shared-vm',
          'name': 'myRedisService2',
          'tags': [
            'pivotal',
            'redis'
          ]
        } 
      ]
}
";
            // Arrange
            IServiceCollection services = new ServiceCollection();

            Environment.SetEnvironmentVariable("VCAP_APPLICATION", env1);
            Environment.SetEnvironmentVariable("VCAP_SERVICES", env2);

            ConfigurationBuilder builder = new ConfigurationBuilder();

            builder.AddCloudFoundry();
            var config = builder.Build();

            // Act and Assert
            var ex = Assert.Throws <ConnectorException>(() => RedisCacheServiceCollectionExtensions.AddDistributedRedisCache(services, config));

            Assert.Contains("Multiple", ex.Message);
        }