public void Remove()
        {
            var cacheFactory = CacheFactory.Create()
                               .SetProperty("log-level", "none")
                               .SetProperty("log-file", "SessionStateCacheIntegrationTests.log");

            var         cache       = (Cache)cacheFactory.CreateCache();
            PoolFactory poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
            var         pool        = poolFactory.CreatePool("myPool");

            var ssCache = new SessionStateCache(cache, _regionName);

            var            options       = new DistributedCacheEntryOptions();
            DateTime       localTime     = DateTime.Now.AddDays(1);
            DateTimeOffset dateAndOffset = new DateTimeOffset(localTime,
                                                              TimeZoneInfo.Local.GetUtcOffset(localTime));

            options.AbsoluteExpiration = dateAndOffset;
            var testValue = new byte[] { 1, 2, 3, 4, 5 };

            ssCache.Set("testKey", testValue, options);
            byte[] value = ssCache.Get("testKey");

            ssCache.Remove("testKey");
            value = ssCache.Get("testKey");
            Assert.Null(value);
        }
        public void Refresh()
        {
            var cacheFactory = CacheFactory.Create()
                               .SetProperty("log-level", "none")
                               .SetProperty("log-file", "SessionStateCacheIntegrationTests.log");

            var         cache       = (Cache)cacheFactory.CreateCache();
            PoolFactory poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
            var         pool        = poolFactory.CreatePool("myPool");

            var ssCache = new SessionStateCache(cache, _regionName);

            var options    = new DistributedCacheEntryOptions();
            int numSeconds = 20;

            options.SlidingExpiration = new TimeSpan(0, 0, numSeconds);
            var testValue = new byte[] { 1, 2, 3, 4, 5 };

            // Set a value
            ssCache.Set("testKey", testValue, options);

            // Wait half a timeout then refresh
            System.Threading.Thread.Sleep(numSeconds / 2 * 1000);
            ssCache.Refresh("testKey");

            // Wait beyond the original expiration
            System.Threading.Thread.Sleep(numSeconds / 2 * 1000 + 1);

            // Ensure it's not expired
            byte[] value = ssCache.Get("testKey");
            Assert.True(testValue.SequenceEqual(value));
        }
        public void SetWithAbsoluteExpiration()
        {
            var cacheFactory = CacheFactory.Create()
                               .SetProperty("log-level", "none")
                               .SetProperty("log-file", "SessionStateCacheIntegrationTests.log");

            var         cache       = (Cache)cacheFactory.CreateCache();
            PoolFactory poolFactory = cache.PoolFactory;

            var ssCache = new SessionStateCache(cache, _regionName);

            var options = new DistributedCacheEntryOptions();

            options.AbsoluteExpiration = DateTime.Now.AddSeconds(5);
            ssCache.Set("testKey", Encoding.UTF8.GetBytes("testValue"), options);
            System.Threading.Thread.Sleep(6000);
            byte[] value = ssCache.Get("testKey");
            Assert.Null(value);
        }
        public void SetGetRemoveAsync()
        {
            var cacheFactory = CacheFactory.Create()
                               .SetProperty("log-level", "none")
                               .SetProperty("log-file", "SessionStateCacheIntegrationTests.log");

            var         cache       = (Cache)cacheFactory.CreateCache();
            PoolFactory poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
            var         pool        = poolFactory.CreatePool("myPool");

            var ssCache = new SessionStateCache(cache, _regionName);

            var            options       = new DistributedCacheEntryOptions();
            DateTime       localTime     = DateTime.Now.AddDays(1);
            DateTimeOffset dateAndOffset = new DateTimeOffset(localTime,
                                                              TimeZoneInfo.Local.GetUtcOffset(localTime));

            options.AbsoluteExpiration = dateAndOffset;

            var testValue1 = new byte[] { 1, 2, 3, 4, 5 };
            var testValue2 = new byte[] { 11, 12, 13, 14, 15 };
            var testValue3 = new byte[] { 21, 22, 23, 24, 25 };
            var testValue4 = new byte[] { 31, 32, 33, 34, 35 };
            var testValue5 = new byte[] { 41, 42, 43, 44, 45 };

            Task set1 = ssCache.SetAsync("testKey1", testValue1, options);
            Task set2 = ssCache.SetAsync("testKey2", testValue2, options);
            Task set3 = ssCache.SetAsync("testKey3", testValue3, options);
            Task set4 = ssCache.SetAsync("testKey4", testValue4, options);
            Task set5 = ssCache.SetAsync("testKey5", testValue5, options);

            Task.WaitAll(set1, set2, set3, set4, set5);

            Task <byte[]> value1 = ssCache.GetAsync("testKey1");
            Task <byte[]> value2 = ssCache.GetAsync("testKey2");
            Task <byte[]> value3 = ssCache.GetAsync("testKey3");
            Task <byte[]> value4 = ssCache.GetAsync("testKey4");
            Task <byte[]> value5 = ssCache.GetAsync("testKey5");

            Task.WaitAll(value1, value2, value3, value4, value5);

            Assert.True(testValue1.SequenceEqual(value1.Result));
            Assert.True(testValue2.SequenceEqual(value2.Result));
            Assert.True(testValue3.SequenceEqual(value3.Result));
            Assert.True(testValue4.SequenceEqual(value4.Result));
            Assert.True(testValue5.SequenceEqual(value5.Result));

            Task rm1 = ssCache.RemoveAsync("testKey1");
            Task rm2 = ssCache.RemoveAsync("testKey2");
            Task rm3 = ssCache.RemoveAsync("testKey3");
            Task rm4 = ssCache.RemoveAsync("testKey4");
            Task rm5 = ssCache.RemoveAsync("testKey5");

            Task.WaitAll(rm1, rm2, rm3, rm4, rm5);

            Assert.Null(ssCache.Get("testKey1"));
            Assert.Null(ssCache.Get("testKey2"));
            Assert.Null(ssCache.Get("testKey3"));
            Assert.Null(ssCache.Get("testKey4"));
            Assert.Null(ssCache.Get("testKey5"));
        }