aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-09-29 08:51:15 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-09-29 08:51:15 +0000
commitd1bbb3883dc9f5edb4c83f9d8db2f0a93b30f972 (patch)
tree3ad9d0d376af6f97c8ff9c2505237a638201e07b
parentb04d0fc3fb4ac5b516d2588f1f487722fdaec054 (diff)
parent6d436db2f0d98ee05c6c8833e5ce488bbe17e04a (diff)
downloadvolley-d1bbb3883dc9f5edb4c83f9d8db2f0a93b30f972.tar.gz
release-request-fbd98711-169e-4972-a5f2-db043df00e09-for-git_pi-release-4367572 snap-temp-L13500000107248413
Change-Id: I2dbc75af4802daea13522f543831519531c639a4
-rw-r--r--src/main/java/com/android/volley/CacheDispatcher.java1
-rw-r--r--src/test/java/com/android/volley/CacheDispatcherTest.java27
2 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/com/android/volley/CacheDispatcher.java b/src/main/java/com/android/volley/CacheDispatcher.java
index 51dfd9c..b0432f3 100644
--- a/src/main/java/com/android/volley/CacheDispatcher.java
+++ b/src/main/java/com/android/volley/CacheDispatcher.java
@@ -229,6 +229,7 @@ public class CacheDispatcher extends Thread {
}
Request<?> nextInLine = waitingRequests.remove(0);
mWaitingRequests.put(cacheKey, waitingRequests);
+ nextInLine.setNetworkRequestCompleteListener(this);
try {
mCacheDispatcher.mNetworkQueue.put(nextInLine);
} catch (InterruptedException iex) {
diff --git a/src/test/java/com/android/volley/CacheDispatcherTest.java b/src/test/java/com/android/volley/CacheDispatcherTest.java
index 54886f8..a39be7b 100644
--- a/src/test/java/com/android/volley/CacheDispatcherTest.java
+++ b/src/test/java/com/android/volley/CacheDispatcherTest.java
@@ -124,6 +124,33 @@ public class CacheDispatcherTest {
assertFalse(mDelivery.postResponse_called);
}
+ @Test public void tripleCacheMiss_networkErrorOnFirst() throws Exception {
+ MockRequest secondRequest = new MockRequest();
+ MockRequest thirdRequest = new MockRequest();
+ mRequest.setSequence(1);
+ secondRequest.setSequence(2);
+ thirdRequest.setSequence(3);
+ mCacheQueue.add(mRequest);
+ mCacheQueue.add(secondRequest);
+ mCacheQueue.add(thirdRequest);
+ mCacheQueue.waitUntilEmpty(TIMEOUT_MILLIS);
+
+ assertTrue(mNetworkQueue.size() == 1);
+ assertFalse(mDelivery.postResponse_called);
+
+ Request request = mNetworkQueue.take();
+ request.notifyListenerResponseNotUsable();
+ // Second request should now be in network queue.
+ assertTrue(mNetworkQueue.size() == 1);
+ request = mNetworkQueue.take();
+ assertTrue(request.equals(secondRequest));
+ // Another unusable response, third request should now be added.
+ request.notifyListenerResponseNotUsable();
+ assertTrue(mNetworkQueue.size() == 1);
+ request = mNetworkQueue.take();
+ assertTrue(request.equals(thirdRequest));
+ }
+
@Test public void duplicateSoftExpiredCacheHit_failedRequest() throws Exception {
Cache.Entry entry = CacheTestUtils.makeRandomCacheEntry(null, false, true);
mCache.setEntryToReturn(entry);