| Index: components/cronet/android/test/javatests/src/org/chromium/net/ChromiumUrlRequestTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/ChromiumUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/ChromiumUrlRequestTest.java
|
| deleted file mode 100644
|
| index 2944da074c42c8362d7c835847c4d0144768ae12..0000000000000000000000000000000000000000
|
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/ChromiumUrlRequestTest.java
|
| +++ /dev/null
|
| @@ -1,304 +0,0 @@
|
| -// 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.net;
|
| -
|
| -import android.test.suitebuilder.annotation.LargeTest;
|
| -import android.test.suitebuilder.annotation.SmallTest;
|
| -
|
| -import org.chromium.base.test.util.Feature;
|
| -import org.chromium.net.test.FailurePhase;
|
| -
|
| -import java.io.IOException;
|
| -import java.nio.ByteBuffer;
|
| -import java.util.HashMap;
|
| -import java.util.List;
|
| -import java.util.concurrent.Executors;
|
| -
|
| -/**
|
| - * Tests making requests using {@link ChromiumUrlRequest}.
|
| - */
|
| -@SuppressWarnings("deprecation")
|
| -public class ChromiumUrlRequestTest extends CronetTestBase {
|
| - private CronetTestFramework mTestFramework;
|
| - private TestHttpUrlRequestListener mListener;
|
| - private HttpUrlRequest mRequest;
|
| -
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| - mTestFramework = startCronetTestFrameworkForLegacyApi(null);
|
| - assertTrue(NativeTestServer.startNativeTestServer(getContext()));
|
| - MockUrlRequestJobFactory.setUp();
|
| - }
|
| -
|
| - @Override
|
| - protected void tearDown() throws Exception {
|
| - NativeTestServer.shutdownNativeTestServer();
|
| - super.tearDown();
|
| - }
|
| -
|
| - // Helper function to create a HttpUrlRequest with the specified url.
|
| - private void createRequestAndWaitForComplete(
|
| - String url, boolean disableRedirects) {
|
| - HashMap<String, String> headers = new HashMap<String, String>();
|
| - mListener = new TestHttpUrlRequestListener();
|
| - mRequest = mTestFramework.mRequestFactory.createRequest(
|
| - url, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, mListener);
|
| - if (disableRedirects) {
|
| - mRequest.disableRedirects();
|
| - }
|
| - mRequest.start();
|
| - mListener.blockForComplete();
|
| - }
|
| -
|
| - /**
|
| - * Helper method to check that we are not calling methods on the native
|
| - * adapter after it has been destroyed.
|
| - */
|
| - private static void checkAfterAdapterDestroyed(HttpUrlRequest request) {
|
| - try {
|
| - request.getAllHeaders();
|
| - fail();
|
| - } catch (IllegalStateException e) {
|
| - assertEquals("Adapter has been destroyed", e.getMessage());
|
| - }
|
| - try {
|
| - request.getHeader("foo");
|
| - fail();
|
| - } catch (IllegalStateException e) {
|
| - assertEquals("Adapter has been destroyed", e.getMessage());
|
| - }
|
| - try {
|
| - request.getNegotiatedProtocol();
|
| - fail();
|
| - } catch (IllegalStateException e) {
|
| - assertEquals("Adapter has been destroyed", e.getMessage());
|
| - }
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - public void testSuccessURLRequest() throws Exception {
|
| - createRequestAndWaitForComplete(
|
| - NativeTestServer.getSuccessURL(), false);
|
| - assertEquals(NativeTestServer.getSuccessURL(), mListener.mUrl);
|
| - assertEquals(200, mListener.mHttpStatusCode);
|
| - assertEquals("OK", mListener.mHttpStatusText);
|
| - assertEquals("this is a text file\n",
|
| - new String(mListener.mResponseAsBytes));
|
| - // Test that ChromiumUrlRequest caches information which is available
|
| - // after the native request adapter has been destroyed.
|
| - assertEquals(200, mRequest.getHttpStatusCode());
|
| - assertEquals("OK", mRequest.getHttpStatusText());
|
| - assertNull(mRequest.getException());
|
| - checkAfterAdapterDestroyed(mRequest);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - public void testRedirectURLRequest() throws Exception {
|
| - createRequestAndWaitForComplete(
|
| - NativeTestServer.getRedirectURL(), false);
|
| - // ChromiumUrlRequest does not expose the url after redirect.
|
| - assertEquals(NativeTestServer.getRedirectURL(), mListener.mUrl);
|
| - assertEquals(200, mListener.mHttpStatusCode);
|
| - assertEquals("OK", mListener.mHttpStatusText);
|
| - // Expect that the request is redirected to success.txt.
|
| - assertEquals("this is a text file\n",
|
| - new String(mListener.mResponseAsBytes));
|
| - // Test that ChromiumUrlRequest caches information which is available
|
| - // after the native request adapter has been destroyed.
|
| - assertEquals(200, mRequest.getHttpStatusCode());
|
| - assertEquals("OK", mRequest.getHttpStatusText());
|
| - assertNull(mRequest.getException());
|
| - checkAfterAdapterDestroyed(mRequest);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - public void testNotFoundURLRequest() throws Exception {
|
| - createRequestAndWaitForComplete(
|
| - NativeTestServer.getNotFoundURL(), false);
|
| - assertEquals(NativeTestServer.getNotFoundURL(), mListener.mUrl);
|
| - assertEquals(404, mListener.mHttpStatusCode);
|
| - assertEquals("Not Found", mListener.mHttpStatusText);
|
| - assertEquals(
|
| - "<!DOCTYPE html>\n<html>\n<head>\n<title>Not found</title>\n"
|
| - + "<p>Test page loaded.</p>\n</head>\n</html>\n",
|
| - new String(mListener.mResponseAsBytes));
|
| - // Test that ChromiumUrlRequest caches information which is available
|
| - // after the native request adapter has been destroyed.
|
| - assertEquals(404, mRequest.getHttpStatusCode());
|
| - assertEquals("Not Found", mRequest.getHttpStatusText());
|
| - assertNull(mRequest.getException());
|
| - checkAfterAdapterDestroyed(mRequest);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - public void testFailedURLRequest() throws Exception {
|
| - // -2 is the net error code for FAILED. See net_error_list.h.
|
| - int errorFailed = -2;
|
| - String failedUrl = MockUrlRequestJobFactory.getMockUrlWithFailure(
|
| - FailurePhase.START, errorFailed);
|
| - createRequestAndWaitForComplete(failedUrl, false);
|
| - assertEquals(failedUrl, mListener.mUrl);
|
| - assertEquals("", mListener.mHttpStatusText);
|
| - assertEquals(0, mListener.mHttpStatusCode);
|
| - // Test that ChromiumUrlRequest caches information which is available
|
| - // after the native request adapter has been destroyed.
|
| - assertEquals(0, mRequest.getHttpStatusCode());
|
| - assertEquals("", mRequest.getHttpStatusText());
|
| - assertEquals("System error: net::ERR_FAILED(-2)",
|
| - mRequest.getException().getMessage());
|
| - checkAfterAdapterDestroyed(mRequest);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - // Test that redirect can be disabled for a request.
|
| - public void testDisableRedirects() throws Exception {
|
| - createRequestAndWaitForComplete(
|
| - NativeTestServer.getRedirectURL(), true);
|
| - // Currently Cronet does not expose the url after redirect.
|
| - assertEquals(NativeTestServer.getRedirectURL(), mListener.mUrl);
|
| - assertEquals(302, mListener.mHttpStatusCode);
|
| - // url_request_adapter.cc does not populate status text when redirects are disabled.
|
| - assertEquals("", mListener.mHttpStatusText);
|
| - // Expect that the request is not redirected to success.txt.
|
| - assertNotNull(mListener.mResponseHeaders);
|
| - List<String> entry = mListener.mResponseHeaders.get("redirect-header");
|
| - assertEquals(1, entry.size());
|
| - assertEquals("header-value", entry.get(0));
|
| - List<String> location = mListener.mResponseHeaders.get("Location");
|
| - assertEquals(1, location.size());
|
| - assertEquals("/success.txt", location.get(0));
|
| - assertEquals("Request failed because there were too many redirects or "
|
| - + "redirects have been disabled",
|
| - mListener.mException.getMessage());
|
| - // Test that ChromiumUrlRequest caches information which is available
|
| - // after the native request adapter has been destroyed.
|
| - assertEquals(302, mRequest.getHttpStatusCode());
|
| - // url_request_adapter.cc does not populate status text when redirects are disabled.
|
| - assertEquals("", mRequest.getHttpStatusText());
|
| - assertEquals("Request failed because there were too many redirects "
|
| - + "or redirects have been disabled",
|
| - mRequest.getException().getMessage());
|
| - checkAfterAdapterDestroyed(mRequest);
|
| - }
|
| -
|
| - /**
|
| - * TestByteChannel is used for making sure write is not called after the
|
| - * channel has been closed. Can synchronously cancel a request when write is
|
| - * called.
|
| - */
|
| - static class TestByteChannel extends ChunkedWritableByteChannel {
|
| - HttpUrlRequest mRequestToCancelOnWrite;
|
| -
|
| - @Override
|
| - public int write(ByteBuffer byteBuffer) throws IOException {
|
| - assertTrue(isOpen());
|
| - if (mRequestToCancelOnWrite != null) {
|
| - assertFalse(mRequestToCancelOnWrite.isCanceled());
|
| - mRequestToCancelOnWrite.cancel();
|
| - mRequestToCancelOnWrite = null;
|
| - }
|
| - return super.write(byteBuffer);
|
| - }
|
| -
|
| - @Override
|
| - public void close() {
|
| - assertTrue(isOpen());
|
| - super.close();
|
| - }
|
| -
|
| - /**
|
| - * Set request that will be synchronously canceled when write is called.
|
| - */
|
| - public void setRequestToCancelOnWrite(HttpUrlRequest request) {
|
| - mRequestToCancelOnWrite = request;
|
| - }
|
| - }
|
| -
|
| - @LargeTest
|
| - @Feature({"Cronet"})
|
| - public void testNoWriteAfterCancelOnAnotherThread() throws Exception {
|
| - // This test verifies that WritableByteChannel.write is not called after
|
| - // WritableByteChannel.close if request is canceled from another
|
| - // thread.
|
| - for (int i = 0; i < 100; ++i) {
|
| - HashMap<String, String> headers = new HashMap<String, String>();
|
| - TestByteChannel channel = new TestByteChannel();
|
| - TestHttpUrlRequestListener listener =
|
| - new TestHttpUrlRequestListener();
|
| -
|
| - // Create request.
|
| - final HttpUrlRequest request =
|
| - mTestFramework.mRequestFactory.createRequest(NativeTestServer.getSuccessURL(),
|
| - HttpUrlRequest.REQUEST_PRIORITY_LOW, headers, channel, listener);
|
| - request.start();
|
| - listener.blockForStart();
|
| - Runnable cancelTask = new Runnable() {
|
| - public void run() {
|
| - request.cancel();
|
| - }
|
| - };
|
| - Executors.newCachedThreadPool().execute(cancelTask);
|
| - listener.blockForComplete();
|
| - assertFalse(channel.isOpen());
|
| - // Since getAllHeaders and other methods in
|
| - // checkAfterAdapterDestroyed() acquire mLock, so this will happen
|
| - // after the adapter is destroyed.
|
| - checkAfterAdapterDestroyed(request);
|
| - }
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - public void testNoWriteAfterSyncCancel() throws Exception {
|
| - HashMap<String, String> headers = new HashMap<String, String>();
|
| - TestByteChannel channel = new TestByteChannel();
|
| - TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener();
|
| -
|
| - String data = "MyBigFunkyData";
|
| - int repeatCount = 10000;
|
| - String mockUrl = MockUrlRequestJobFactory.getMockUrlForData(data,
|
| - repeatCount);
|
| -
|
| - // Create request.
|
| - final HttpUrlRequest request = mTestFramework.mRequestFactory.createRequest(
|
| - mockUrl, HttpUrlRequest.REQUEST_PRIORITY_LOW, headers, channel, listener);
|
| - // Channel will cancel the request from the network thread during the
|
| - // first write.
|
| - channel.setRequestToCancelOnWrite(request);
|
| - request.start();
|
| - listener.blockForComplete();
|
| - assertTrue(request.isCanceled());
|
| - assertFalse(channel.isOpen());
|
| - // Test that ChromiumUrlRequest caches information which is available
|
| - // after the native request adapter has been destroyed.
|
| - // Since the request is canceled after onResponseStarted, status code
|
| - // should be 200.
|
| - assertEquals(200, request.getHttpStatusCode());
|
| - assertEquals("OK", request.getHttpStatusText());
|
| - checkAfterAdapterDestroyed(request);
|
| - }
|
| -
|
| - @SmallTest
|
| - @Feature({"Cronet"})
|
| - public void testBigDataSyncReadRequest() throws Exception {
|
| - String data = "MyBigFunkyData";
|
| - int dataLength = data.length();
|
| - int repeatCount = 100000;
|
| - String mockUrl = MockUrlRequestJobFactory.getMockUrlForData(data,
|
| - repeatCount);
|
| - createRequestAndWaitForComplete(mockUrl, false);
|
| - assertEquals(mockUrl, mListener.mUrl);
|
| - for (int i = 0; i < repeatCount; ++i) {
|
| - assertEquals(data, mListener.mResponseAsString.substring(
|
| - dataLength * i, dataLength * (i + 1)));
|
| - }
|
| - }
|
| -}
|
|
|