@SmallTest @Feature({"Cronet"}) public void testSimpleGet() throws Exception { String url = NativeTestServer.getEchoMethodURL(); TestUrlRequestCallback callback = new TestUrlRequestCallback(); callback.setAutoAdvance(false); UrlRequest.Builder builder = new UrlRequest.Builder(url, callback, callback.getExecutor(), mTestFramework.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("Status is :" + statusListener1.mStatus, statusListener1.mStatus >= Status.IDLE); assertTrue( "Status is :" + statusListener1.mStatus, statusListener1.mStatus <= Status.READING_RESPONSE); callback.waitForNextStep(); assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); callback.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); callback.waitForNextStep(); assertEquals(ResponseStep.ON_READ_COMPLETED, callback.mResponseStep); callback.startNextRead(urlRequest); callback.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, callback.mResponseInfo.getHttpStatusCode()); assertEquals("GET", callback.mResponseAsString); }