diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-29 08:51:15 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-09-29 08:51:15 +0000 |
commit | d1bbb3883dc9f5edb4c83f9d8db2f0a93b30f972 (patch) | |
tree | 3ad9d0d376af6f97c8ff9c2505237a638201e07b | |
parent | b04d0fc3fb4ac5b516d2588f1f487722fdaec054 (diff) | |
parent | 6d436db2f0d98ee05c6c8833e5ce488bbe17e04a (diff) | |
download | volley-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.java | 1 | ||||
-rw-r--r-- | src/test/java/com/android/volley/CacheDispatcherTest.java | 27 |
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); |