| Index: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..82d0e84e93414c6a3f3a9189fdee5fb4487c7c6e
|
| --- /dev/null
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/CronetUrlRequestTest.java
|
| @@ -0,0 +1,169 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.cronet_test_apk;
|
| +
|
| +import android.os.ConditionVariable;
|
| +
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.chromium.net.ExtendedResponseInfo;
|
| +import org.chromium.net.ResponseInfo;
|
| +import org.chromium.net.UrlRequest;
|
| +import org.chromium.net.UrlRequestException;
|
| +import org.chromium.net.UrlRequestListener;
|
| +
|
| +import java.net.URL;
|
| +import java.nio.ByteBuffer;
|
| +import java.util.concurrent.ExecutorService;
|
| +import java.util.concurrent.Executors;
|
| +
|
| +/**
|
| + * Test basic functionality of UrlRequest.
|
| + */
|
| +public class CronetUrlRequestTest extends CronetTestBase {
|
| + // URL used for base tests.
|
| + private static final String TEST_URL = "http://127.0.0.1:8000";
|
| + private static final String MOCK_CRONET_TEST_SUCCESS_URL =
|
| + "http://mock.http/success.txt";
|
| + private static final String MOCK_CRONET_TEST_REDIRECT_URL =
|
| + "http://mock.http/redirect.html";
|
| + private static final String MOCK_CRONET_TEST_NOTFOUND_URL =
|
| + "http://mock.http/notfound.html";
|
| + private static final String MOCK_CRONET_TEST_FAILED_URL =
|
| + "http://mock.failed.request/-2";
|
| +
|
| + class SimpleUrlRequestListener implements UrlRequestListener {
|
| + ConditionVariable mComplete = new ConditionVariable();
|
| + public int httpResponseDataLength = 0;
|
| + public ResponseInfo responseInfo;
|
| + public UrlRequestException error;
|
| +
|
| + public SimpleUrlRequestListener() {
|
| + }
|
| +
|
| + @Override
|
| + public void onRedirect(UrlRequest request, ResponseInfo info,
|
| + URL newLocation) {
|
| + }
|
| +
|
| + @Override
|
| + public void onResponseStarted(UrlRequest request, ResponseInfo info) {
|
| + responseInfo = info;
|
| + }
|
| +
|
| + @Override
|
| + public void onDataReceived(UrlRequest request,
|
| + ResponseInfo info,
|
| + ByteBuffer byteBuffer) {
|
| + httpResponseDataLength += byteBuffer.capacity();
|
| + }
|
| +
|
| + @Override
|
| + public void onComplete(UrlRequest request, ExtendedResponseInfo info) {
|
| + mComplete.open();
|
| + }
|
| +
|
| + @Override
|
| + public void onError(UrlRequest request,
|
| + ResponseInfo info,
|
| + UrlRequestException error) {
|
| + this.error = error;
|
| + mComplete.open();
|
| + }
|
| +
|
| + public void blockForComplete() {
|
| + mComplete.block();
|
| + }
|
| +
|
| + public void resetComplete() {
|
| + mComplete.close();
|
| + }
|
| + }
|
| +
|
| + public SimpleUrlRequestListener launchAndWaitForComplete(String url)
|
| + throws Exception {
|
| + CronetTestActivity activity = launchCronetTestApp();
|
| +
|
| + // Make sure the activity was created as expected.
|
| + waitForActiveShellToBeDoneLoading();
|
| + // AddUrlInterceptors() after native application context is initialized.
|
| + MockUrlRequestJobUtil.addUrlInterceptors();
|
| +
|
| + ExecutorService executor = Executors.newFixedThreadPool(4);
|
| + SimpleUrlRequestListener listener = new SimpleUrlRequestListener();
|
| +
|
| + // Create request.
|
| + UrlRequest request = activity.mUrlRequestFactory.createRequest(
|
| + url, listener, executor);
|
| + request.start();
|
| + listener.blockForComplete();
|
| + return listener;
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testSimpleGet() throws Exception {
|
| + SimpleUrlRequestListener listener = launchAndWaitForComplete(TEST_URL);
|
| + assertEquals(200, listener.responseInfo.getHttpStatusCode());
|
| + assertTrue(listener.httpResponseDataLength != 0);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testMockSuccess() throws Exception {
|
| + SimpleUrlRequestListener listener = launchAndWaitForComplete(
|
| + MOCK_CRONET_TEST_SUCCESS_URL);
|
| + assertEquals(200, listener.responseInfo.getHttpStatusCode());
|
| + assertTrue(listener.httpResponseDataLength != 0);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testMockReadDataError() throws Exception {
|
| + SimpleUrlRequestListener listener = launchAndWaitForComplete(
|
| + MOCK_CRONET_TEST_SUCCESS_URL + "?data=-5");
|
| + assertEquals(200, listener.responseInfo.getHttpStatusCode());
|
| + assertNotNull(listener.error);
|
| + assertEquals(-2, listener.error.netError());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testMockRedirect() throws Exception {
|
| + SimpleUrlRequestListener listener = launchAndWaitForComplete(
|
| + MOCK_CRONET_TEST_REDIRECT_URL);
|
| + ResponseInfo responseInfo = listener.responseInfo;
|
| + assertEquals(200, responseInfo.getHttpStatusCode());
|
| + assertEquals(MOCK_CRONET_TEST_SUCCESS_URL,
|
| + responseInfo.getUrl());
|
| + assertEquals(2, responseInfo.getUrlChain().length);
|
| + assertEquals(MOCK_CRONET_TEST_REDIRECT_URL,
|
| + responseInfo.getUrlChain()[0]);
|
| + assertEquals(MOCK_CRONET_TEST_SUCCESS_URL,
|
| + responseInfo.getUrlChain()[1]);
|
| + assertTrue(listener.httpResponseDataLength != 0);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testMockNotFound() throws Exception {
|
| + SimpleUrlRequestListener listener = launchAndWaitForComplete(
|
| + MOCK_CRONET_TEST_NOTFOUND_URL);
|
| + assertEquals(404, listener.responseInfo.getHttpStatusCode());
|
| + assertTrue(listener.httpResponseDataLength != 0);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Cronet"})
|
| + public void testMockFailed() throws Exception {
|
| + SimpleUrlRequestListener listener = launchAndWaitForComplete(
|
| + MOCK_CRONET_TEST_FAILED_URL);
|
| + assertEquals(null, listener.responseInfo);
|
| + assertEquals(0, listener.httpResponseDataLength);
|
| + assertNotNull(listener.error);
|
| + assertEquals(-2, listener.error.netError());
|
| + }
|
| +}
|
|
|