public void Test_Not_Cacheable_No_Content() { var cachingHandler = new CachingHandler(); var response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.CacheControl = new CacheControlHeaderValue(){Public = true}; Assert.AreEqual(cachingHandler.ResponseValidator(response), ResponseValidationResult.NotCacheable); }
public void Test_NoCache_IsCacheable_And_NotStale_But_MustRevalidate() { var cachingHandler = new CachingHandler(); var response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.CacheControl = new CacheControlHeaderValue() { Public = true, NoCache = true}; response.Content = new ByteArrayContent(new byte[256]); response.Content.Headers.Expires = DateTimeOffset.Now.AddHours(1); // resource is not stale Assert.AreEqual(cachingHandler.ResponseValidator(response), ResponseValidationResult.MustRevalidate); }
public void Setup() { _mockRepository = new MockRepository(); _cacheStore = _mockRepository.StrictMock<ICacheStore>(); _messageHandler = new DummyMessageHandler(); _cachingHandler = new CachingHandler(_cacheStore) { InnerHandler = _messageHandler }; _client = new HttpClient(_cachingHandler); }
public void Test_Stale_By_Expires() { var cachingHandler = new CachingHandler(); cachingHandler.MustRevalidateByDefault = false; var response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.CacheControl = new CacheControlHeaderValue() { Public = true }; response.Content = new ByteArrayContent(new byte[256]); response.Content.Headers.Expires = DateTimeOffset.UtcNow.AddDays(-1); Assert.AreEqual(cachingHandler.ResponseValidator(response), ResponseValidationResult.Stale); }
public void Test_Stale_By_Age() { var cachingHandler = new CachingHandler(); var response = new HttpResponseMessage(HttpStatusCode.OK); response.Headers.CacheControl = new CacheControlHeaderValue() { Public = true, MaxAge = TimeSpan.FromSeconds(200) }; response.Headers.Date = DateTimeOffset.UtcNow.AddDays(-1); response.Content = new ByteArrayContent(new byte[256]); Assert.AreEqual(cachingHandler.ResponseValidator(response), ResponseValidationResult.MustRevalidate); }
public void TestMemoryLeak() { var memorySize64 = Process.GetCurrentProcess().PrivateMemorySize64; for (int i = 0; i < 200; i++) { var store = new CachingHandler(); //Thread.Sleep(1); store.Dispose(); GC.Collect(); GC.WaitForPendingFinalizers(); if(Process.GetCurrentProcess().PrivateMemorySize64 - memorySize64 > 2 * 1024 * 1024) Assert.Fail("Memory leak"); } }
static void Main(string[] args) { ThreadPool.SetMinThreads(200, 200); var crawler = new Crawler(); var fileStore = new FileStore(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Cache")); var cachingHandler = new CachingHandler(fileStore) { InnerHandler = new HttpClientHandler() }; crawler.Requester = new HttpClient(cachingHandler); if(ConfigurationManager.ConnectionStrings["UrlStore"]!=null) crawler.Store = new UrlStore(); crawler.Crawl("http://YAHOO.COM"); Console.Read(); }
public void DoesNotDisposeVaryHeaderStoreIfPassedToIt() { var mockcs = new Moq.Mock<ICacheStore>(); var mockvh = new Moq.Mock<IVaryHeaderStore>(MockBehavior.Strict); var handler = new CachingHandler(mockcs.Object, mockvh.Object); handler.Dispose(); mockvh.Verify(); }
public void DoesNotDisposeCacheStoreIfPassedToIt() { var mock = new Moq.Mock<ICacheStore>(MockBehavior.Strict); var handler = new CachingHandler(mock.Object); handler.Dispose(); mock.Verify(); }
public void DefaultExceptionPolicy_Throws_CacheStore_Exceptions() { // setup var request = new HttpRequestMessage(HttpMethod.Put, DummyUrl); var responseFromServer = GetOkMessage(); _messageHandler.Response = responseFromServer; _cacheStore = new FaultyCacheStore(); _cachingHandler = new CachingHandler(_cacheStore) { InnerHandler = _messageHandler }; _client = new HttpClient(_cachingHandler); // run var task = _client.SendAsync(request); var responseReturned = task.Result; }
public void IgnoreExceptionPolicy_Ignores_CacheStore_Exceptions() { // setup var request = new HttpRequestMessage(HttpMethod.Put, DummyUrl); var responseFromServer = GetOkMessage(); _messageHandler.Response = responseFromServer; _cacheStore = new FaultyCacheStore(); _cachingHandler = new CachingHandler(_cacheStore) { InnerHandler = _messageHandler }; _cachingHandler.ExceptionHandler = CachingHandler.IgnoreExceptionPolicy; _client = new HttpClient(_cachingHandler); // run var task = _client.SendAsync(request); var responseReturned = task.Result; // verify Assert.AreEqual(responseFromServer, responseReturned); }
public void Test_Not_Cacheable_StatusCode(HttpStatusCode code) { var cachingHandler = new CachingHandler(); var response = new HttpResponseMessage(code); Assert.AreEqual(cachingHandler.ResponseValidator(response), ResponseValidationResult.NotCacheable); }