[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpcomponents-commits
Subject:    [3/4] httpcomponents-client git commit: Clean up of BasicHttpCache and related test classes
From:       olegk () apache ! org
Date:       2017-12-22 14:20:21
Message-ID: 4c181e76e80c4617b932a7e947a1441e () git ! apache ! org
[Download RAW message or body]

Clean up of BasicHttpCache and related test classes


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/commit/123a68d5
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/tree/123a68d5
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-client/diff/123a68d5

Branch: refs/heads/master
Commit: 123a68d51376aa750f12a76d0664cfa42419b229
Parents: b2d063c
Author: Oleg Kalnichevski <olegk@apache.org>
Authored: Wed Dec 20 16:31:08 2017 +0100
Committer: Oleg Kalnichevski <olegk@apache.org>
Committed: Fri Dec 22 11:10:08 2017 +0100

----------------------------------------------------------------------
 .../client5/http/impl/cache/BasicHttpCache.java | 78 +++++---------------
 .../http/impl/cache/CacheEntryUpdater.java      | 58 +++++++++++++--
 .../http/impl/cache/ContainsHeaderMatcher.java  | 74 +++++++++++++++++++
 .../http/impl/cache/TestBasicHttpCache.java     | 20 -----
 .../http/impl/cache/TestCacheEntryUpdater.java  | 63 ++++++++--------
 5 files changed, 175 insertions(+), 118 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/123a68d5/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/BasicHttpCache.java
                
----------------------------------------------------------------------
diff --git a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/BasicHttpCache.java \
b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/BasicHttpCache.java
 index 2c6082e..61f6311 100644
--- a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/BasicHttpCache.java
                
+++ b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/BasicHttpCache.java
 @@ -32,12 +32,11 @@ import java.util.Map;
 
 import org.apache.hc.client5.http.StandardMethods;
 import org.apache.hc.client5.http.cache.HeaderConstants;
+import org.apache.hc.client5.http.cache.HttpCacheCASOperation;
 import org.apache.hc.client5.http.cache.HttpCacheEntry;
 import org.apache.hc.client5.http.cache.HttpCacheInvalidator;
 import org.apache.hc.client5.http.cache.HttpCacheStorage;
-import org.apache.hc.client5.http.cache.HttpCacheCASOperation;
 import org.apache.hc.client5.http.cache.HttpCacheUpdateException;
-import org.apache.hc.client5.http.cache.Resource;
 import org.apache.hc.client5.http.cache.ResourceFactory;
 import org.apache.hc.client5.http.cache.ResourceIOException;
 import org.apache.hc.core5.http.Header;
@@ -50,9 +49,8 @@ import org.apache.logging.log4j.Logger;
 
 class BasicHttpCache implements HttpCache {
 
-    private final CacheKeyGenerator uriExtractor;
-    private final ResourceFactory resourceFactory;
     private final CacheEntryUpdater cacheEntryUpdater;
+    private final CacheKeyGenerator cacheKeyGenerator;
     private final HttpCacheInvalidator cacheInvalidator;
     private final HttpCacheStorage storage;
 
@@ -61,11 +59,10 @@ class BasicHttpCache implements HttpCache {
     public BasicHttpCache(
             final ResourceFactory resourceFactory,
             final HttpCacheStorage storage,
-            final CacheKeyGenerator uriExtractor,
+            final CacheKeyGenerator cacheKeyGenerator,
             final HttpCacheInvalidator cacheInvalidator) {
-        this.resourceFactory = resourceFactory;
-        this.uriExtractor = uriExtractor;
         this.cacheEntryUpdater = new CacheEntryUpdater(resourceFactory);
+        this.cacheKeyGenerator = cacheKeyGenerator;
         this.storage = storage;
         this.cacheInvalidator = cacheInvalidator;
     }
@@ -73,8 +70,8 @@ class BasicHttpCache implements HttpCache {
     public BasicHttpCache(
             final ResourceFactory resourceFactory,
             final HttpCacheStorage storage,
-            final CacheKeyGenerator uriExtractor) {
-        this(resourceFactory, storage, uriExtractor, new \
DefaultCacheInvalidator(uriExtractor, storage)); +            final CacheKeyGenerator \
cacheKeyGenerator) { +        this(resourceFactory, storage, cacheKeyGenerator, new \
DefaultCacheInvalidator(cacheKeyGenerator, storage));  }
 
     public BasicHttpCache(final ResourceFactory resourceFactory, final \
HttpCacheStorage storage) { @@ -92,7 +89,7 @@ class BasicHttpCache implements \
HttpCache {  @Override
     public void flushCacheEntriesFor(final HttpHost host, final HttpRequest request) \
throws ResourceIOException {  if (!StandardMethods.isSafe(request.getMethod())) {
-            final String uri = uriExtractor.generateKey(host, request);
+            final String uri = cacheKeyGenerator.generateKey(host, request);
             storage.removeEntry(uri);
         }
     }
@@ -115,7 +112,7 @@ class BasicHttpCache implements HttpCache {
 
     void storeNonVariantEntry(
             final HttpHost target, final HttpRequest req, final HttpCacheEntry \
                entry) throws ResourceIOException {
-        final String uri = uriExtractor.generateKey(target, req);
+        final String uri = cacheKeyGenerator.generateKey(target, req);
         storage.putEntry(uri, entry);
     }
 
@@ -123,9 +120,9 @@ class BasicHttpCache implements HttpCache {
             final HttpHost target,
             final HttpRequest req,
             final HttpCacheEntry entry) throws ResourceIOException {
-        final String parentCacheKey = uriExtractor.generateKey(target, req);
-        final String variantKey = uriExtractor.generateVariantKey(req, entry);
-        final String variantURI = uriExtractor.generateVariantURI(target, req, \
entry); +        final String parentCacheKey = cacheKeyGenerator.generateKey(target, \
req); +        final String variantKey = cacheKeyGenerator.generateVariantKey(req, \
entry); +        final String variantURI = \
cacheKeyGenerator.generateVariantURI(target, req, entry);  \
storage.putEntry(variantURI, entry);  
         try {
@@ -133,7 +130,7 @@ class BasicHttpCache implements HttpCache {
 
                 @Override
                 public HttpCacheEntry execute(final HttpCacheEntry existing) throws \
                ResourceIOException {
-                    return doGetUpdatedParentEntry(req.getRequestUri(), existing, \
entry, variantKey, variantURI); +                    return \
cacheEntryUpdater.updateParentCacheEntry(req.getRequestUri(), existing, entry, \
variantKey, variantURI);  }
 
             });
@@ -145,9 +142,9 @@ class BasicHttpCache implements HttpCache {
     @Override
     public void reuseVariantEntryFor(
             final HttpHost target, final HttpRequest req, final Variant variant) \
                throws ResourceIOException {
-        final String parentCacheKey = uriExtractor.generateKey(target, req);
+        final String parentCacheKey = cacheKeyGenerator.generateKey(target, req);
         final HttpCacheEntry entry = variant.getEntry();
-        final String variantKey = uriExtractor.generateVariantKey(req, entry);
+        final String variantKey = cacheKeyGenerator.generateVariantKey(req, entry);
         final String variantCacheKey = variant.getCacheKey();
 
         try {
@@ -155,7 +152,7 @@ class BasicHttpCache implements HttpCache {
 
                 @Override
                 public HttpCacheEntry execute(final HttpCacheEntry existing) throws \
                ResourceIOException {
-                    return doGetUpdatedParentEntry(req.getRequestUri(), existing, \
entry, variantKey, variantCacheKey); +                    return \
cacheEntryUpdater.updateParentCacheEntry(req.getRequestUri(), existing, entry, \
variantKey, variantCacheKey);  }
 
             });
@@ -164,32 +161,6 @@ class BasicHttpCache implements HttpCache {
         }
     }
 
-    HttpCacheEntry doGetUpdatedParentEntry(
-            final String requestId,
-            final HttpCacheEntry existing,
-            final HttpCacheEntry entry,
-            final String variantKey,
-            final String variantCacheKey) throws ResourceIOException {
-        HttpCacheEntry src = existing;
-        if (src == null) {
-            src = entry;
-        }
-
-        Resource resource = null;
-        if (src.getResource() != null) {
-            resource = resourceFactory.copy(requestId, src.getResource());
-        }
-        final Map<String,String> variantMap = new HashMap<>(src.getVariantMap());
-        variantMap.put(variantKey, variantCacheKey);
-        return new HttpCacheEntry(
-                src.getRequestDate(),
-                src.getResponseDate(),
-                src.getStatus(),
-                src.getAllHeaders(),
-                resource,
-                variantMap);
-    }
-
     @Override
     public HttpCacheEntry updateCacheEntry(
             final HttpHost target,
@@ -229,32 +200,21 @@ class BasicHttpCache implements HttpCache {
             final ByteArrayBuffer content,
             final Date requestSent,
             final Date responseReceived) throws ResourceIOException {
-        final Resource resource;
-        if (content != null) {
-            resource = resourceFactory.generate(request.getRequestUri(), \
                content.array(), 0, content.length());
-        } else {
-            resource = null;
-        }
-        final HttpCacheEntry entry = new HttpCacheEntry(
-                requestSent,
-                responseReceived,
-                originResponse.getCode(),
-                originResponse.getAllHeaders(),
-                resource);
+        final HttpCacheEntry entry = cacheEntryUpdater.createtCacheEntry(request, \
originResponse, content, requestSent, responseReceived);  storeInCache(host, request, \
entry);  return entry;
     }
 
     @Override
     public HttpCacheEntry getCacheEntry(final HttpHost host, final HttpRequest \
                request) throws ResourceIOException {
-        final HttpCacheEntry root = storage.getEntry(uriExtractor.generateKey(host, \
request)); +        final HttpCacheEntry root = \
storage.getEntry(cacheKeyGenerator.generateKey(host, request));  if (root == null) {
             return null;
         }
         if (!root.hasVariants()) {
             return root;
         }
-        final String variantCacheKey = \
root.getVariantMap().get(uriExtractor.generateVariantKey(request, root)); +        \
final String variantCacheKey = \
root.getVariantMap().get(cacheKeyGenerator.generateVariantKey(request, root));  if \
(variantCacheKey == null) {  return null;
         }
@@ -271,7 +231,7 @@ class BasicHttpCache implements HttpCache {
     public Map<String, Variant> getVariantCacheEntriesWithEtags(final HttpHost host, \
final HttpRequest request)  throws ResourceIOException {
         final Map<String,Variant> variants = new HashMap<>();
-        final HttpCacheEntry root = storage.getEntry(uriExtractor.generateKey(host, \
request)); +        final HttpCacheEntry root = \
storage.getEntry(cacheKeyGenerator.generateKey(host, request));  if (root == null || \
!root.hasVariants()) {  return variants;
         }

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/123a68d5/httpclient5 \
                -cache/src/main/java/org/apache/hc/client5/http/impl/cache/CacheEntryUpdater.java
                
----------------------------------------------------------------------
diff --git a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/CacheEntryUpdater.java \
b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/CacheEntryUpdater.java
 index 09b9cf0..899fa85 100644
--- a/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/CacheEntryUpdater.java
                
+++ b/httpclient5-cache/src/main/java/org/apache/hc/client5/http/impl/cache/CacheEntryUpdater.java
 @@ -29,8 +29,10 @@ package org.apache.hc.client5.http.impl.cache;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.Map;
 
 import org.apache.hc.client5.http.cache.HeaderConstants;
 import org.apache.hc.client5.http.cache.HttpCacheEntry;
@@ -42,9 +44,11 @@ import org.apache.hc.core5.annotation.Contract;
 import org.apache.hc.core5.annotation.ThreadingBehavior;
 import org.apache.hc.core5.http.Header;
 import org.apache.hc.core5.http.HttpHeaders;
+import org.apache.hc.core5.http.HttpRequest;
 import org.apache.hc.core5.http.HttpResponse;
 import org.apache.hc.core5.http.HttpStatus;
 import org.apache.hc.core5.util.Args;
+import org.apache.hc.core5.util.ByteArrayBuffer;
 
 /**
  * Update a {@link HttpCacheEntry} with new or updated information based on the \
latest @@ -67,17 +71,29 @@ class CacheEntryUpdater {
         this.resourceFactory = resourceFactory;
     }
 
+    public HttpCacheEntry createtCacheEntry(
+            final HttpRequest request,
+            final HttpResponse originResponse,
+            final ByteArrayBuffer content,
+            final Date requestSent,
+            final Date responseReceived) throws ResourceIOException {
+        final Resource resource;
+        if (content != null) {
+            resource = resourceFactory.generate(request.getRequestUri(), \
content.array(), 0, content.length()); +        } else {
+            resource = null;
+        }
+        return new HttpCacheEntry(
+                requestSent,
+                responseReceived,
+                originResponse.getCode(),
+                originResponse.getAllHeaders(),
+                resource);
+    }
+
     /**
      * Update the entry with the new information from the response.  Should only be \
                used for
      * 304 responses.
-     *
-     * @param requestId
-     * @param entry The cache Entry to be updated
-     * @param requestDate When the request was performed
-     * @param responseDate When the response was gotten
-     * @param response The HttpResponse from the backend server call
-     * @return HttpCacheEntry an updated version of the cache entry
-     * @throws ResourceIOException if something bad happens while trying to read the \
                body from the original entry
      */
     public HttpCacheEntry updateCacheEntry(
             final String requestId,
@@ -171,4 +187,30 @@ class CacheEntryUpdater {
         return false;
     }
 
+    public HttpCacheEntry updateParentCacheEntry(
+            final String requestId,
+            final HttpCacheEntry existing,
+            final HttpCacheEntry entry,
+            final String variantKey,
+            final String variantCacheKey) throws ResourceIOException {
+        HttpCacheEntry src = existing;
+        if (src == null) {
+            src = entry;
+        }
+
+        Resource resource = null;
+        if (src.getResource() != null) {
+            resource = resourceFactory.copy(requestId, src.getResource());
+        }
+        final Map<String,String> variantMap = new HashMap<>(src.getVariantMap());
+        variantMap.put(variantKey, variantCacheKey);
+        return new HttpCacheEntry(
+                src.getRequestDate(),
+                src.getResponseDate(),
+                src.getStatus(),
+                src.getAllHeaders(),
+                resource,
+                variantMap);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/123a68d5/httpclient5 \
                -cache/src/test/java/org/apache/hc/client5/http/impl/cache/ContainsHeaderMatcher.java
                
----------------------------------------------------------------------
diff --git a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/ContainsHeaderMatcher.java \
b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/ContainsHeaderMatcher.java
 new file mode 100644
index 0000000..37e4696
--- /dev/null
+++ b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/ContainsHeaderMatcher.java
 @@ -0,0 +1,74 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+package org.apache.hc.client5.http.impl.cache;
+
+import java.util.Iterator;
+
+import org.apache.hc.client5.http.cache.HttpCacheEntry;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.MessageHeaders;
+import org.apache.hc.core5.util.LangUtils;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.hamcrest.Factory;
+import org.hamcrest.Matcher;
+
+public class ContainsHeaderMatcher extends BaseMatcher<HttpCacheEntry> {
+
+    private final String headerName;
+    private final Object headerValue;
+
+    public ContainsHeaderMatcher(final String headerName, final Object headerValue) \
{ +        this.headerName = headerName;
+        this.headerValue = headerValue;
+    }
+
+    @Override
+    public boolean matches(final Object item) {
+        if (item instanceof MessageHeaders) {
+            final MessageHeaders messageHeaders = (MessageHeaders) item;
+            for (final Iterator<Header> it = messageHeaders.headerIterator(); \
it.hasNext(); ) { +                final Header header = it.next();
+                if (headerName.equalsIgnoreCase(header.getName()) && \
LangUtils.equals(headerValue, header.getValue())) { +                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public void describeTo(final Description description) {
+        description.appendText("contains header \
").appendValue(headerValue).appendText(": ").appendValue(headerValue); +    }
+
+    @Factory
+    public static Matcher<HttpCacheEntry> contains(final String headerName, final \
Object headerValue) { +        return new ContainsHeaderMatcher(headerName, \
headerValue); +    }
+
+}

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/123a68d5/httpclient5 \
                -cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestBasicHttpCache.java
                
----------------------------------------------------------------------
diff --git a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestBasicHttpCache.java \
b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestBasicHttpCache.java
 index e5b9b57..45b7cdd 100644
--- a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestBasicHttpCache.java
                
+++ b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestBasicHttpCache.java
 @@ -33,7 +33,6 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 
 import java.util.Date;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.hc.client5.http.cache.HeaderConstants;
@@ -182,25 +181,6 @@ public class TestBasicHttpCache {
     }
 
     @Test
-    public void testCacheUpdateAddsVariantURIToParentEntry() throws Exception {
-        final String parentCacheKey = "parentCacheKey";
-        final String variantCacheKey = "variantCacheKey";
-        final String existingVariantKey = "existingVariantKey";
-        final String newVariantCacheKey = "newVariantCacheKey";
-        final String newVariantKey = "newVariantKey";
-        final Map<String,String> existingVariants = new HashMap<>();
-        existingVariants.put(existingVariantKey, variantCacheKey);
-        final HttpCacheEntry parent = \
                HttpTestUtils.makeCacheEntry(existingVariants);
-        final HttpCacheEntry variant = HttpTestUtils.makeCacheEntry();
-
-        final HttpCacheEntry result = impl.doGetUpdatedParentEntry(parentCacheKey, \
                parent, variant, newVariantKey, newVariantCacheKey);
-        final Map<String,String> resultMap = result.getVariantMap();
-        assertEquals(2, resultMap.size());
-        assertEquals(variantCacheKey, resultMap.get(existingVariantKey));
-        assertEquals(newVariantCacheKey, resultMap.get(newVariantKey));
-    }
-
-    @Test
     public void testStoreInCachePutsNonVariantEntryInPlace() throws Exception {
         final HttpCacheEntry entry = HttpTestUtils.makeCacheEntry();
         assertFalse(entry.hasVariants());

http://git-wip-us.apache.org/repos/asf/httpcomponents-client/blob/123a68d5/httpclient5 \
                -cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCacheEntryUpdater.java
                
----------------------------------------------------------------------
diff --git a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCacheEntryUpdater.java \
b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCacheEntryUpdater.java
 index bd04b98..1f53353 100644
--- a/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCacheEntryUpdater.java
                
+++ b/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/TestCacheEntryUpdater.java
 @@ -28,10 +28,13 @@ package org.apache.hc.client5.http.impl.cache;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 
 import java.io.IOException;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.hc.client5.http.cache.HttpCacheEntry;
 import org.apache.hc.client5.http.utils.DateUtils;
@@ -93,11 +96,8 @@ public class TestCacheEntryUpdater {
         final HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry,
                 new Date(), new Date(), response);
 
-
-        final Header[] updatedHeaders = updatedEntry.getAllHeaders();
-        assertEquals(2, updatedHeaders.length);
-        headersContain(updatedHeaders, "Date", DateUtils.formatDate(responseDate));
-        headersContain(updatedHeaders, "ETag", "\"etag\"");
+        assertThat(updatedEntry, ContainsHeaderMatcher.contains("Date", \
DateUtils.formatDate(responseDate))); +        assertThat(updatedEntry, \
ContainsHeaderMatcher.contains("ETag", "\"etag\""));  }
 
     @Test
@@ -116,13 +116,10 @@ public class TestCacheEntryUpdater {
         final HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry,
                 new Date(), new Date(), response);
 
-        final Header[] updatedHeaders = updatedEntry.getAllHeaders();
-
-        assertEquals(4, updatedHeaders.length);
-        headersContain(updatedHeaders, "Date", DateUtils.formatDate(requestDate));
-        headersContain(updatedHeaders, "ETag", "\"etag\"");
-        headersContain(updatedHeaders, "Last-Modified", \
                DateUtils.formatDate(responseDate));
-        headersContain(updatedHeaders, "Cache-Control", "public");
+        assertThat(updatedEntry, ContainsHeaderMatcher.contains("Date", \
DateUtils.formatDate(requestDate))); +        assertThat(updatedEntry, \
ContainsHeaderMatcher.contains("ETag", "\"etag\"")); +        \
assertThat(updatedEntry, ContainsHeaderMatcher.contains("Last-Modified", \
DateUtils.formatDate(responseDate))); +        assertThat(updatedEntry, \
ContainsHeaderMatcher.contains("Cache-Control", "public"));  }
 
     @Test
@@ -139,13 +136,10 @@ public class TestCacheEntryUpdater {
         final HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry,
                 new Date(), new Date(), response);
 
-        final Header[] updatedHeaders = updatedEntry.getAllHeaders();
-        assertEquals(4, updatedHeaders.length);
-
-        headersContain(updatedHeaders, "Date", DateUtils.formatDate(requestDate));
-        headersContain(updatedHeaders, "ETag", "\"etag\"");
-        headersContain(updatedHeaders, "Last-Modified", \
                DateUtils.formatDate(responseDate));
-        headersContain(updatedHeaders, "Cache-Control", "public");
+        assertThat(updatedEntry, ContainsHeaderMatcher.contains("Date", \
DateUtils.formatDate(requestDate))); +        assertThat(updatedEntry, \
ContainsHeaderMatcher.contains("ETag", "\"etag\"")); +        \
assertThat(updatedEntry, ContainsHeaderMatcher.contains("Last-Modified", \
DateUtils.formatDate(responseDate))); +        assertThat(updatedEntry, \
ContainsHeaderMatcher.contains("Cache-Control", "public"));  }
 
     @Test
@@ -160,9 +154,8 @@ public class TestCacheEntryUpdater {
         response.setHeader("ETag", "\"old-etag\"");
         final HttpCacheEntry result = impl.updateCacheEntry("A", entry, new Date(),
                 new Date(), response);
-        assertEquals(2, result.getAllHeaders().length);
-        headersContain(result.getAllHeaders(), "Date", \
                DateUtils.formatDate(oneSecondAgo));
-        headersContain(result.getAllHeaders(), "ETag", "\"new-etag\"");
+        assertThat(result, ContainsHeaderMatcher.contains("Date", \
DateUtils.formatDate(oneSecondAgo))); +        assertThat(result, \
ContainsHeaderMatcher.contains("ETag", "\"new-etag\""));  }
 
     @Test
@@ -234,15 +227,23 @@ public class TestCacheEntryUpdater {
         }
     }
 
-    private void headersContain(final Header[] headers, final String name, final \
                String value) {
-        for (final Header header : headers) {
-            if (header.getName().equals(name)) {
-                if (header.getValue().equals(value)) {
-                    return;
-                }
-            }
-        }
-        fail("Header [" + name + ": " + value + "] not found in headers.");
+    @Test
+    public void testCacheUpdateAddsVariantURIToParentEntry() throws Exception {
+        final String parentCacheKey = "parentCacheKey";
+        final String variantCacheKey = "variantCacheKey";
+        final String existingVariantKey = "existingVariantKey";
+        final String newVariantCacheKey = "newVariantCacheKey";
+        final String newVariantKey = "newVariantKey";
+        final Map<String,String> existingVariants = new HashMap<>();
+        existingVariants.put(existingVariantKey, variantCacheKey);
+        final HttpCacheEntry parent = \
HttpTestUtils.makeCacheEntry(existingVariants); +        final HttpCacheEntry variant \
= HttpTestUtils.makeCacheEntry(); +
+        final HttpCacheEntry result = impl.updateParentCacheEntry(parentCacheKey, \
parent, variant, newVariantKey, newVariantCacheKey); +        final \
Map<String,String> resultMap = result.getVariantMap(); +        assertEquals(2, \
resultMap.size()); +        assertEquals(variantCacheKey, \
resultMap.get(existingVariantKey)); +        assertEquals(newVariantCacheKey, \
resultMap.get(newVariantKey));  }
 
 }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic