@Before public void setUp() throws Exception { mCacheQueue = new WaitableQueue(); mNetworkQueue = new WaitableQueue(); mCache = new MockCache(); mDelivery = new MockResponseDelivery(); mRequest = new MockRequest(); mDispatcher = new CacheDispatcher(mCacheQueue, mNetworkQueue, mCache, mDelivery); mDispatcher.start(); }
@Test public void cacheMiss() throws Exception { mCacheQueue.add(mRequest); mCacheQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mDelivery.wasEitherResponseCalled()); assertTrue(mNetworkQueue.size() > 0); Request request = mNetworkQueue.take(); assertNull(request.getCacheEntry()); }
@Test public void shouldCacheFalse() throws Exception { mRequest.setShouldCache(false); mNetworkQueue.add(mRequest); mNetworkQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mCache.putCalled); }
@Override public Request<?> take() throws InterruptedException { Request<?> item = super.take(); if (item == mStopRequest) { mStopEvent.release(); return take(); } return item; }
public void waitUntilEmpty(long timeoutMillis) throws TimeoutException, InterruptedException { add(mStopRequest); if (!mStopEvent.tryAcquire(timeoutMillis, TimeUnit.MILLISECONDS)) { throw new TimeoutException(); } }
@Test public void shouldCacheFalse() throws Exception { mRequest.setShouldCache(false); mNetworkQueue.add(mRequest); mNetworkQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mCache.putCalled); }
@Override public Request<?> take() throws InterruptedException { Request<?> item = super.take(); if (item == mStopRequest) { mStopEvent.release(); return take(); } return item; }
public void waitUntilEmpty(long timeoutMillis) throws TimeoutException, InterruptedException { add(mStopRequest); if (!mStopEvent.tryAcquire(timeoutMillis, TimeUnit.MILLISECONDS)) { throw new TimeoutException(); } }
@Test public void cacheMiss() throws Exception { mCacheQueue.add(mRequest); mCacheQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mDelivery.wasEitherResponseCalled()); assertTrue(mNetworkQueue.size() > 0); Request request = mNetworkQueue.take(); assertNull(request.getCacheEntry()); }
@Test public void exceptionPostsError() throws Exception { mNetwork.setNumExceptionsToThrow(MockNetwork.ALWAYS_THROW_EXCEPTIONS); mNetworkQueue.add(mRequest); mNetworkQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mDelivery.postResponse_called); assertTrue(mDelivery.postError_called); }
@Before public void setUp() throws Exception { mCacheQueue = new WaitableQueue(); mNetworkQueue = new WaitableQueue(); mCache = new MockCache(); mDelivery = new MockResponseDelivery(); mRequest = new MockRequest(); mDispatcher = new CacheDispatcher(mCacheQueue, mNetworkQueue, mCache, mDelivery); mDispatcher.start(); }
@Override public Request<?> take() throws InterruptedException { Request<?> item = super.take(); if (item == mStopRequest) { mStopEvent.release(); return take(); } return item; }
public void waitUntilEmpty(long timeoutMillis) throws TimeoutException, InterruptedException { add(mStopRequest); if (!mStopEvent.tryAcquire(timeoutMillis, TimeUnit.MILLISECONDS)) { throw new TimeoutException(); } }
@Test public void expiredCacheHit() throws Exception { Cache.Entry entry = CacheTestUtils.makeRandomCacheEntry(null, true, true); mCache.setEntryToReturn(entry); mCacheQueue.add(mRequest); mCacheQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mDelivery.wasEitherResponseCalled()); assertTrue(mNetworkQueue.size() > 0); Request request = mNetworkQueue.take(); assertSame(entry, request.getCacheEntry()); } }
@Test public void exceptionPostsError() throws Exception { mNetwork.setNumExceptionsToThrow(MockNetwork.ALWAYS_THROW_EXCEPTIONS); mNetworkQueue.add(mRequest); mNetworkQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mDelivery.postResponse_called); assertTrue(mDelivery.postError_called); }
@Before public void setUp() throws Exception { mDelivery = new MockResponseDelivery(); mNetworkQueue = new WaitableQueue(); mNetwork = new MockNetwork(); mCache = new MockCache(); mRequest = new MockRequest(); mDispatcher = new NetworkDispatcher(mNetworkQueue, mNetwork, mCache, mDelivery); mDispatcher.start(); }
@Override public Request<?> take() throws InterruptedException { Request<?> item = super.take(); if (item == mStopRequest) { mStopEvent.release(); return take(); } return item; }
public void waitUntilEmpty(long timeoutMillis) throws TimeoutException, InterruptedException { add(mStopRequest); if (!mStopEvent.tryAcquire(timeoutMillis, TimeUnit.MILLISECONDS)) { throw new TimeoutException(); } }
@Test public void softExpiredCacheHit() throws Exception { Cache.Entry entry = CacheTestUtils.makeRandomCacheEntry(null, false, true); mCache.setEntryToReturn(entry); mCacheQueue.add(mRequest); mCacheQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertTrue(mDelivery.postResponse_called); assertFalse(mDelivery.postError_called); assertTrue(mNetworkQueue.size() > 0); Request request = mNetworkQueue.take(); assertSame(entry, request.getCacheEntry()); }
@Test public void cancelledRequest() throws Exception { mRequest.cancel(); mCacheQueue.add(mRequest); mCacheQueue.waitUntilEmpty(TIMEOUT_MILLIS); assertFalse(mCache.getCalled); assertFalse(mDelivery.wasEitherResponseCalled()); }