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

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java

Issue 966743003: [Cronet] Implement getOutputStream in CronetHttpURLConnection (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@chunked_support
Patch Set: Address Matt's comments Created 5 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net.urlconnection; 5 package org.chromium.net.urlconnection;
6 6
7 import android.os.Build; 7 import android.os.Build;
8 import android.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 9
10 import org.chromium.base.annotations.SuppressFBWarnings; 10 import org.chromium.base.annotations.SuppressFBWarnings;
11 import org.chromium.base.test.util.Feature; 11 import org.chromium.base.test.util.Feature;
12 import org.chromium.net.CronetTestActivity; 12 import org.chromium.net.CronetTestActivity;
13 import org.chromium.net.CronetTestBase; 13 import org.chromium.net.CronetTestBase;
14 import org.chromium.net.MockUrlRequestJobFactory; 14 import org.chromium.net.MockUrlRequestJobFactory;
15 import org.chromium.net.NativeTestServer; 15 import org.chromium.net.NativeTestServer;
16 import org.chromium.net.UrlRequestContextConfig; 16 import org.chromium.net.UrlRequestContextConfig;
17 import org.chromium.net.UrlRequestException; 17 import org.chromium.net.UrlRequestException;
18 18
19 import java.io.ByteArrayOutputStream; 19 import java.io.ByteArrayOutputStream;
20 import java.io.FileNotFoundException; 20 import java.io.FileNotFoundException;
21 import java.io.IOException; 21 import java.io.IOException;
22 import java.io.InputStream; 22 import java.io.InputStream;
23 import java.io.OutputStream;
24 import java.lang.reflect.Method;
23 import java.net.HttpURLConnection; 25 import java.net.HttpURLConnection;
24 import java.net.MalformedURLException; 26 import java.net.MalformedURLException;
25 import java.net.URL; 27 import java.net.URL;
26 import java.util.ArrayList; 28 import java.util.ArrayList;
27 import java.util.Arrays; 29 import java.util.Arrays;
28 import java.util.List; 30 import java.util.List;
29 import java.util.Map; 31 import java.util.Map;
30 import java.util.regex.Matcher; 32 import java.util.regex.Matcher;
31 import java.util.regex.Pattern; 33 import java.util.regex.Pattern;
32 34
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 public void testBasicGet() throws Exception { 70 public void testBasicGet() throws Exception {
69 URL url = new URL(NativeTestServer.getEchoMethodURL()); 71 URL url = new URL(NativeTestServer.getEchoMethodURL());
70 HttpURLConnection urlConnection = 72 HttpURLConnection urlConnection =
71 (HttpURLConnection) url.openConnection(); 73 (HttpURLConnection) url.openConnection();
72 assertEquals(200, urlConnection.getResponseCode()); 74 assertEquals(200, urlConnection.getResponseCode());
73 assertEquals("OK", urlConnection.getResponseMessage()); 75 assertEquals("OK", urlConnection.getResponseMessage());
74 assertEquals("GET", getResponseAsString(urlConnection)); 76 assertEquals("GET", getResponseAsString(urlConnection));
75 urlConnection.disconnect(); 77 urlConnection.disconnect();
76 } 78 }
77 79
80 /**
81 * Tests that using reflection to find {@code fixedContentLengthLong} works.
82 */
83 @SmallTest
84 @Feature({"Cronet"})
85 @OnlyRunCronetHttpURLConnection
86 public void testSetFixedLengthStreamingModeLong() throws Exception {
87 URL url = new URL(NativeTestServer.getEchoBodyURL());
88 HttpURLConnection connection =
89 (HttpURLConnection) url.openConnection();
90 connection.setDoOutput(true);
91 connection.setRequestMethod("POST");
92 if (Build.VERSION.SDK_INT >= 19) {
93 String dataString = "some very important data";
94 byte[] data = dataString.getBytes();
95 Class<?> c = connection.getClass();
96 Method method = c.getMethod("setFixedLengthStreamingMode",
97 new Class[] {long.class});
98 method.invoke(connection, (long) data.length);
99 OutputStream out = connection.getOutputStream();
100 out.write(data);
101 assertEquals(200, connection.getResponseCode());
102 assertEquals("OK", connection.getResponseMessage());
103 assertEquals(dataString, getResponseAsString(connection));
104 connection.disconnect();
105 }
106 }
107
108 @SmallTest
109 @Feature({"Cronet"})
110 @OnlyRunCronetHttpURLConnection
111 // TODO(xunjieli): Change the test after chunked support is added.
112 public void testPostChunked() throws Exception {
113 URL url = new URL(NativeTestServer.getEchoBodyURL());
114 HttpURLConnection connection =
115 (HttpURLConnection) url.openConnection();
116 connection.setDoOutput(true);
117 connection.setRequestMethod("POST");
118 try {
119 connection.setChunkedStreamingMode(0);
120 } catch (UnsupportedOperationException e) {
121 assertEquals("Chunked mode not supported yet", e.getMessage());
122 }
123 }
124
78 @SmallTest 125 @SmallTest
79 @Feature({"Cronet"}) 126 @Feature({"Cronet"})
80 @CompareDefaultWithCronet 127 @CompareDefaultWithCronet
81 public void testNotFoundURLRequest() throws Exception { 128 public void testNotFoundURLRequest() throws Exception {
82 URL url = new URL(NativeTestServer.getFileURL("/notfound.html")); 129 URL url = new URL(NativeTestServer.getFileURL("/notfound.html"));
83 HttpURLConnection urlConnection = 130 HttpURLConnection urlConnection =
84 (HttpURLConnection) url.openConnection(); 131 (HttpURLConnection) url.openConnection();
85 assertEquals(404, urlConnection.getResponseCode()); 132 assertEquals(404, urlConnection.getResponseCode());
86 assertEquals("Not Found", urlConnection.getResponseMessage()); 133 assertEquals("Not Found", urlConnection.getResponseMessage());
87 try { 134 try {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 InputStream in = urlConnection.getInputStream(); 266 InputStream in = urlConnection.getInputStream();
220 fail(); 267 fail();
221 } catch (Exception e) { 268 } catch (Exception e) {
222 // Ignored. 269 // Ignored.
223 } 270 }
224 } 271 }
225 272
226 @SmallTest 273 @SmallTest
227 @Feature({"Cronet"}) 274 @Feature({"Cronet"})
228 @CompareDefaultWithCronet 275 @CompareDefaultWithCronet
276 public void testMultipleDisconnect() throws Exception {
277 URL url = new URL(NativeTestServer.getEchoMethodURL());
278 HttpURLConnection urlConnection =
279 (HttpURLConnection) url.openConnection();
280 assertEquals(200, urlConnection.getResponseCode());
281 assertEquals("OK", urlConnection.getResponseMessage());
282 assertEquals("GET", getResponseAsString(urlConnection));
283 // Disconnect multiple times should be fine.
284 for (int i = 0; i < 10; i++) {
285 urlConnection.disconnect();
286 }
287 }
288
289 @SmallTest
290 @Feature({"Cronet"})
291 @CompareDefaultWithCronet
229 public void testAddRequestProperty() throws Exception { 292 public void testAddRequestProperty() throws Exception {
230 URL url = new URL(NativeTestServer.getEchoAllHeadersURL()); 293 URL url = new URL(NativeTestServer.getEchoAllHeadersURL());
231 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 294 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
232 connection.addRequestProperty("foo-header", "foo"); 295 connection.addRequestProperty("foo-header", "foo");
233 connection.addRequestProperty("bar-header", "bar"); 296 connection.addRequestProperty("bar-header", "bar");
234 297
235 // Before connection is made, check request headers are set. 298 // Before connection is made, check request headers are set.
236 Map<String, List<String>> requestHeadersMap = 299 Map<String, List<String>> requestHeadersMap =
237 connection.getRequestProperties(); 300 connection.getRequestProperties();
238 List<String> fooValues = requestHeadersMap.get("foo-header"); 301 List<String> fooValues = requestHeadersMap.get("foo-header");
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 String headerName) { 1010 String headerName) {
948 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); 1011 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n");
949 Matcher matcher = pattern.matcher(allHeaders); 1012 Matcher matcher = pattern.matcher(allHeaders);
950 List<String> headerValues = new ArrayList<String>(); 1013 List<String> headerValues = new ArrayList<String>();
951 while (matcher.find()) { 1014 while (matcher.find()) {
952 headerValues.add(matcher.group(1)); 1015 headerValues.add(matcher.group(1));
953 } 1016 }
954 return headerValues; 1017 return headerValues;
955 } 1018 }
956 } 1019 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698