Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/net/ChromiumUrlRequestTest.java

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Javadoc + rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)));
- }
- }
-}

Powered by Google App Engine
This is Rietveld 408576698