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); }
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(); }
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 *"); }
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*"); }
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*"); }
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*"); }
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*"); }
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]."); }
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."); }
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."); }
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."); }
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*"); }
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]"); }
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) + "*"); }
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."); }
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*"); }
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]"); }
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."); }
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(); }
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*"); }
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"); }
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*"); }
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)); }
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); }
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())); }
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)); }
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"); }
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); }