public void SlidingExpirationRenewedByAccessUntilAbsoluteExpiration()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            cache.Set(key, value, new StreamCacheEntryOptions()
                      .SetSlidingExpiration(TimeSpan.FromSeconds(1))
                      .SetAbsoluteExpiration(TimeSpan.FromSeconds(3)));

            var result = cache.Get(key);

            Assert.Equal(value, result);

            for (var i = 0; i < 5; i++)
            {
                Thread.Sleep(TimeSpan.FromSeconds(0.5));

                result = cache.Get(key);
                Assert.Equal(value, result);
            }

            Thread.Sleep(TimeSpan.FromSeconds(.6));

            result = cache.Get(key);
            Assert.Null(result);
        }
Exemple #2
0
        public void SetAndGetReturnsObject()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));
            var key   = "myKey";

            cache.Set(key, value);

            var result = cache.Get(key);

            Assert.Equal(value, result);
        }
        public void ZeroRelativeExpirationThrows()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            Assert.Throws <ArgumentOutOfRangeException>(nameof(StreamCacheEntryOptions.AbsoluteExpirationRelativeToNow), () =>
            {
                cache.Set(key, value, new StreamCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.Zero));
            }); //"The relative expiration value must be positive.", TimeSpan.Zero);
        }
        public void NegativeSlidingExpirationThrows()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            Assert.Throws <ArgumentOutOfRangeException>(nameof(StreamCacheEntryOptions.SlidingExpiration), () =>
            {
                cache.Set(key, value, new StreamCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(-1)));
            }); // "The sliding expiration value must be positive.", TimeSpan.FromMinutes(-1));
        }
        public void AbsoluteSubSecondExpirationExpiresImmidately()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            cache.Set(key, value, new StreamCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromSeconds(0.25)));

            var result = cache.Get(key);

            Assert.Null(result);
        }
        public void AbsoluteExpirationInThePastThrows()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            var expected = DateTimeOffset.Now - TimeSpan.FromMinutes(1);

            Assert.Throws <ArgumentOutOfRangeException>(nameof(StreamCacheEntryOptions.AbsoluteExpiration), () =>
            {
                cache.Set(key, value, new StreamCacheEntryOptions().SetAbsoluteExpiration(expected));
            }); //"The absolute expiration value must be in the future.", expected);
        }
Exemple #7
0
        public void RemoveRemoves()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));
            var key   = "myKey";

            cache.Set(key, value);
            var result = cache.Get(key);

            Assert.Equal(value, result);

            cache.Remove(key);
            result = cache.Get(key);
            Assert.Null(result);
        }
        public void SlidingExpirationExpiresIfNotAccessed()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            cache.Set(key, value, new StreamCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(1)));

            var result = cache.Get(key);

            Assert.Equal(value, result);

            Thread.Sleep(TimeSpan.FromSeconds(3));

            result = cache.Get(key);
            Assert.Null(result);
        }
        public void RelativeExpirationExpires()
        {
            var cache = FileStreamTestConfig.CreateCacheInstance(GetType().Name);

            var key   = "myKey";
            var value = new StreamWithHeader(new MemoryStream(new byte[1]));

            cache.Set(key, value, new StreamCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromSeconds(1)));

            var result = cache.Get(key);

            Assert.Equal(value, result);

            for (var i = 0; i < 4 && result != null; i++)
            {
                Thread.Sleep(TimeSpan.FromSeconds(0.5));
                result = cache.Get(key);
            }
            Assert.Null(result);
        }
Exemple #10
0
        /// <summary>
        /// Deserializes the response message asynchronous.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns></returns>
        /// <exception cref="InvalidOperationException">Unable to find HttpConnectionResponseContent</exception>
        /// <exception cref="ArgumentNullException">source or Header</exception>
        public static Task <HttpResponseMessage> DeserializeResponseMessageAsync(StreamWithHeader source)
        {
            if (ResponseContentType == null)
            {
                throw new InvalidOperationException("Unable to find HttpConnectionResponseContent");
            }
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (source.Header == null)
            {
                throw new ArgumentNullException(nameof(source.Header));
            }

            using (var s = new MemoryStream(Decompress(source.Header)))
            {
                var f        = new BinaryReader(s);
                var response = new HttpResponseMessage((HttpStatusCode)f.ReadInt32())
                {
                    Version      = new Version(f.ReadString()),
                    ReasonPhrase = f.ReadBoolean() ? f.ReadString() : null,
                };
                var headers = f.ReadDictionary();
                foreach (var header in headers)
                {
                    response.Headers.Add(header.Key, header.Value);
                }

                if (source.Base.CanSeek)
                {
                    source.Base.Position = 0;
                }
                var content = new StreamContent(source.Base);
                //var content = (HttpContent)Activator.CreateInstance(ResponseContentType);
                //SetStreamMethod.Invoke(content, new[] { source.Base });

                response.Content = content;
                return(Task.FromResult(response));
            }
        }
Exemple #11
0
        public void SetAlwaysOverwrites()
        {
            var cache  = FileStreamTestConfig.CreateCacheInstance(GetType().Name);
            var value1 = new StreamWithHeader(new MemoryStream(new byte[1] {
                1
            }));
            var key = "myKey";

            cache.Set(key, value1);
            var result = cache.Get(key);

            Assert.Equal(value1, result);

            var value2 = new StreamWithHeader(new MemoryStream(new byte[1] {
                2
            }));

            cache.Set(key, value2);
            result = cache.Get(key);
            Assert.Equal(value2, result);
        }
Exemple #12
0
 public Task SetAsync(string key, StreamWithHeader value)
 {
     return(Task.CompletedTask);
 }
Exemple #13
0
 public void Set(string key, StreamWithHeader value)
 {
 }