Esempio n. 1
0
        public void Redis_Multiple_PubSub_Remove()
        {
            // arrange
            var item        = new CacheItem <object>(Guid.NewGuid().ToString(), "something");
            var channelName = Guid.NewGuid().ToString();

            // act/assert
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Add(item);
                cacheB.Get(item.Key).Should().Be(item.Value);
                cacheB.Remove(item.Key);
                Thread.Sleep(10);
            },
                (cache) =>
            {
                int tries    = 0;
                object value = null;
                do
                {
                    tries++;
                    Thread.Sleep(100);
                    value = cache.GetCacheItem(item.Key);
                }while (value != null && tries < 50);

                value.Should().BeNull();
            },
                1,
                TestManagers.CreateRedisAndDicCacheWithBackplane(6, true, channelName),
                TestManagers.CreateRedisAndDicCacheWithBackplane(6, true, channelName),
                TestManagers.CreateRedisCache(6),
                TestManagers.CreateRedisAndDicCacheWithBackplane(6, true, channelName));
        }
Esempio n. 2
0
        public void Redis_Multiple_PubSub_Change()
        {
            // arrange
            var item = new CacheItem <object>(Guid.NewGuid().ToString(), "something");

            // act/assert
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Put(item);
                Thread.Sleep(1);
                var value = cacheB.Get(item.Key);
                value.Should().Be(item.Value);
                cacheB.Put(item.Key, "new value");
            },
                (cache) =>
            {
                Thread.Sleep(1);
                var value = cache.Get(item.Key);
                value.Should().Be("new value");
            },
                3,
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(3),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(3),
                TestManagers.CreateRedisCache(3),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(3));
        }
Esempio n. 3
0
        public void Redis_Multiple_PubSub_Remove()
        {
            // arrange
            var item = new CacheItem <object>(Guid.NewGuid().ToString(), "something");

            // act/assert
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Add(item);
                cacheB.Get(item.Key).Should().Be(item.Value);
                cacheB.Remove(item.Key);
            },
                (cache) =>
            {
                Thread.Sleep(10);
                var value = cache.GetCacheItem(item.Key);
                value.Should().BeNull();
            },
                2,
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(6),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(6),
                TestManagers.CreateRedisCache(6),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(6));
        }
        public async Task Redis_Multiple_PubSub_ClearRegion()
        {
            // arrange
            var item        = new CacheItem <object>(Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), "something");
            var channelName = Guid.NewGuid().ToString();

            // act/assert
            await RedisTests.RunMultipleCaches(
                async (cacheA, cacheB) =>
            {
                cacheA.Add(item);
                cacheB.Get(item.Key, item.Region).Should().Be(item.Value);
                cacheB.ClearRegion(item.Region);
                await Task.Delay(0);
            },
                async (cache) =>
            {
                cache.Get(item.Key, item.Region).Should().BeNull();
                await Task.Delay(0);
            },
                2,
                TestManagers.CreateRedisCache(5),
                TestManagers.CreateRedisCache(5),
                TestManagers.CreateRedisCache(5),
                TestManagers.CreateRedisCache(5));
        }
Esempio n. 5
0
        public void Redis_Multiple_PubSub_Change()
        {
            // arrange
            string fileName    = BaseCacheManagerTest.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
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Put(item);
                cacheA.Get(item.Key).Should().Be("something");
                Thread.Sleep(10);
                var value = cacheB.Get(item.Key);
                value.Should().Be(item.Value, cacheB.ToString());
                cacheB.Put(item.Key, "new value");
            },
                (cache) =>
            {
                int tries    = 0;
                object value = null;
                do
                {
                    tries++;
                    Thread.Sleep(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));
        }
Esempio n. 6
0
        ////[Trait("category", "Unreliable")]
        public void Redis_Multiple_PubSub_Change()
        {
            // arrange
            string fileName    = BaseCacheManagerTest.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 = "redisConfig";

            RedisConfigurations.LoadConfiguration(fileName, RedisConfigurationSection.DefaultSectionName);

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

            cfg.BackPlateChannelName = channelName;

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

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

            // act/assert
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Put(item);
                Thread.Sleep(10);
                var value = cacheB.Get(item.Key);
                value.Should().Be(item.Value, cacheB.ToString());
                cacheB.Put(item.Key, "new value");
            },
                (cache) =>
            {
                Thread.Sleep(12);
                var value = cache.Get(item.Key);
                value.Should().Be("new value", cache.ToString());
            },
                2,
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(69, true, channelName),
                cfgCache,
                TestManagers.CreateRedisCache(69),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(69, true, channelName));
        }
Esempio n. 7
0
        public void Redis_Multiple_PubSub_ClearRegion()
        {
            // arrange
            var item = new CacheItem <object>(Guid.NewGuid().ToString(), "something", Guid.NewGuid().ToString());

            // act/assert
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Add(item);
                cacheB.Get(item.Key, item.Region).Should().Be(item.Value);
                cacheB.ClearRegion(item.Region);
            },
                (cache) =>
            {
                cache.Get(item.Key, item.Region).Should().BeNull();
            }, 10,
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(5),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(5),
                TestManagers.CreateRedisCache(5),
                TestManagers.CreateRedisAndSystemCacheWithBackPlate(5));
        }
Esempio n. 8
0
        public void Redis_Multiple_PubSub_Clear()
        {
            // arrange
            var item        = new CacheItem <object>(Guid.NewGuid().ToString(), "something");
            var channelName = Guid.NewGuid().ToString();

            // act/assert
            RedisTests.RunMultipleCaches(
                (cacheA, cacheB) =>
            {
                cacheA.Add(item);
                cacheB.Get(item.Key).Should().Be(item.Value);
                cacheB.Clear();
            },
                (cache) =>
            {
                cache.Get(item.Key).Should().BeNull();
            },
                2,
                TestManagers.CreateRedisAndDicCacheWithBackplane(444, true, channelName),
                TestManagers.CreateRedisAndDicCacheWithBackplane(444, true, channelName),
                TestManagers.CreateRedisCache(444),
                TestManagers.CreateRedisAndDicCacheWithBackplane(444, true, channelName));
        }