Index: components/cronet/android/test/javatests/src/org/chromium/net/UploadTest.java |
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/UploadTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/UploadTest.java |
deleted file mode 100644 |
index 1cd856f381a844f9f12946ba22526290fe46fc29..0000000000000000000000000000000000000000 |
--- a/components/cronet/android/test/javatests/src/org/chromium/net/UploadTest.java |
+++ /dev/null |
@@ -1,349 +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.SmallTest; |
- |
-import org.chromium.base.test.util.Feature; |
-import org.chromium.net.impl.ChromiumUrlRequest; |
- |
-import java.io.ByteArrayInputStream; |
-import java.io.IOException; |
-import java.io.InputStream; |
-import java.nio.ByteBuffer; |
-import java.nio.channels.Channels; |
-import java.nio.channels.ReadableByteChannel; |
-import java.util.HashMap; |
-import java.util.concurrent.Executors; |
- |
-/** |
- * Test fixture to test upload APIs. Uses an in-process test server. |
- */ |
-@SuppressWarnings("deprecation") |
-public class UploadTest extends CronetTestBase { |
- private static final String UPLOAD_DATA = "Nifty upload data!"; |
- private static final String UPLOAD_CHANNEL_DATA = "Upload channel data"; |
- |
- private CronetTestFramework mTestFramework; |
- |
- @Override |
- protected void setUp() throws Exception { |
- super.setUp(); |
- mTestFramework = startCronetTestFrameworkForLegacyApi(null); |
- assertNotNull(mTestFramework); |
- assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
- } |
- |
- private HttpUrlRequest createRequest( |
- String url, HttpUrlRequestListener listener) { |
- HashMap<String, String> headers = new HashMap<String, String>(); |
- return mTestFramework.mRequestFactory.createRequest( |
- url, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listener); |
- } |
- |
- /** |
- * Sets request to have an upload channel containing the given data. |
- * uploadDataLength should generally be uploadData.length(), unless a test |
- * needs to get a read error. |
- */ |
- private void setUploadChannel(HttpUrlRequest request, |
- String contentType, |
- String uploadData, |
- int uploadDataLength) { |
- InputStream uploadDataStream = new ByteArrayInputStream( |
- uploadData.getBytes()); |
- ReadableByteChannel uploadDataChannel = |
- Channels.newChannel(uploadDataStream); |
- request.setUploadChannel( |
- contentType, uploadDataChannel, uploadDataLength); |
- } |
- |
- /** |
- * Tests uploading an in-memory string. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadData() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoBodyURL(), listener); |
- request.setUploadData("text/plain", UPLOAD_DATA.getBytes("UTF8")); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(UPLOAD_DATA, listener.mResponseAsString); |
- } |
- |
- /** |
- * Tests uploading an in-memory string with a redirect that preserves the |
- * POST body. This makes sure the body is correctly sent again. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadDataWithRedirect() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getRedirectToEchoBody(), listener); |
- request.setUploadData("text/plain", UPLOAD_DATA.getBytes("UTF8")); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(UPLOAD_DATA, listener.mResponseAsString); |
- } |
- |
- /** |
- * Tests Content-Type can be set when uploading an in-memory string. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadDataContentType() throws Exception { |
- String contentTypes[] = {"text/plain", "chicken/spicy"}; |
- for (String contentType : contentTypes) { |
- TestHttpUrlRequestListener listener = |
- new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoHeaderURL("Content-Type"), |
- listener); |
- request.setUploadData(contentType, UPLOAD_DATA.getBytes("UTF8")); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(contentType, listener.mResponseAsString); |
- } |
- } |
- |
- /** |
- * Tests the default method when uploading. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testDefaultUploadMethod() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoMethodURL(), listener); |
- request.setUploadData("text/plain", UPLOAD_DATA.getBytes("UTF8")); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals("POST", listener.mResponseAsString); |
- } |
- |
- /** |
- * Tests methods can be set when uploading. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadMethods() throws Exception { |
- String uploadMethods[] = {"POST", "PUT"}; |
- for (String uploadMethod : uploadMethods) { |
- TestHttpUrlRequestListener listener = |
- new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoMethodURL(), listener); |
- request.setHttpMethod(uploadMethod); |
- request.setUploadData("text/plain", UPLOAD_DATA.getBytes("UTF8")); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(uploadMethod, listener.mResponseAsString); |
- } |
- } |
- |
- /** |
- * Tests uploading from a channel. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadChannel() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoBodyURL(), listener); |
- setUploadChannel(request, "text/plain", UPLOAD_CHANNEL_DATA, |
- UPLOAD_CHANNEL_DATA.length()); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(UPLOAD_CHANNEL_DATA, listener.mResponseAsString); |
- } |
- |
- /** |
- * Tests uploading from a channel in the case a redirect preserves the post |
- * body. Since channels can't be rewound, the request fails when we try to |
- * rewind it to send the second request. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadChannelWithRedirect() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getRedirectToEchoBody(), listener); |
- setUploadChannel(request, "text/plain", UPLOAD_CHANNEL_DATA, |
- UPLOAD_CHANNEL_DATA.length()); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(0, listener.mHttpStatusCode); |
- assertEquals( |
- "System error: net::ERR_UPLOAD_STREAM_REWIND_NOT_SUPPORTED(-25)", |
- listener.mException.getMessage()); |
- } |
- |
- /** |
- * Tests uploading from a channel when there's a read error. The body |
- * should be 0-padded. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadChannelWithReadError() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoBodyURL(), listener); |
- setUploadChannel(request, "text/plain", UPLOAD_CHANNEL_DATA, |
- UPLOAD_CHANNEL_DATA.length() + 2); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(0, listener.mHttpStatusCode); |
- assertNull(listener.mResponseAsString); |
- } |
- |
- /** |
- * Tests Content-Type can be set when uploading from a channel. |
- */ |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testUploadChannelContentType() throws Exception { |
- String contentTypes[] = {"text/plain", "chicken/spicy"}; |
- for (String contentType : contentTypes) { |
- TestHttpUrlRequestListener listener = |
- new TestHttpUrlRequestListener(); |
- HttpUrlRequest request = createRequest( |
- NativeTestServer.getEchoHeaderURL("Content-Type"), |
- listener); |
- setUploadChannel(request, contentType, UPLOAD_CHANNEL_DATA, |
- UPLOAD_CHANNEL_DATA.length()); |
- request.start(); |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(contentType, listener.mResponseAsString); |
- } |
- } |
- |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testAppendChunkRaceWithCancel() throws Exception { |
- ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024); |
- byteBuffer.put(UPLOAD_DATA.getBytes()); |
- byteBuffer.position(0); |
- |
- // Try to recreate race described in crbug.com/434855 when request |
- // is canceled from another thread while adding chunks to upload. |
- for (int test = 0; test < 100; ++test) { |
- TestHttpUrlRequestListener listener = |
- new TestHttpUrlRequestListener(); |
- final ChromiumUrlRequest request = |
- (ChromiumUrlRequest) createRequest("http://127.0.0.1:8000", |
- listener); |
- request.setChunkedUpload("dangerous/crocodile"); |
- request.start(); |
- Runnable cancelTask = new Runnable() { |
- public void run() { |
- request.cancel(); |
- } |
- }; |
- Executors.newCachedThreadPool().execute(cancelTask); |
- try { |
- request.appendChunk(byteBuffer, false); |
- request.appendChunk(byteBuffer, false); |
- request.appendChunk(byteBuffer, false); |
- request.appendChunk(byteBuffer, true); |
- // IOException may be thrown if appendChunk detects that request |
- // is already destroyed. |
- } catch (IOException e) { |
- assertEquals("Native peer destroyed.", e.getMessage()); |
- } |
- listener.blockForComplete(); |
- } |
- } |
- |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testAppendChunkPreAndPost() throws Exception { |
- ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024); |
- byteBuffer.put(UPLOAD_DATA.getBytes()); |
- byteBuffer.position(0); |
- |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- ChromiumUrlRequest request = (ChromiumUrlRequest) createRequest( |
- NativeTestServer.getEchoBodyURL(), listener); |
- request.setChunkedUpload("dangerous/crocodile"); |
- try { |
- request.appendChunk(byteBuffer, false); |
- fail("Exception not thrown."); |
- } catch (IllegalStateException e) { |
- assertEquals("Request not yet started.", e.getMessage()); |
- } |
- request.start(); |
- request.appendChunk(byteBuffer, true); |
- listener.blockForComplete(); |
- try { |
- request.appendChunk(byteBuffer, true); |
- fail("Exception not thrown."); |
- } catch (IOException e) { |
- assertEquals("Native peer destroyed.", e.getMessage()); |
- } |
- } |
- |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testAppendChunkEmptyChunk() throws Exception { |
- ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024); |
- byteBuffer.put(UPLOAD_DATA.getBytes()); |
- byteBuffer.flip(); |
- |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- ChromiumUrlRequest request = (ChromiumUrlRequest) createRequest( |
- NativeTestServer.getEchoBodyURL(), listener); |
- request.setChunkedUpload("dangerous/crocodile"); |
- request.start(); |
- |
- // Upload one non-empty followed by one empty chunk. |
- request.appendChunk(byteBuffer, false); |
- byteBuffer.position(0); |
- byteBuffer.limit(0); |
- request.appendChunk(byteBuffer, true); |
- |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals(UPLOAD_DATA, listener.mResponseAsString); |
- } |
- |
- @SmallTest |
- @Feature({"Cronet"}) |
- public void testAppendChunkEmptyBody() throws Exception { |
- TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); |
- ChromiumUrlRequest request = (ChromiumUrlRequest) createRequest( |
- NativeTestServer.getEchoBodyURL(), listener); |
- request.setChunkedUpload("dangerous/crocodile"); |
- request.start(); |
- |
- // Upload a single empty chunk. |
- ByteBuffer byteBuffer = ByteBuffer.allocateDirect(0); |
- request.appendChunk(byteBuffer, true); |
- |
- listener.blockForComplete(); |
- |
- assertEquals(200, listener.mHttpStatusCode); |
- assertEquals("", listener.mResponseAsString); |
- } |
-} |