Ejemplo n.º 1
0
        public void Redis_Configurations_LoadWithConnectionString()
        {
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");

            RedisConfigurations.LoadConfiguration(fileName, RedisConfigurationSection.DefaultSectionName);
            var cfg = RedisConfigurations.GetConfiguration("redisConnectionString");

            cfg.ConnectionString.Should().Be("127.0.0.1:6379,allowAdmin=true,ssl=false");
            cfg.Database.Should().Be(131);
        }
Ejemplo n.º 2
0
        public void Cfg_InvalidCfgFile_MissingDefId()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.missingDefId.config");

            // act
            var exception = Record.Exception(() => ConfigurationBuilder.LoadConfigurationFile(fileName, "configName"));

            // assert
            exception.Should().NotBeNull();
        }
Ejemplo n.º 3
0
        public void Cfg_InvalidCfgFile_NoSection()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.noSection.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "configName");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("No section with name * found in file *");
        }
Ejemplo n.º 4
0
        public void Cfg_InvalidCfgFile_HandleDefInvalidExpirationMode()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.invalidDefExpMode.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <ConfigurationErrorsException>()
            .WithMessage("*defaultExpirationMode*");
        }
Ejemplo n.º 5
0
        public void Cfg_InvalidCfgFile_SerializerType_B()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.serializerType.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c2");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("*type not found*");
        }
Ejemplo n.º 6
0
        public void Cfg_InvalidCfgFile_InvalidEnablePerfCounters()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.InvalidEnablePerfCounters.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <ConfigurationErrorsException>()
            .WithMessage("*enablePerformanceCounters*");
        }
Ejemplo n.º 7
0
        public void Cfg_InvalidCfgFile_BackplaneTypeNotFound()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.backplaneTypeNoName.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "typeNotFound");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("*Backplane type not found*");
        }
Ejemplo n.º 8
0
        public void Cfg_InvalidCfgFile_ManagerInvalidTimeout()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.InvalidTimeout.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("The value of the property 'timeout' cannot be parsed [thisisinvalid].");
        }
Ejemplo n.º 9
0
        public void Cfg_InvalidCfgFile_BackplaneTypeButNoName()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.backplaneTypeNoName.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Backplane name cannot be null if backplane type is specified.");
        }
Ejemplo n.º 10
0
        public void Cfg_InvalidCfgFile_MaxRetriesLessThanOne()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.MaxRetries.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Maximum number of retries must be greater than zero.");
        }
Ejemplo n.º 11
0
        public void Cfg_InvalidCfgFile_RetryTimeoutLessThanZero()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.RetryTimeout.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Retry timeout must be greater than or equal to zero.");
        }
Ejemplo n.º 12
0
        public void Cfg_InvalidCfgFile_ManagerInvalidUpdateMode()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.InvalidUpdateMode.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <ConfigurationErrorsException>()
            .WithMessage("*updateMode*");
        }
Ejemplo n.º 13
0
        public void Cfg_InvalidCfgFile_ExpirationModeWithoutTimeout()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.ExpirationWithoutTimeout.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Expiration mode set without a valid timeout specified for handle [h1]");
        }
Ejemplo n.º 14
0
        public void Cfg_InvalidCfgFile_SerializerType_A()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.serializerType.config");

            // act
            Action act = () => CacheFactory.FromConfiguration <object>(ConfigurationBuilder.LoadConfigurationFile(fileName, "c1"));

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("*must implement " + nameof(ICacheSerializer) + "*");
        }
Ejemplo n.º 15
0
        public void Cfg_InvalidCfgFile_CacheManagerWithOneInvalidRef()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.InvalidRef.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Referenced cache handle [thisRefIsInvalid] cannot be found in cache handles definition.");
        }
Ejemplo n.º 16
0
        public void Cfg_InvalidCfgFile_InvalidExpirationMode()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.InvalidExpMode.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("*ThisIsInvalid*");
        }
Ejemplo n.º 17
0
        public void Cfg_InvalidCfgFile_CacheManagerWithoutLinkedHandles()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.managerWithoutHandles.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "c1");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("There are no valid cache handles linked to the cache manager configuration [c1]");
        }
Ejemplo n.º 18
0
        public void Cfg_InvalidCfgFile_NoHandleDef()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.emptyHandleDefinition.config");

            // act
            Action act = () => ConfigurationBuilder.LoadConfigurationFile(fileName, "configName");

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("There are no cache handles defined.");
        }
Ejemplo n.º 19
0
        public void Cfg_InvalidCfgFile_InvalidType_WrongNumberOfGenericTypeArgs()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.invalidType.config");

            // act
            var exception = Record.Exception(() => CacheFactory.FromConfiguration <object>(
                                                 ConfigurationBuilder.LoadConfigurationFile(fileName, "configName")));

            // assert
            exception.Should().NotBeNull();
        }
Ejemplo n.º 20
0
        public void Cfg_InvalidCfgFile_BackplaneInvalidType()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.backplaneTypeNoName.config");

            // act
            var    cfg = ConfigurationBuilder.LoadConfigurationFile(fileName, "invalidType");
            Action act = () => new BaseCacheManager <string>(cfg);

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("*does not extend from CacheBackplane*");
        }
Ejemplo n.º 21
0
        public void Cfg_InvalidCfgFile_InvalidType_NumberOfGenericArgs()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.invalidType.config");

            // act
            var    cfg = ConfigurationBuilder.LoadConfigurationFile(fileName, "cacheManager2", "configName");
            Action act = () => CacheFactory.FromConfiguration <string>(cfg);

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Cache handle type* should not have any generic arguments*");
        }
        public void Redis_Configurations_LoadWithConnectionString()
        {
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");

            RedisConfigurations.LoadConfiguration(fileName, RedisConfigurationSection.DefaultSectionName);
            var cfg = RedisConfigurations.GetConfiguration("redisConnectionString");

            cfg.ConnectionString.ToLower().Should().Contain("127.0.0.1:6379");//,allowAdmin = true,ssl = false");
            cfg.ConnectionString.ToLower().Should().Contain("allowadmin=true");
            cfg.ConnectionString.ToLower().Should().Contain("ssl=false");
            cfg.Database.Should().Be(131);
            cfg.StrictCompatibilityModeVersion.Should().Be("2.9");
        }
Ejemplo n.º 23
0
        public void Cfg_InvalidCfgFile_InvalidType_HandleType()
        {
            // arrange
            string fileName = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.invalid.invalidType.config");

            // act
            var cfg = ConfigurationBuilder.LoadConfigurationFile(fileName, "cacheManager4", "configName");

            Action act = () => CacheFactory.FromConfiguration <object>(cfg);

            // assert
            act.Should().Throw <InvalidOperationException>()
            .WithMessage("Configured cache handle does not implement*");
        }
Ejemplo n.º 24
0
        public async Task Redis_Multiple_PubSub_Change()
        {
            // arrange
            string fileName    = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");
            var    channelName = Guid.NewGuid().ToString();

            // redis config name must be same for all cache handles, configured via file and via code
            // otherwise the pub sub channel name is different
            string cacheName = "redisConfigFromConfig";

            RedisConfigurations.LoadConfiguration(fileName, RedisConfigurationSection.DefaultSectionName);

            var cfg = (CacheManagerConfiguration)ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);

            cfg.BackplaneChannelName = channelName;

            var cfgCache = CacheFactory.FromConfiguration <object>(cfg);

            var item = new CacheItem <object>(Guid.NewGuid().ToString(), "something");

            // act/assert
            await RunMultipleCaches(
                async (cacheA, cacheB) =>
            {
                cacheA.Put(item);
                cacheA.Get(item.Key).Should().Be("something");
                await Task.Delay(10);
                var value = cacheB.Get(item.Key);
                value.Should().Be(item.Value, cacheB.ToString());
                cacheB.Put(item.Key, "new value");
            },
                async (cache) =>
            {
                int tries    = 0;
                object value = null;
                do
                {
                    tries++;
                    await Task.Delay(100);
                    value = cache.Get(item.Key);
                }while (value.ToString() != "new value" && tries < 10);

                value.Should().Be("new value", cache.ToString());
            },
                1,
                TestManagers.CreateRedisAndDicCacheWithBackplane(113, true, channelName, Serializer.Json),
                cfgCache,
                TestManagers.CreateRedisCache(113, false, Serializer.Json),
                TestManagers.CreateRedisAndDicCacheWithBackplane(113, true, channelName, Serializer.Json));
        }
Ejemplo n.º 25
0
        public void Cfg_Valid_CfgFile_EnabledStatsAndPerformanceCounters()
        {
            // arrange
            string fileName  = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");
            string cacheName = "ExpirationVariances";

            // act
            var cfg   = ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);
            var cache = CacheFactory.FromConfiguration <object>(cfg);

            // assert
            cache.CacheHandles.Select(p => p.Configuration.EnableStatistics)
            .Should().AllBeEquivalentTo(true);
            cache.CacheHandles.Select(p => p.Configuration.EnablePerformanceCounters)
            .Should().AllBeEquivalentTo(true);
        }
Ejemplo n.º 26
0
        public void Cfg_Valid_CfgFile_EnabledStatsPerformanceCountersDefaults()
        {
            // arrange
            string fileName  = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");
            string cacheName = "DefaultSysMemCache";

            // act
            var cfg   = ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);
            var cache = CacheFactory.FromConfiguration <object>(cfg);

            // assert
            cache.CacheHandles.Select(p => p.Configuration.EnableStatistics)
            .ShouldAllBeEquivalentTo(Enumerable.Repeat(true, cache.CacheHandles.Count()));
            cache.CacheHandles.Select(p => p.Configuration.EnablePerformanceCounters)
            .ShouldAllBeEquivalentTo(Enumerable.Repeat(false, cache.CacheHandles.Count()));
        }
Ejemplo n.º 27
0
        public void Cfg_Valid_AppConfig_ByName()
        {
            // arrange
            string fileName  = TestConfigurationHelper.GetCfgFileName(@"/app.config");
            string cacheName = "C1";

            // act
            var cfg   = ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);
            var cache = CacheFactory.FromConfiguration <object>(cfg);

            // assert
            cache.Configuration.UpdateMode.Should().Be(CacheUpdateMode.Up);
            cache.CacheHandles.Count().Should().Be(3);
            AssertCacheHandleConfig(cache.CacheHandles.ElementAt(0), "h1", ExpirationMode.None, new TimeSpan(0, 0, 50));
            AssertCacheHandleConfig(cache.CacheHandles.ElementAt(1), "h2", ExpirationMode.Absolute, new TimeSpan(0, 20, 0));
            AssertCacheHandleConfig(cache.CacheHandles.ElementAt(2), "h3", ExpirationMode.Sliding, new TimeSpan(20, 0, 0));
        }
Ejemplo n.º 28
0
        public void Cfg_Valid_CfgFile_AllDefaults()
        {
            // arrange
            string fileName  = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");
            string cacheName = "onlyDefaultsCache";

            // act
            var cfg   = ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);
            var cache = CacheFactory.FromConfiguration <string>(cfg);

            // assert
            cache.Configuration.UpdateMode.Should().Be(CacheUpdateMode.Up);
            cache.Configuration.SerializerType.Should().BeNull();
            cache.Configuration.LoggerFactoryType.Should().BeNull();
            cache.Configuration.BackplaneType.Should().BeNull();
            cache.Configuration.RetryTimeout.Should().Be(100);
            cache.Configuration.MaxRetries.Should().Be(50);
            cache.CacheHandles.Count().Should().Be(1);
            AssertCacheHandleConfig(cache.CacheHandles.ElementAt(0), "defaultsHandle", ExpirationMode.None, TimeSpan.Zero);
        }
        public void Redis_Valid_CfgFile_LoadWithRedisBackplane()
        {
            // arrange
            string fileName  = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");
            string cacheName = "redisConfigFromConfig";

            // have to load the configuration manually because the file is not avialbale to the default ConfigurtaionManager
            RedisConfigurations.LoadConfiguration(fileName, RedisConfigurationSection.DefaultSectionName);
            var redisConfig = RedisConfigurations.GetConfiguration("redisFromCfgConfigurationId");

            // act
            var cfg = ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);

            // assert
            redisConfig.Database.Should().Be(113);
            redisConfig.ConnectionTimeout.Should().Be(1200);
            redisConfig.AllowAdmin.Should().BeTrue();
            redisConfig.KeyspaceNotificationsEnabled.Should().BeTrue();
            redisConfig.TwemproxyEnabled.Should().BeTrue();
            redisConfig.StrictCompatibilityModeVersion.Should().Be("2.7");
        }
Ejemplo n.º 30
0
        public void Redis_Valid_CfgFile_LoadWithConnectionString()
        {
            // arrange
            string fileName  = TestConfigurationHelper.GetCfgFileName(@"/Configuration/configuration.valid.allFeatures.config");
            string cacheName = "redisConfigFromConnectionString";

            // have to load the configuration manually because the file is not avialbale to the default ConfigurtaionManager
            RedisConfigurations.LoadConfiguration(fileName, RedisConfigurationSection.DefaultSectionName);
            var redisConfig = RedisConfigurations.GetConfiguration("redisConnectionString");

            // act
            var cfg   = ConfigurationBuilder.LoadConfigurationFile(fileName, cacheName);
            var cache = CacheFactory.FromConfiguration <object>(cfg);

            // assert
            cache.CacheHandles.Any(p => p.Configuration.IsBackplaneSource).Should().BeTrue();

            // database is the only option apart from key and connection string which must be set, database will not be set through connection string
            // to define which database should actually be used...
            redisConfig.Database.Should().Be(131);
        }