@SmallTest @Feature({"Cronet"}) public void testShutdown() throws Exception { mActivity = launchCronetTestApp(); TestUrlRequestListener listener = new ShutdownTestUrlRequestListener(); // Block listener when response starts to verify that shutdown fails // if there are active requests. listener.setAutoAdvance(false); UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEngine); UrlRequest urlRequest = urlRequestBuilder.build(); urlRequest.start(); try { mActivity.mCronetEngine.shutdown(); fail("Should throw an exception"); } catch (Exception e) { assertEquals("Cannot shutdown with active requests.", e.getMessage()); } listener.waitForNextStep(); assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); try { mActivity.mCronetEngine.shutdown(); fail("Should throw an exception"); } catch (Exception e) { assertEquals("Cannot shutdown with active requests.", e.getMessage()); } listener.startNextRead(urlRequest); listener.waitForNextStep(); assertEquals(ResponseStep.ON_READ_COMPLETED, listener.mResponseStep); try { mActivity.mCronetEngine.shutdown(); fail("Should throw an exception"); } catch (Exception e) { assertEquals("Cannot shutdown with active requests.", e.getMessage()); } // May not have read all the data, in theory. Just enable auto-advance // and finish the request. listener.setAutoAdvance(true); listener.startNextRead(urlRequest); listener.blockForDone(); }
@SmallTest @Feature({"Cronet"}) public void testSimpleGet() throws Exception { String url = NativeTestServer.getEchoMethodURL(); TestUrlRequestListener listener = new TestUrlRequestListener(); listener.setAutoAdvance(false); UrlRequest.Builder builder = new UrlRequest.Builder(url, listener, listener.getExecutor(), mActivity.mCronetEngine); UrlRequest urlRequest = builder.build(); // Calling before request is started should give Status.INVALID, // since the native adapter is not created. TestStatusListener statusListener0 = new TestStatusListener(); urlRequest.getStatus(statusListener0); statusListener0.waitUntilOnStatusCalled(); assertTrue(statusListener0.mOnStatusCalled); assertEquals(Status.INVALID, statusListener0.mStatus); urlRequest.start(); // Should receive a valid status. TestStatusListener statusListener1 = new TestStatusListener(); urlRequest.getStatus(statusListener1); statusListener1.waitUntilOnStatusCalled(); assertTrue(statusListener1.mOnStatusCalled); assertTrue(statusListener1.mStatus >= Status.IDLE); assertTrue(statusListener1.mStatus <= Status.READING_RESPONSE); listener.waitForNextStep(); assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); listener.startNextRead(urlRequest); // Should receive a valid status. TestStatusListener statusListener2 = new TestStatusListener(); urlRequest.getStatus(statusListener2); statusListener2.waitUntilOnStatusCalled(); assertTrue(statusListener2.mOnStatusCalled); assertTrue(statusListener1.mStatus >= Status.IDLE); assertTrue(statusListener1.mStatus <= Status.READING_RESPONSE); listener.waitForNextStep(); assertEquals(ResponseStep.ON_READ_COMPLETED, listener.mResponseStep); listener.startNextRead(urlRequest); listener.blockForDone(); // Calling after request done should give Status.INVALID, since // the native adapter is destroyed. TestStatusListener statusListener3 = new TestStatusListener(); urlRequest.getStatus(statusListener3); statusListener3.waitUntilOnStatusCalled(); assertTrue(statusListener3.mOnStatusCalled); assertEquals(Status.INVALID, statusListener3.mStatus); assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); assertEquals("GET", listener.mResponseAsString); }
@SmallTest @Feature({"Cronet"}) public void testShutdownAfterCancel() throws Exception { mActivity = launchCronetTestApp(); TestUrlRequestListener listener = new TestUrlRequestListener(); // Block listener when response starts to verify that shutdown fails // if there are active requests. listener.setAutoAdvance(false); UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEngine); UrlRequest urlRequest = urlRequestBuilder.build(); urlRequest.start(); try { mActivity.mCronetEngine.shutdown(); fail("Should throw an exception"); } catch (Exception e) { assertEquals("Cannot shutdown with active requests.", e.getMessage()); } listener.waitForNextStep(); assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); urlRequest.cancel(); mActivity.mCronetEngine.shutdown(); }