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); }
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); }
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); }
/// <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)); } }
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); }
public Task SetAsync(string key, StreamWithHeader value) { return(Task.CompletedTask); }
public void Set(string key, StreamWithHeader value) { }