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

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java

Issue 558333007: Setup initial mock url request job tests for Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 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/cronet_test_apk/MockUrlRequestJobTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8298b35bac3b8c50368e91249951f27d894e6094
--- /dev/null
+++ b/components/cronet/android/test/javatests/src/org/chromium/cronet_test_apk/MockUrlRequestJobTest.java
@@ -0,0 +1,131 @@
+// 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 android.util.Log;
+
+import org.chromium.base.JNINamespace;
+import org.chromium.base.test.util.Feature;
+import org.chromium.net.HttpUrlRequest;
+import org.chromium.net.HttpUrlRequestListener;
+
+import java.util.HashMap;
+
+// Tests that use mock URLRequestJobs to simulate URL requests.
+@JNINamespace("cronet")
+public class MockUrlRequestJobTest extends CronetTestBase {
+ private static final String TAG = "MockURLRequestJobTest";
+ 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 MockHttpUrlRequestListener implements HttpUrlRequestListener {
+ ConditionVariable mComplete = new ConditionVariable();
+ public int mHttpStatusCode = 0;
+ public String mUrl;
+ public byte[] mResponseAsBytes;
+
+ public MockHttpUrlRequestListener() {
+ }
+
+ @Override
+ public void onResponseStarted(HttpUrlRequest request) {
+ Log.i(TAG, "****** Response Started, content length is " +
+ request.getContentLength());
+ Log.i(TAG, "*** Headers Are *** " + request.getAllHeaders());
+ mHttpStatusCode = request.getHttpStatusCode();
+ }
+
+ public void blockForComplete() {
+ mComplete.block();
+ }
+
+ @Override
+ public void onRequestComplete(HttpUrlRequest request) {
+ mUrl = request.getUrl();
+ mResponseAsBytes = request.getResponseAsBytes();
+ mComplete.open();
+ Log.i(TAG, "****** Request Complete, status code is " +
+ request.getHttpStatusCode());
+ }
+ }
+
+ // Helper function to create a HttpUrlRequest with the specified url.
+ private MockHttpUrlRequestListener createUrlRequestAndWaitForComplete(
+ String url) {
+ CronetTestActivity activity = launchCronetTestApp();
+ assertNotNull(activity);
+ // AddUrlInterceptors() after native application context is initialized.
+ nativeAddUrlInterceptors();
+
+ HashMap<String, String> headers = new HashMap<String, String>();
+ MockHttpUrlRequestListener listener = new MockHttpUrlRequestListener();
+
+ HttpUrlRequest request = activity.mChromiumRequestFactory.createRequest(
+ url,
+ HttpUrlRequest.REQUEST_PRIORITY_MEDIUM,
+ headers,
+ listener);
+ request.start();
+ listener.blockForComplete();
+ return listener;
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testSuccessURLRequest() throws Exception {
+ MockHttpUrlRequestListener listener =
+ createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_SUCCESS_URL);
+ assertEquals(MOCK_CRONET_TEST_SUCCESS_URL, listener.mUrl);
+ assertEquals(200, listener.mHttpStatusCode);
+ assertEquals("this is a text file\n",
+ new String(listener.mResponseAsBytes));
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testRedirectURLRequest() throws Exception {
+ MockHttpUrlRequestListener listener =
+ createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_REDIRECT_URL);
+
+ // Currently Cronet does not expose the url after redirect.
+ assertEquals(MOCK_CRONET_TEST_REDIRECT_URL, listener.mUrl);
+ assertEquals(200, listener.mHttpStatusCode);
+ // Expect that the request is redirected to success.txt.
+ assertEquals("this is a text file\n",
+ new String(listener.mResponseAsBytes));
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testNotFoundURLRequest() throws Exception {
+ MockHttpUrlRequestListener listener =
+ createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_NOTFOUND_URL);
+ assertEquals(MOCK_CRONET_TEST_NOTFOUND_URL, listener.mUrl);
+ assertEquals(404, listener.mHttpStatusCode);
+ 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(listener.mResponseAsBytes));
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testFailedURLRequest() throws Exception {
+ MockHttpUrlRequestListener listener =
+ createUrlRequestAndWaitForComplete(MOCK_CRONET_TEST_FAILED_URL);
+ assertEquals(MOCK_CRONET_TEST_FAILED_URL, listener.mUrl);
+ assertEquals(0, listener.mHttpStatusCode);
+ }
+
+ private native void nativeAddUrlInterceptors();
+}
« no previous file with comments | « components/cronet/android/test/cronet_test_jni.cc ('k') | components/cronet/android/test/mock_url_request_job_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698