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

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

Issue 1363723002: [Cronet] Create Builders, rename UrlRequestContext to CronetEngine (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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; 5 package org.chromium.net;
6 6
7 import android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 import android.util.Pair; 9 import android.util.Pair;
10 10
11 import org.chromium.base.test.util.Feature; 11 import org.chromium.base.test.util.Feature;
12 import org.chromium.net.TestUrlRequestListener.FailureType; 12 import org.chromium.net.TestUrlRequestListener.FailureType;
13 import org.chromium.net.TestUrlRequestListener.ResponseStep; 13 import org.chromium.net.TestUrlRequestListener.ResponseStep;
14 import org.chromium.net.test.FailurePhase; 14 import org.chromium.net.test.FailurePhase;
15 15
16 import java.nio.ByteBuffer; 16 import java.nio.ByteBuffer;
17 import java.util.ArrayList; 17 import java.util.ArrayList;
18 import java.util.List; 18 import java.util.List;
19 import java.util.Map; 19 import java.util.Map;
20 import java.util.concurrent.Callable;
20 import java.util.concurrent.ExecutorService; 21 import java.util.concurrent.ExecutorService;
21 import java.util.concurrent.Executors; 22 import java.util.concurrent.Executors;
23 import java.util.concurrent.Future;
22 import java.util.regex.Matcher; 24 import java.util.regex.Matcher;
23 import java.util.regex.Pattern; 25 import java.util.regex.Pattern;
24 26
25 /** 27 /**
26 * Test functionality of CronetUrlRequest. 28 * Test functionality of CronetUrlRequest.
27 */ 29 */
28 public class CronetUrlRequestTest extends CronetTestBase { 30 public class CronetUrlRequestTest extends CronetTestBase {
29 // URL used for base tests. 31 // URL used for base tests.
30 private static final String TEST_URL = "http://127.0.0.1:8000"; 32 private static final String TEST_URL = "http://127.0.0.1:8000";
31 33
32 private CronetTestActivity mActivity; 34 private CronetTestActivity mActivity;
33 35
34 @Override 36 @Override
35 protected void setUp() throws Exception { 37 protected void setUp() throws Exception {
36 super.setUp(); 38 super.setUp();
37 mActivity = launchCronetTestApp(); 39 mActivity = launchCronetTestApp();
38 assertTrue(NativeTestServer.startNativeTestServer( 40 assertTrue(NativeTestServer.startNativeTestServer(
39 getInstrumentation().getTargetContext())); 41 getInstrumentation().getTargetContext()));
40 // Add url interceptors after native application context is initialized. 42 // Add url interceptors after native application context is initialized.
41 MockUrlRequestJobFactory.setUp(); 43 MockUrlRequestJobFactory.setUp();
42 } 44 }
43 45
44 @Override 46 @Override
45 protected void tearDown() throws Exception { 47 protected void tearDown() throws Exception {
46 NativeTestServer.shutdownNativeTestServer(); 48 NativeTestServer.shutdownNativeTestServer();
47 mActivity.mUrlRequestContext.shutdown(); 49 mActivity.mCronetEngine.shutdown();
48 super.tearDown(); 50 super.tearDown();
49 } 51 }
50 52
51 private TestUrlRequestListener startAndWaitForComplete(String url) 53 private TestUrlRequestListener startAndWaitForComplete(String url)
52 throws Exception { 54 throws Exception {
53 TestUrlRequestListener listener = new TestUrlRequestListener(); 55 TestUrlRequestListener listener = new TestUrlRequestListener();
54 // Create request. 56 // Create request.
55 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 57 UrlRequest.Builder builder = new UrlRequest.Builder(url, listener, liste ner.getExecutor());
56 url, listener, listener.getExecutor()); 58 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
57 urlRequest.start();
58 listener.blockForDone(); 59 listener.blockForDone();
59 assertTrue(urlRequest.isDone()); 60 assertTrue(urlRequest.isDone());
60 return listener; 61 return listener;
61 } 62 }
62 63
63 private void checkResponseInfo(ResponseInfo responseInfo, 64 private void checkResponseInfo(ResponseInfo responseInfo,
64 String expectedUrl, int expectedHttpStatusCode, 65 String expectedUrl, int expectedHttpStatusCode,
65 String expectedHttpStatusText) { 66 String expectedHttpStatusText) {
66 assertEquals(expectedUrl, responseInfo.getUrl()); 67 assertEquals(expectedUrl, responseInfo.getUrl());
67 assertEquals(expectedUrl, responseInfo.getUrlChain()[ 68 assertEquals(expectedUrl, responseInfo.getUrlChain()[
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 * Tests a redirect by running it step-by-step. Also tests that delaying a 101 * Tests a redirect by running it step-by-step. Also tests that delaying a
101 * request works as expected. To make sure there are no unexpected pending 102 * request works as expected. To make sure there are no unexpected pending
102 * messages, does a GET between UrlRequestListener callbacks. 103 * messages, does a GET between UrlRequestListener callbacks.
103 */ 104 */
104 @SmallTest 105 @SmallTest
105 @Feature({"Cronet"}) 106 @Feature({"Cronet"})
106 public void testRedirectAsync() throws Exception { 107 public void testRedirectAsync() throws Exception {
107 // Start the request and wait to see the redirect. 108 // Start the request and wait to see the redirect.
108 TestUrlRequestListener listener = new TestUrlRequestListener(); 109 TestUrlRequestListener listener = new TestUrlRequestListener();
109 listener.setAutoAdvance(false); 110 listener.setAutoAdvance(false);
110 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 111 UrlRequest.Builder builder = new UrlRequest.Builder(
111 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 112 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r());
112 urlRequest.start(); 113 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
113 listener.waitForNextStep(); 114 listener.waitForNextStep();
114 115
115 // Check the redirect. 116 // Check the redirect.
116 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); 117 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep);
117 assertEquals(1, listener.mRedirectResponseInfoList.size()); 118 assertEquals(1, listener.mRedirectResponseInfoList.size());
118 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), 119 checkResponseInfo(listener.mRedirectResponseInfoList.get(0),
119 NativeTestServer.getRedirectURL(), 302, "Found"); 120 NativeTestServer.getRedirectURL(), 302, "Found");
120 assertEquals(1, 121 assertEquals(1,
121 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); 122 listener.mRedirectResponseInfoList.get(0).getUrlChain().length);
122 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList .get(0)); 123 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList .get(0));
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 // onFailed messages. This test relies on checks in 211 // onFailed messages. This test relies on checks in
211 // TestUrlRequestListener catching a second onFailed call. 212 // TestUrlRequestListener catching a second onFailed call.
212 testSimpleGet(); 213 testSimpleGet();
213 } 214 }
214 215
215 @SmallTest 216 @SmallTest
216 @Feature({"Cronet"}) 217 @Feature({"Cronet"})
217 public void testSetHttpMethod() throws Exception { 218 public void testSetHttpMethod() throws Exception {
218 TestUrlRequestListener listener = new TestUrlRequestListener(); 219 TestUrlRequestListener listener = new TestUrlRequestListener();
219 String methodName = "HEAD"; 220 String methodName = "HEAD";
220 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 221 UrlRequest.Builder builder = new UrlRequest.Builder(
221 NativeTestServer.getEchoMethodURL(), listener, 222 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
222 listener.getExecutor());
223 // Try to set 'null' method. 223 // Try to set 'null' method.
224 try { 224 try {
225 urlRequest.setHttpMethod(null); 225 builder.setHttpMethod(null);
226 fail("Exception not thrown"); 226 fail("Exception not thrown");
227 } catch (NullPointerException e) { 227 } catch (NullPointerException e) {
228 assertEquals("Method is required.", e.getMessage()); 228 assertEquals("Method is required.", e.getMessage());
229 } 229 }
230 230
231 urlRequest.setHttpMethod(methodName); 231 builder.setHttpMethod(methodName);
232 urlRequest.start(); 232 mActivity.mCronetEngine.executeRequest(builder);
233 try {
234 urlRequest.setHttpMethod("toolate");
235 fail("Exception not thrown");
236 } catch (IllegalStateException e) {
237 assertEquals("Request is already started.", e.getMessage());
238 }
239 listener.blockForDone(); 233 listener.blockForDone();
240 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 234 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
241 assertEquals(0, listener.mHttpResponseDataLength); 235 assertEquals(0, listener.mHttpResponseDataLength);
242 } 236 }
243 237
244 @SmallTest 238 @SmallTest
245 @Feature({"Cronet"}) 239 @Feature({"Cronet"})
246 public void testBadMethod() throws Exception { 240 public void testBadMethod() throws Exception {
247 TestUrlRequestListener listener = new TestUrlRequestListener(); 241 TestUrlRequestListener listener = new TestUrlRequestListener();
248 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 242 UrlRequest.Builder builder =
249 TEST_URL, listener, listener.getExecutor()); 243 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ));
250 try { 244 try {
251 urlRequest.setHttpMethod("bad:method!"); 245 builder.setHttpMethod("bad:method!");
252 urlRequest.start(); 246 mActivity.mCronetEngine.executeRequest(builder);
253 fail("IllegalArgumentException not thrown."); 247 fail("IllegalArgumentException not thrown.");
254 } catch (IllegalArgumentException e) { 248 } catch (IllegalArgumentException e) {
255 assertEquals("Invalid http method bad:method!", 249 assertEquals("Invalid http method bad:method!",
256 e.getMessage()); 250 e.getMessage());
257 } 251 }
258 } 252 }
259 253
260 @SmallTest 254 @SmallTest
261 @Feature({"Cronet"}) 255 @Feature({"Cronet"})
262 public void testBadHeaderName() throws Exception { 256 public void testBadHeaderName() throws Exception {
263 TestUrlRequestListener listener = new TestUrlRequestListener(); 257 TestUrlRequestListener listener = new TestUrlRequestListener();
264 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 258 UrlRequest.Builder builder =
265 TEST_URL, listener, listener.getExecutor()); 259 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ));
266 try { 260 try {
267 urlRequest.addHeader("header:name", "headervalue"); 261 builder.addHeader("header:name", "headervalue");
268 urlRequest.start(); 262 mActivity.mCronetEngine.executeRequest(builder);
269 fail("IllegalArgumentException not thrown."); 263 fail("IllegalArgumentException not thrown.");
270 } catch (IllegalArgumentException e) { 264 } catch (IllegalArgumentException e) {
271 assertEquals("Invalid header header:name=headervalue", 265 assertEquals("Invalid header header:name=headervalue",
272 e.getMessage()); 266 e.getMessage());
273 } 267 }
274 } 268 }
275 269
276 @SmallTest 270 @SmallTest
277 @Feature({"Cronet"}) 271 @Feature({"Cronet"})
278 public void testBadHeaderValue() throws Exception { 272 public void testBadHeaderValue() throws Exception {
279 TestUrlRequestListener listener = new TestUrlRequestListener(); 273 TestUrlRequestListener listener = new TestUrlRequestListener();
280 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 274 UrlRequest.Builder builder =
281 TEST_URL, listener, listener.getExecutor()); 275 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ));
282 try { 276 try {
283 urlRequest.addHeader("headername", "bad header\r\nvalue"); 277 builder.addHeader("headername", "bad header\r\nvalue");
284 urlRequest.start(); 278 mActivity.mCronetEngine.executeRequest(builder);
285 fail("IllegalArgumentException not thrown."); 279 fail("IllegalArgumentException not thrown.");
286 } catch (IllegalArgumentException e) { 280 } catch (IllegalArgumentException e) {
287 assertEquals("Invalid header headername=bad header\r\nvalue", 281 assertEquals("Invalid header headername=bad header\r\nvalue",
288 e.getMessage()); 282 e.getMessage());
289 } 283 }
290 } 284 }
291 285
292 @SmallTest 286 @SmallTest
293 @Feature({"Cronet"}) 287 @Feature({"Cronet"})
294 public void testAddHeader() throws Exception { 288 public void testAddHeader() throws Exception {
295 TestUrlRequestListener listener = new TestUrlRequestListener(); 289 TestUrlRequestListener listener = new TestUrlRequestListener();
296 String headerName = "header-name"; 290 String headerName = "header-name";
297 String headerValue = "header-value"; 291 String headerValue = "header-value";
298 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 292 UrlRequest.Builder builder = new UrlRequest.Builder(
299 NativeTestServer.getEchoHeaderURL(headerName), listener, 293 NativeTestServer.getEchoHeaderURL(headerName), listener, listene r.getExecutor());
300 listener.getExecutor());
301 294
302 urlRequest.addHeader(headerName, headerValue); 295 builder.addHeader(headerName, headerValue);
303 urlRequest.start(); 296 mActivity.mCronetEngine.executeRequest(builder);
304 try {
305 urlRequest.addHeader("header2", "value");
306 fail("Exception not thrown");
307 } catch (IllegalStateException e) {
308 assertEquals("Request is already started.", e.getMessage());
309 }
310 listener.blockForDone(); 297 listener.blockForDone();
311 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 298 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
312 assertEquals(headerValue, listener.mResponseAsString); 299 assertEquals(headerValue, listener.mResponseAsString);
313 } 300 }
314 301
315 @SmallTest 302 @SmallTest
316 @Feature({"Cronet"}) 303 @Feature({"Cronet"})
317 public void testMultiRequestHeaders() throws Exception { 304 public void testMultiRequestHeaders() throws Exception {
318 TestUrlRequestListener listener = new TestUrlRequestListener(); 305 TestUrlRequestListener listener = new TestUrlRequestListener();
319 String headerName = "header-name"; 306 String headerName = "header-name";
320 String headerValue1 = "header-value1"; 307 String headerValue1 = "header-value1";
321 String headerValue2 = "header-value2"; 308 String headerValue2 = "header-value2";
322 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 309 UrlRequest.Builder builder = new UrlRequest.Builder(
323 NativeTestServer.getEchoAllHeadersURL(), listener, 310 NativeTestServer.getEchoAllHeadersURL(), listener, listener.getE xecutor());
324 listener.getExecutor()); 311 builder.addHeader(headerName, headerValue1);
325 urlRequest.addHeader(headerName, headerValue1); 312 builder.addHeader(headerName, headerValue2);
326 urlRequest.addHeader(headerName, headerValue2); 313 mActivity.mCronetEngine.executeRequest(builder);
327 urlRequest.start();
328 listener.blockForDone(); 314 listener.blockForDone();
329 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 315 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
330 String headers = listener.mResponseAsString; 316 String headers = listener.mResponseAsString;
331 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); 317 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n");
332 Matcher matcher = pattern.matcher(headers); 318 Matcher matcher = pattern.matcher(headers);
333 List<String> actualValues = new ArrayList<String>(); 319 List<String> actualValues = new ArrayList<String>();
334 while (matcher.find()) { 320 while (matcher.find()) {
335 actualValues.add(matcher.group(1)); 321 actualValues.add(matcher.group(1));
336 } 322 }
337 assertEquals(1, actualValues.size()); 323 assertEquals(1, actualValues.size());
338 assertEquals("header-value2", actualValues.get(0)); 324 assertEquals("header-value2", actualValues.get(0));
339 } 325 }
340 326
341 @SmallTest 327 @SmallTest
342 @Feature({"Cronet"}) 328 @Feature({"Cronet"})
343 public void testCustomUserAgent() throws Exception { 329 public void testCustomUserAgent() throws Exception {
344 TestUrlRequestListener listener = new TestUrlRequestListener(); 330 TestUrlRequestListener listener = new TestUrlRequestListener();
345 String userAgentName = "User-Agent"; 331 String userAgentName = "User-Agent";
346 String userAgentValue = "User-Agent-Value"; 332 String userAgentValue = "User-Agent-Value";
347 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 333 UrlRequest.Builder builder = new UrlRequest.Builder(
348 NativeTestServer.getEchoHeaderURL(userAgentName), listener, 334 NativeTestServer.getEchoHeaderURL(userAgentName), listener, list ener.getExecutor());
349 listener.getExecutor()); 335 builder.addHeader(userAgentName, userAgentValue);
350 urlRequest.addHeader(userAgentName, userAgentValue); 336 mActivity.mCronetEngine.executeRequest(builder);
351 urlRequest.start();
352 listener.blockForDone(); 337 listener.blockForDone();
353 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 338 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
354 assertEquals(userAgentValue, listener.mResponseAsString); 339 assertEquals(userAgentValue, listener.mResponseAsString);
355 } 340 }
356 341
357 @SmallTest 342 @SmallTest
358 @Feature({"Cronet"}) 343 @Feature({"Cronet"})
359 public void testDefaultUserAgent() throws Exception { 344 public void testDefaultUserAgent() throws Exception {
360 TestUrlRequestListener listener = new TestUrlRequestListener(); 345 TestUrlRequestListener listener = new TestUrlRequestListener();
361 String headerName = "User-Agent"; 346 String headerName = "User-Agent";
362 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 347 UrlRequest.Builder builder = new UrlRequest.Builder(
363 NativeTestServer.getEchoHeaderURL(headerName), listener, 348 NativeTestServer.getEchoHeaderURL(headerName), listener, listene r.getExecutor());
364 listener.getExecutor()); 349 mActivity.mCronetEngine.executeRequest(builder);
365 urlRequest.start();
366 listener.blockForDone(); 350 listener.blockForDone();
367 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 351 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
368 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " 352 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is "
369 + listener.mResponseAsString, 353 + listener.mResponseAsString,
370 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", 354 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+",
371 listener.mResponseAsString)); 355 listener.mResponseAsString));
372 } 356 }
373 357
374 @SmallTest 358 @SmallTest
375 @Feature({"Cronet"}) 359 @Feature({"Cronet"})
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 * when using legacy read() API. 517 * when using legacy read() API.
534 */ 518 */
535 @SmallTest 519 @SmallTest
536 @Feature({"Cronet"}) 520 @Feature({"Cronet"})
537 public void testLegacySimpleGetBufferUpdates() throws Exception { 521 public void testLegacySimpleGetBufferUpdates() throws Exception {
538 TestUrlRequestListener listener = new TestUrlRequestListener(); 522 TestUrlRequestListener listener = new TestUrlRequestListener();
539 listener.mLegacyReadByteBufferAdjustment = true; 523 listener.mLegacyReadByteBufferAdjustment = true;
540 listener.setAutoAdvance(false); 524 listener.setAutoAdvance(false);
541 // Since the default method is "GET", the expected response body is also 525 // Since the default method is "GET", the expected response body is also
542 // "GET". 526 // "GET".
543 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 527 UrlRequest.Builder builder = new UrlRequest.Builder(
544 NativeTestServer.getEchoMethodURL(), 528 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
545 listener, listener.getExecutor()); 529 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
546 urlRequest.start();
547 listener.waitForNextStep(); 530 listener.waitForNextStep();
548 531
549 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 532 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
550 readBuffer.put("FOR".getBytes()); 533 readBuffer.put("FOR".getBytes());
551 assertEquals(3, readBuffer.position()); 534 assertEquals(3, readBuffer.position());
552 535
553 // Read first two characters of the response ("GE"). It's theoretically 536 // Read first two characters of the response ("GE"). It's theoretically
554 // possible to need one read per character, though in practice, 537 // possible to need one read per character, though in practice,
555 // shouldn't happen. 538 // shouldn't happen.
556 while (listener.mResponseAsString.length() < 2) { 539 while (listener.mResponseAsString.length() < 2) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 /** 603 /**
621 * Checks that the buffer is updated correctly, when starting at an offset. 604 * Checks that the buffer is updated correctly, when starting at an offset.
622 */ 605 */
623 @SmallTest 606 @SmallTest
624 @Feature({"Cronet"}) 607 @Feature({"Cronet"})
625 public void testSimpleGetBufferUpdates() throws Exception { 608 public void testSimpleGetBufferUpdates() throws Exception {
626 TestUrlRequestListener listener = new TestUrlRequestListener(); 609 TestUrlRequestListener listener = new TestUrlRequestListener();
627 listener.setAutoAdvance(false); 610 listener.setAutoAdvance(false);
628 // Since the default method is "GET", the expected response body is also 611 // Since the default method is "GET", the expected response body is also
629 // "GET". 612 // "GET".
630 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 613 UrlRequest.Builder builder = new UrlRequest.Builder(
631 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); 614 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
632 urlRequest.start(); 615 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
633 listener.waitForNextStep(); 616 listener.waitForNextStep();
634 617
635 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 618 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
636 readBuffer.put("FOR".getBytes()); 619 readBuffer.put("FOR".getBytes());
637 assertEquals(3, readBuffer.position()); 620 assertEquals(3, readBuffer.position());
638 621
639 // Read first two characters of the response ("GE"). It's theoretically 622 // Read first two characters of the response ("GE"). It's theoretically
640 // possible to need one read per character, though in practice, 623 // possible to need one read per character, though in practice,
641 // shouldn't happen. 624 // shouldn't happen.
642 while (listener.mResponseAsString.length() < 2) { 625 while (listener.mResponseAsString.length() < 2) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 // Make sure there are no other pending messages, which would trigger 684 // Make sure there are no other pending messages, which would trigger
702 // asserts in TestURLRequestListener. 685 // asserts in TestURLRequestListener.
703 testSimpleGet(); 686 testSimpleGet();
704 } 687 }
705 688
706 @SmallTest 689 @SmallTest
707 @Feature({"Cronet"}) 690 @Feature({"Cronet"})
708 public void testBadBuffers() throws Exception { 691 public void testBadBuffers() throws Exception {
709 TestUrlRequestListener listener = new TestUrlRequestListener(); 692 TestUrlRequestListener listener = new TestUrlRequestListener();
710 listener.setAutoAdvance(false); 693 listener.setAutoAdvance(false);
711 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 694 UrlRequest.Builder builder = new UrlRequest.Builder(
712 NativeTestServer.getEchoMethodURL(), listener, 695 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
713 listener.getExecutor()); 696 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
714 urlRequest.start();
715 listener.waitForNextStep(); 697 listener.waitForNextStep();
716 698
717 // Try to read using a full buffer. 699 // Try to read using a full buffer.
718 try { 700 try {
719 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); 701 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4);
720 readBuffer.put("full".getBytes()); 702 readBuffer.put("full".getBytes());
721 urlRequest.readNew(readBuffer); 703 urlRequest.readNew(readBuffer);
722 fail("Exception not thrown"); 704 fail("Exception not thrown");
723 } catch (IllegalArgumentException e) { 705 } catch (IllegalArgumentException e) {
724 assertEquals("ByteBuffer is already full.", 706 assertEquals("ByteBuffer is already full.",
(...skipping 17 matching lines...) Expand all
742 listener.blockForDone(); 724 listener.blockForDone();
743 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 725 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
744 assertEquals("GET", listener.mResponseAsString); 726 assertEquals("GET", listener.mResponseAsString);
745 } 727 }
746 728
747 @SmallTest 729 @SmallTest
748 @Feature({"Cronet"}) 730 @Feature({"Cronet"})
749 public void testUnexpectedReads() throws Exception { 731 public void testUnexpectedReads() throws Exception {
750 final TestUrlRequestListener listener = new TestUrlRequestListener(); 732 final TestUrlRequestListener listener = new TestUrlRequestListener();
751 listener.setAutoAdvance(false); 733 listener.setAutoAdvance(false);
752 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest ( 734 final UrlRequest.Builder builder = new UrlRequest.Builder(
753 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 735 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r());
754 736
755 // Try to read before starting request.
756 try {
757 listener.startNextRead(urlRequest);
758 fail("Exception not thrown");
759 } catch (IllegalStateException e) {
760 assertEquals("Unexpected read attempt.",
761 e.getMessage());
762 }
763
764 // Verify reading right after start throws an assertion. Both must be 737 // Verify reading right after start throws an assertion. Both must be
765 // invoked on the Executor thread, to prevent receiving data until after 738 // invoked on the Executor thread, to prevent receiving data until after
766 // startNextRead has been invoked. 739 // startNextRead has been invoked.
767 Runnable startAndRead = new Runnable() { 740 Callable<UrlRequest> startAndRead = new Callable<UrlRequest>() {
768 @Override 741 @Override
769 public void run() { 742 public UrlRequest call() {
770 urlRequest.start(); 743 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(b uilder);
771 try { 744 try {
772 listener.startNextRead(urlRequest); 745 listener.startNextRead(urlRequest);
773 fail("Exception not thrown"); 746 fail("Exception not thrown");
774 } catch (IllegalStateException e) { 747 } catch (IllegalStateException e) {
775 assertEquals("Unexpected read attempt.", 748 assertEquals("Unexpected read attempt.",
776 e.getMessage()); 749 e.getMessage());
777 } 750 }
751 return urlRequest;
778 } 752 }
779 }; 753 };
780 listener.getExecutor().execute(startAndRead); 754 Future<UrlRequest> future = listener.getExecutorService().submit(startAn dRead);
781 listener.waitForNextStep(); 755 listener.waitForNextStep();
756 final UrlRequest urlRequest = future.get();
782 757
783 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT); 758 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT);
784 // Try to read after the redirect. 759 // Try to read after the redirect.
785 try { 760 try {
786 listener.startNextRead(urlRequest); 761 listener.startNextRead(urlRequest);
787 fail("Exception not thrown"); 762 fail("Exception not thrown");
788 } catch (IllegalStateException e) { 763 } catch (IllegalStateException e) {
789 assertEquals("Unexpected read attempt.", 764 assertEquals("Unexpected read attempt.",
790 e.getMessage()); 765 e.getMessage());
791 } 766 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 assertEquals("Unexpected read attempt.", 800 assertEquals("Unexpected read attempt.",
826 e.getMessage()); 801 e.getMessage());
827 } 802 }
828 } 803 }
829 804
830 @SmallTest 805 @SmallTest
831 @Feature({"Cronet"}) 806 @Feature({"Cronet"})
832 public void testUnexpectedFollowRedirects() throws Exception { 807 public void testUnexpectedFollowRedirects() throws Exception {
833 final TestUrlRequestListener listener = new TestUrlRequestListener(); 808 final TestUrlRequestListener listener = new TestUrlRequestListener();
834 listener.setAutoAdvance(false); 809 listener.setAutoAdvance(false);
835 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest ( 810 final UrlRequest.Builder builder = new UrlRequest.Builder(
836 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 811 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r());
837 812
838 // Try to follow a redirect before starting the request.
839 try {
840 urlRequest.followRedirect();
841 fail("Exception not thrown");
842 } catch (IllegalStateException e) {
843 assertEquals("No redirect to follow.",
844 e.getMessage());
845 }
846
847 // Try to follow a redirect just after starting the request. Has to be 813 // Try to follow a redirect just after starting the request. Has to be
848 // done on the executor thread to avoid a race. 814 // done on the executor thread to avoid a race.
849 Runnable startAndRead = new Runnable() { 815 Callable<UrlRequest> startAndRead = new Callable<UrlRequest>() {
850 @Override 816 @Override
851 public void run() { 817 public UrlRequest call() {
852 urlRequest.start(); 818 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(b uilder);
853 try { 819 try {
854 urlRequest.followRedirect(); 820 urlRequest.followRedirect();
855 fail("Exception not thrown"); 821 fail("Exception not thrown");
856 } catch (IllegalStateException e) { 822 } catch (IllegalStateException e) {
857 assertEquals("No redirect to follow.", 823 assertEquals("No redirect to follow.",
858 e.getMessage()); 824 e.getMessage());
859 } 825 }
826 return urlRequest;
860 } 827 }
861 }; 828 };
862 listener.getExecutor().execute(startAndRead); 829 Future<UrlRequest> future = listener.getExecutorService().submit(startAn dRead);
863 listener.waitForNextStep(); 830 listener.waitForNextStep();
831 final UrlRequest urlRequest = future.get();
mef 2015/09/25 21:32:19 why do you need it?
pauljensen 2015/09/28 14:18:12 line 838, 840, 856, and 871 read it
mef 2015/09/28 17:13:37 Ah, that's the pattern change, as we don't have re
864 832
865 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT); 833 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT);
866 // Try to follow the redirect twice. Second attempt should fail. 834 // Try to follow the redirect twice. Second attempt should fail.
867 Runnable followRedirectTwice = new Runnable() { 835 Runnable followRedirectTwice = new Runnable() {
868 @Override 836 @Override
869 public void run() { 837 public void run() {
870 urlRequest.followRedirect(); 838 urlRequest.followRedirect();
871 try { 839 try {
872 urlRequest.followRedirect(); 840 urlRequest.followRedirect();
873 fail("Exception not thrown"); 841 fail("Exception not thrown");
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 } catch (IllegalStateException e) { 873 } catch (IllegalStateException e) {
906 assertEquals("No redirect to follow.", 874 assertEquals("No redirect to follow.",
907 e.getMessage()); 875 e.getMessage());
908 } 876 }
909 } 877 }
910 878
911 @SmallTest 879 @SmallTest
912 @Feature({"Cronet"}) 880 @Feature({"Cronet"})
913 public void testUploadSetDataProvider() throws Exception { 881 public void testUploadSetDataProvider() throws Exception {
914 TestUrlRequestListener listener = new TestUrlRequestListener(); 882 TestUrlRequestListener listener = new TestUrlRequestListener();
915 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 883 UrlRequest.Builder builder = new UrlRequest.Builder(
916 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 884 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
917 885
918 try { 886 try {
919 urlRequest.setUploadDataProvider(null, listener.getExecutor()); 887 builder.setUploadDataProvider(null, listener.getExecutor());
920 fail("Exception not thrown"); 888 fail("Exception not thrown");
921 } catch (NullPointerException e) { 889 } catch (NullPointerException e) {
922 assertEquals("Invalid UploadDataProvider.", e.getMessage()); 890 assertEquals("Invalid UploadDataProvider.", e.getMessage());
923 } 891 }
924 892
925 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 893 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
926 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 894 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
927 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 895 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
928 try { 896 try {
929 urlRequest.start(); 897 mActivity.mCronetEngine.executeRequest(builder);
930 fail("Exception not thrown"); 898 fail("Exception not thrown");
931 } catch (IllegalArgumentException e) { 899 } catch (IllegalArgumentException e) {
932 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage()); 900 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage());
933 } 901 }
934 } 902 }
935 903
936 @SmallTest 904 @SmallTest
937 @Feature({"Cronet"}) 905 @Feature({"Cronet"})
938 public void testUploadEmptyBodySync() throws Exception { 906 public void testUploadEmptyBodySync() throws Exception {
939 TestUrlRequestListener listener = new TestUrlRequestListener(); 907 TestUrlRequestListener listener = new TestUrlRequestListener();
940 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 908 UrlRequest.Builder builder = new UrlRequest.Builder(
941 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 909 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
942 910
943 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 911 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
944 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 912 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
945 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 913 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
946 urlRequest.addHeader("Content-Type", "useless/string"); 914 builder.addHeader("Content-Type", "useless/string");
947 urlRequest.start(); 915 mActivity.mCronetEngine.executeRequest(builder);
948 listener.blockForDone(); 916 listener.blockForDone();
949 917
950 assertEquals(0, dataProvider.getLength()); 918 assertEquals(0, dataProvider.getLength());
951 assertEquals(0, dataProvider.getNumReadCalls()); 919 assertEquals(0, dataProvider.getNumReadCalls());
952 assertEquals(0, dataProvider.getNumRewindCalls()); 920 assertEquals(0, dataProvider.getNumRewindCalls());
953 921
954 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 922 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
955 assertEquals("", listener.mResponseAsString); 923 assertEquals("", listener.mResponseAsString);
956 } 924 }
957 925
958 @SmallTest 926 @SmallTest
959 @Feature({"Cronet"}) 927 @Feature({"Cronet"})
960 public void testUploadSync() throws Exception { 928 public void testUploadSync() throws Exception {
961 TestUrlRequestListener listener = new TestUrlRequestListener(); 929 TestUrlRequestListener listener = new TestUrlRequestListener();
962 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 930 UrlRequest.Builder builder = new UrlRequest.Builder(
963 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 931 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
964 932
965 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 933 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
966 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 934 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
967 dataProvider.addRead("test".getBytes()); 935 dataProvider.addRead("test".getBytes());
968 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 936 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
969 urlRequest.addHeader("Content-Type", "useless/string"); 937 builder.addHeader("Content-Type", "useless/string");
970 urlRequest.start(); 938 mActivity.mCronetEngine.executeRequest(builder);
971 listener.blockForDone(); 939 listener.blockForDone();
972 940
973 assertEquals(4, dataProvider.getLength()); 941 assertEquals(4, dataProvider.getLength());
974 assertEquals(1, dataProvider.getNumReadCalls()); 942 assertEquals(1, dataProvider.getNumReadCalls());
975 assertEquals(0, dataProvider.getNumRewindCalls()); 943 assertEquals(0, dataProvider.getNumRewindCalls());
976 944
977 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 945 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
978 assertEquals("test", listener.mResponseAsString); 946 assertEquals("test", listener.mResponseAsString);
979 } 947 }
980 948
981 @SmallTest 949 @SmallTest
982 @Feature({"Cronet"}) 950 @Feature({"Cronet"})
983 public void testUploadMultiplePiecesSync() throws Exception { 951 public void testUploadMultiplePiecesSync() throws Exception {
984 TestUrlRequestListener listener = new TestUrlRequestListener(); 952 TestUrlRequestListener listener = new TestUrlRequestListener();
985 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 953 UrlRequest.Builder builder = new UrlRequest.Builder(
986 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 954 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
987 955
988 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 956 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
989 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 957 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
990 dataProvider.addRead("Y".getBytes()); 958 dataProvider.addRead("Y".getBytes());
991 dataProvider.addRead("et ".getBytes()); 959 dataProvider.addRead("et ".getBytes());
992 dataProvider.addRead("another ".getBytes()); 960 dataProvider.addRead("another ".getBytes());
993 dataProvider.addRead("test".getBytes()); 961 dataProvider.addRead("test".getBytes());
994 962
995 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 963 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
996 urlRequest.addHeader("Content-Type", "useless/string"); 964 builder.addHeader("Content-Type", "useless/string");
997 urlRequest.start(); 965 mActivity.mCronetEngine.executeRequest(builder);
998 listener.blockForDone(); 966 listener.blockForDone();
999 967
1000 assertEquals(16, dataProvider.getLength()); 968 assertEquals(16, dataProvider.getLength());
1001 assertEquals(4, dataProvider.getNumReadCalls()); 969 assertEquals(4, dataProvider.getNumReadCalls());
1002 assertEquals(0, dataProvider.getNumRewindCalls()); 970 assertEquals(0, dataProvider.getNumRewindCalls());
1003 971
1004 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 972 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1005 assertEquals("Yet another test", listener.mResponseAsString); 973 assertEquals("Yet another test", listener.mResponseAsString);
1006 } 974 }
1007 975
1008 @SmallTest 976 @SmallTest
1009 @Feature({"Cronet"}) 977 @Feature({"Cronet"})
1010 public void testUploadMultiplePiecesAsync() throws Exception { 978 public void testUploadMultiplePiecesAsync() throws Exception {
1011 TestUrlRequestListener listener = new TestUrlRequestListener(); 979 TestUrlRequestListener listener = new TestUrlRequestListener();
1012 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 980 UrlRequest.Builder builder = new UrlRequest.Builder(
1013 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 981 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1014 982
1015 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 983 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1016 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 984 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1017 dataProvider.addRead("Y".getBytes()); 985 dataProvider.addRead("Y".getBytes());
1018 dataProvider.addRead("et ".getBytes()); 986 dataProvider.addRead("et ".getBytes());
1019 dataProvider.addRead("another ".getBytes()); 987 dataProvider.addRead("another ".getBytes());
1020 dataProvider.addRead("test".getBytes()); 988 dataProvider.addRead("test".getBytes());
1021 989
1022 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 990 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1023 urlRequest.addHeader("Content-Type", "useless/string"); 991 builder.addHeader("Content-Type", "useless/string");
1024 urlRequest.start(); 992 mActivity.mCronetEngine.executeRequest(builder);
1025 listener.blockForDone(); 993 listener.blockForDone();
1026 994
1027 assertEquals(16, dataProvider.getLength()); 995 assertEquals(16, dataProvider.getLength());
1028 assertEquals(4, dataProvider.getNumReadCalls()); 996 assertEquals(4, dataProvider.getNumReadCalls());
1029 assertEquals(0, dataProvider.getNumRewindCalls()); 997 assertEquals(0, dataProvider.getNumRewindCalls());
1030 998
1031 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 999 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1032 assertEquals("Yet another test", listener.mResponseAsString); 1000 assertEquals("Yet another test", listener.mResponseAsString);
1033 } 1001 }
1034 1002
1035 @SmallTest 1003 @SmallTest
1036 @Feature({"Cronet"}) 1004 @Feature({"Cronet"})
1037 public void testUploadChangesDefaultMethod() throws Exception { 1005 public void testUploadChangesDefaultMethod() throws Exception {
1038 TestUrlRequestListener listener = new TestUrlRequestListener(); 1006 TestUrlRequestListener listener = new TestUrlRequestListener();
1039 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1007 UrlRequest.Builder builder = new UrlRequest.Builder(
1040 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); 1008 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
1041 1009
1042 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1010 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1043 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1011 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1044 dataProvider.addRead("test".getBytes()); 1012 dataProvider.addRead("test".getBytes());
1045 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1013 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1046 urlRequest.addHeader("Content-Type", "useless/string"); 1014 builder.addHeader("Content-Type", "useless/string");
1047 urlRequest.start(); 1015 mActivity.mCronetEngine.executeRequest(builder);
1048 listener.blockForDone(); 1016 listener.blockForDone();
1049 1017
1050 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1018 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1051 assertEquals("POST", listener.mResponseAsString); 1019 assertEquals("POST", listener.mResponseAsString);
1052 } 1020 }
1053 1021
1054 @SmallTest 1022 @SmallTest
1055 @Feature({"Cronet"}) 1023 @Feature({"Cronet"})
1056 public void testUploadWithSetMethod() throws Exception { 1024 public void testUploadWithSetMethod() throws Exception {
1057 TestUrlRequestListener listener = new TestUrlRequestListener(); 1025 TestUrlRequestListener listener = new TestUrlRequestListener();
1058 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1026 UrlRequest.Builder builder = new UrlRequest.Builder(
1059 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); 1027 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor());
1060 1028
1061 final String method = "PUT"; 1029 final String method = "PUT";
1062 urlRequest.setHttpMethod(method); 1030 builder.setHttpMethod(method);
1063 1031
1064 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1032 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1065 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1033 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1066 dataProvider.addRead("test".getBytes()); 1034 dataProvider.addRead("test".getBytes());
1067 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1035 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1068 urlRequest.addHeader("Content-Type", "useless/string"); 1036 builder.addHeader("Content-Type", "useless/string");
1069 urlRequest.start(); 1037 mActivity.mCronetEngine.executeRequest(builder);
1070 listener.blockForDone(); 1038 listener.blockForDone();
1071 1039
1072 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1040 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1073 assertEquals("PUT", listener.mResponseAsString); 1041 assertEquals("PUT", listener.mResponseAsString);
1074 } 1042 }
1075 1043
1076 @SmallTest 1044 @SmallTest
1077 @Feature({"Cronet"}) 1045 @Feature({"Cronet"})
1078 public void testUploadRedirectSync() throws Exception { 1046 public void testUploadRedirectSync() throws Exception {
1079 TestUrlRequestListener listener = new TestUrlRequestListener(); 1047 TestUrlRequestListener listener = new TestUrlRequestListener();
1080 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1048 UrlRequest.Builder builder = new UrlRequest.Builder(
1081 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1049 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
1082 1050
1083 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1051 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1084 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1052 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1085 dataProvider.addRead("test".getBytes()); 1053 dataProvider.addRead("test".getBytes());
1086 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1054 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1087 urlRequest.addHeader("Content-Type", "useless/string"); 1055 builder.addHeader("Content-Type", "useless/string");
1088 urlRequest.start(); 1056 mActivity.mCronetEngine.executeRequest(builder);
1089 listener.blockForDone(); 1057 listener.blockForDone();
1090 1058
1091 // 1 read call before the rewind, 1 after. 1059 // 1 read call before the rewind, 1 after.
1092 assertEquals(2, dataProvider.getNumReadCalls()); 1060 assertEquals(2, dataProvider.getNumReadCalls());
1093 assertEquals(1, dataProvider.getNumRewindCalls()); 1061 assertEquals(1, dataProvider.getNumRewindCalls());
1094 1062
1095 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1063 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1096 assertEquals("test", listener.mResponseAsString); 1064 assertEquals("test", listener.mResponseAsString);
1097 } 1065 }
1098 1066
1099 @SmallTest 1067 @SmallTest
1100 @Feature({"Cronet"}) 1068 @Feature({"Cronet"})
1101 public void testUploadRedirectAsync() throws Exception { 1069 public void testUploadRedirectAsync() throws Exception {
1102 TestUrlRequestListener listener = new TestUrlRequestListener(); 1070 TestUrlRequestListener listener = new TestUrlRequestListener();
1103 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1071 UrlRequest.Builder builder = new UrlRequest.Builder(
1104 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1072 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
1105 1073
1106 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1074 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1107 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1075 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1108 dataProvider.addRead("test".getBytes()); 1076 dataProvider.addRead("test".getBytes());
1109 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1077 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1110 urlRequest.addHeader("Content-Type", "useless/string"); 1078 builder.addHeader("Content-Type", "useless/string");
1111 urlRequest.start(); 1079 mActivity.mCronetEngine.executeRequest(builder);
1112 listener.blockForDone(); 1080 listener.blockForDone();
1113 1081
1114 // 1 read call before the rewind, 1 after. 1082 // 1 read call before the rewind, 1 after.
1115 assertEquals(2, dataProvider.getNumReadCalls()); 1083 assertEquals(2, dataProvider.getNumReadCalls());
1116 assertEquals(1, dataProvider.getNumRewindCalls()); 1084 assertEquals(1, dataProvider.getNumRewindCalls());
1117 1085
1118 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1086 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1119 assertEquals("test", listener.mResponseAsString); 1087 assertEquals("test", listener.mResponseAsString);
1120 } 1088 }
1121 1089
1122 @SmallTest 1090 @SmallTest
1123 @Feature({"Cronet"}) 1091 @Feature({"Cronet"})
1124 public void testUploadReadFailSync() throws Exception { 1092 public void testUploadReadFailSync() throws Exception {
1125 TestUrlRequestListener listener = new TestUrlRequestListener(); 1093 TestUrlRequestListener listener = new TestUrlRequestListener();
1126 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1094 UrlRequest.Builder builder = new UrlRequest.Builder(
1127 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1095 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1128 1096
1129 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1097 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1130 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1098 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1131 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); 1099 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC);
1132 // This will never be read, but if the length is 0, read may never be 1100 // This will never be read, but if the length is 0, read may never be
1133 // called. 1101 // called.
1134 dataProvider.addRead("test".getBytes()); 1102 dataProvider.addRead("test".getBytes());
1135 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1103 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1136 urlRequest.addHeader("Content-Type", "useless/string"); 1104 builder.addHeader("Content-Type", "useless/string");
1137 urlRequest.start(); 1105 mActivity.mCronetEngine.executeRequest(builder);
1138 listener.blockForDone(); 1106 listener.blockForDone();
1139 1107
1140 assertEquals(1, dataProvider.getNumReadCalls()); 1108 assertEquals(1, dataProvider.getNumReadCalls());
1141 assertEquals(0, dataProvider.getNumRewindCalls()); 1109 assertEquals(0, dataProvider.getNumRewindCalls());
1142 1110
1143 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1111 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1144 assertEquals("Sync read failure", listener.mError.getCause().getMessage( )); 1112 assertEquals("Sync read failure", listener.mError.getCause().getMessage( ));
1145 assertEquals(null, listener.mResponseInfo); 1113 assertEquals(null, listener.mResponseInfo);
1146 } 1114 }
1147 1115
1148 @SmallTest 1116 @SmallTest
1149 @Feature({"Cronet"}) 1117 @Feature({"Cronet"})
1150 public void testUploadReadFailAsync() throws Exception { 1118 public void testUploadReadFailAsync() throws Exception {
1151 TestUrlRequestListener listener = new TestUrlRequestListener(); 1119 TestUrlRequestListener listener = new TestUrlRequestListener();
1152 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1120 UrlRequest.Builder builder = new UrlRequest.Builder(
1153 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1121 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1154 1122
1155 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1123 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1156 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1124 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1157 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); 1125 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC);
1158 // This will never be read, but if the length is 0, read may never be 1126 // This will never be read, but if the length is 0, read may never be
1159 // called. 1127 // called.
1160 dataProvider.addRead("test".getBytes()); 1128 dataProvider.addRead("test".getBytes());
1161 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1129 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1162 urlRequest.addHeader("Content-Type", "useless/string"); 1130 builder.addHeader("Content-Type", "useless/string");
1163 urlRequest.start(); 1131 mActivity.mCronetEngine.executeRequest(builder);
1164 listener.blockForDone(); 1132 listener.blockForDone();
1165 1133
1166 assertEquals(1, dataProvider.getNumReadCalls()); 1134 assertEquals(1, dataProvider.getNumReadCalls());
1167 assertEquals(0, dataProvider.getNumRewindCalls()); 1135 assertEquals(0, dataProvider.getNumRewindCalls());
1168 1136
1169 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1137 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1170 assertEquals("Async read failure", listener.mError.getCause().getMessage ()); 1138 assertEquals("Async read failure", listener.mError.getCause().getMessage ());
1171 assertEquals(null, listener.mResponseInfo); 1139 assertEquals(null, listener.mResponseInfo);
1172 } 1140 }
1173 1141
1174 @SmallTest 1142 @SmallTest
1175 @Feature({"Cronet"}) 1143 @Feature({"Cronet"})
1176 public void testUploadReadFailThrown() throws Exception { 1144 public void testUploadReadFailThrown() throws Exception {
1177 TestUrlRequestListener listener = new TestUrlRequestListener(); 1145 TestUrlRequestListener listener = new TestUrlRequestListener();
1178 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1146 UrlRequest.Builder builder = new UrlRequest.Builder(
1179 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1147 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1180 1148
1181 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1149 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1182 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1150 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1183 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); 1151 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN);
1184 // This will never be read, but if the length is 0, read may never be 1152 // This will never be read, but if the length is 0, read may never be
1185 // called. 1153 // called.
1186 dataProvider.addRead("test".getBytes()); 1154 dataProvider.addRead("test".getBytes());
1187 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1155 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1188 urlRequest.addHeader("Content-Type", "useless/string"); 1156 builder.addHeader("Content-Type", "useless/string");
1189 urlRequest.start(); 1157 mActivity.mCronetEngine.executeRequest(builder);
1190 listener.blockForDone(); 1158 listener.blockForDone();
1191 1159
1192 assertEquals(1, dataProvider.getNumReadCalls()); 1160 assertEquals(1, dataProvider.getNumReadCalls());
1193 assertEquals(0, dataProvider.getNumRewindCalls()); 1161 assertEquals(0, dataProvider.getNumRewindCalls());
1194 1162
1195 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1163 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1196 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e()); 1164 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e());
1197 assertEquals(null, listener.mResponseInfo); 1165 assertEquals(null, listener.mResponseInfo);
1198 } 1166 }
1199 1167
1200 @SmallTest 1168 @SmallTest
1201 @Feature({"Cronet"}) 1169 @Feature({"Cronet"})
1202 public void testUploadRewindFailSync() throws Exception { 1170 public void testUploadRewindFailSync() throws Exception {
1203 TestUrlRequestListener listener = new TestUrlRequestListener(); 1171 TestUrlRequestListener listener = new TestUrlRequestListener();
1204 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1172 UrlRequest.Builder builder = new UrlRequest.Builder(
1205 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1173 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
1206 1174
1207 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1175 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1208 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1176 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1209 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); 1177 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC);
1210 dataProvider.addRead("test".getBytes()); 1178 dataProvider.addRead("test".getBytes());
1211 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1179 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1212 urlRequest.addHeader("Content-Type", "useless/string"); 1180 builder.addHeader("Content-Type", "useless/string");
1213 urlRequest.start(); 1181 mActivity.mCronetEngine.executeRequest(builder);
1214 listener.blockForDone(); 1182 listener.blockForDone();
1215 1183
1216 assertEquals(1, dataProvider.getNumReadCalls()); 1184 assertEquals(1, dataProvider.getNumReadCalls());
1217 assertEquals(1, dataProvider.getNumRewindCalls()); 1185 assertEquals(1, dataProvider.getNumRewindCalls());
1218 1186
1219 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1187 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1220 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e()); 1188 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e());
1221 assertEquals(null, listener.mResponseInfo); 1189 assertEquals(null, listener.mResponseInfo);
1222 } 1190 }
1223 1191
1224 @SmallTest 1192 @SmallTest
1225 @Feature({"Cronet"}) 1193 @Feature({"Cronet"})
1226 public void testUploadRewindFailAsync() throws Exception { 1194 public void testUploadRewindFailAsync() throws Exception {
1227 TestUrlRequestListener listener = new TestUrlRequestListener(); 1195 TestUrlRequestListener listener = new TestUrlRequestListener();
1228 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1196 UrlRequest.Builder builder = new UrlRequest.Builder(
1229 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1197 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
1230 1198
1231 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1199 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1232 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1200 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1233 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); 1201 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC);
1234 dataProvider.addRead("test".getBytes()); 1202 dataProvider.addRead("test".getBytes());
1235 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1203 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1236 urlRequest.addHeader("Content-Type", "useless/string"); 1204 builder.addHeader("Content-Type", "useless/string");
1237 urlRequest.start(); 1205 mActivity.mCronetEngine.executeRequest(builder);
1238 listener.blockForDone(); 1206 listener.blockForDone();
1239 1207
1240 assertEquals(1, dataProvider.getNumReadCalls()); 1208 assertEquals(1, dataProvider.getNumReadCalls());
1241 assertEquals(1, dataProvider.getNumRewindCalls()); 1209 assertEquals(1, dataProvider.getNumRewindCalls());
1242 1210
1243 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1211 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1244 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge()); 1212 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge());
1245 assertEquals(null, listener.mResponseInfo); 1213 assertEquals(null, listener.mResponseInfo);
1246 } 1214 }
1247 1215
1248 @SmallTest 1216 @SmallTest
1249 @Feature({"Cronet"}) 1217 @Feature({"Cronet"})
1250 public void testUploadRewindFailThrown() throws Exception { 1218 public void testUploadRewindFailThrown() throws Exception {
1251 TestUrlRequestListener listener = new TestUrlRequestListener(); 1219 TestUrlRequestListener listener = new TestUrlRequestListener();
1252 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1220 UrlRequest.Builder builder = new UrlRequest.Builder(
1253 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); 1221 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor());
1254 1222
1255 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1223 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1256 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1224 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1257 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); 1225 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN);
1258 dataProvider.addRead("test".getBytes()); 1226 dataProvider.addRead("test".getBytes());
1259 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1227 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1260 urlRequest.addHeader("Content-Type", "useless/string"); 1228 builder.addHeader("Content-Type", "useless/string");
1261 urlRequest.start(); 1229 mActivity.mCronetEngine.executeRequest(builder);
1262 listener.blockForDone(); 1230 listener.blockForDone();
1263 1231
1264 assertEquals(1, dataProvider.getNumReadCalls()); 1232 assertEquals(1, dataProvider.getNumReadCalls());
1265 assertEquals(1, dataProvider.getNumRewindCalls()); 1233 assertEquals(1, dataProvider.getNumRewindCalls());
1266 1234
1267 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1235 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1268 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age()); 1236 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age());
1269 assertEquals(null, listener.mResponseInfo); 1237 assertEquals(null, listener.mResponseInfo);
1270 } 1238 }
1271 1239
1272 @SmallTest 1240 @SmallTest
1273 @Feature({"Cronet"}) 1241 @Feature({"Cronet"})
1274 public void testUploadChunked() throws Exception { 1242 public void testUploadChunked() throws Exception {
1275 TestUrlRequestListener listener = new TestUrlRequestListener(); 1243 TestUrlRequestListener listener = new TestUrlRequestListener();
1276 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1244 UrlRequest.Builder builder = new UrlRequest.Builder(
1277 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1245 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1278 1246
1279 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1247 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1280 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1248 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1281 dataProvider.addRead("test hello".getBytes()); 1249 dataProvider.addRead("test hello".getBytes());
1282 dataProvider.setChunked(true); 1250 dataProvider.setChunked(true);
1283 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1251 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1284 urlRequest.addHeader("Content-Type", "useless/string"); 1252 builder.addHeader("Content-Type", "useless/string");
1285 1253
1286 assertEquals(-1, dataProvider.getLength()); 1254 assertEquals(-1, dataProvider.getLength());
1287 1255
1288 urlRequest.start(); 1256 mActivity.mCronetEngine.executeRequest(builder);
1289 listener.blockForDone(); 1257 listener.blockForDone();
1290 1258
1291 // 1 read call for one data chunk. 1259 // 1 read call for one data chunk.
1292 assertEquals(1, dataProvider.getNumReadCalls()); 1260 assertEquals(1, dataProvider.getNumReadCalls());
1293 assertEquals("test hello", listener.mResponseAsString); 1261 assertEquals("test hello", listener.mResponseAsString);
1294 } 1262 }
1295 1263
1296 @SmallTest 1264 @SmallTest
1297 @Feature({"Cronet"}) 1265 @Feature({"Cronet"})
1298 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { 1266 public void testUploadChunkedLastReadZeroLengthBody() throws Exception {
1299 TestUrlRequestListener listener = new TestUrlRequestListener(); 1267 TestUrlRequestListener listener = new TestUrlRequestListener();
1300 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1268 UrlRequest.Builder builder = new UrlRequest.Builder(
1301 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1269 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1302 1270
1303 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1271 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1304 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1272 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1305 // Add 3 reads. The last read has a 0-length body. 1273 // Add 3 reads. The last read has a 0-length body.
1306 dataProvider.addRead("hello there".getBytes()); 1274 dataProvider.addRead("hello there".getBytes());
1307 dataProvider.addRead("!".getBytes()); 1275 dataProvider.addRead("!".getBytes());
1308 dataProvider.addRead("".getBytes()); 1276 dataProvider.addRead("".getBytes());
1309 dataProvider.setChunked(true); 1277 dataProvider.setChunked(true);
1310 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1278 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1311 urlRequest.addHeader("Content-Type", "useless/string"); 1279 builder.addHeader("Content-Type", "useless/string");
1312 1280
1313 assertEquals(-1, dataProvider.getLength()); 1281 assertEquals(-1, dataProvider.getLength());
1314 1282
1315 urlRequest.start(); 1283 mActivity.mCronetEngine.executeRequest(builder);
1316 listener.blockForDone(); 1284 listener.blockForDone();
1317 1285
1318 // 2 read call for the first two data chunks, and 1 for final chunk. 1286 // 2 read call for the first two data chunks, and 1 for final chunk.
1319 assertEquals(3, dataProvider.getNumReadCalls()); 1287 assertEquals(3, dataProvider.getNumReadCalls());
1320 assertEquals("hello there!", listener.mResponseAsString); 1288 assertEquals("hello there!", listener.mResponseAsString);
1321 } 1289 }
1322 1290
1323 // Test where an upload fails without ever initializing the 1291 // Test where an upload fails without ever initializing the
1324 // UploadDataStream, because it can't connect to the server. 1292 // UploadDataStream, because it can't connect to the server.
1325 @SmallTest 1293 @SmallTest
1326 @Feature({"Cronet"}) 1294 @Feature({"Cronet"})
1327 public void testUploadFailsWithoutInitializingStream() throws Exception { 1295 public void testUploadFailsWithoutInitializingStream() throws Exception {
1328 TestUrlRequestListener listener = new TestUrlRequestListener(); 1296 TestUrlRequestListener listener = new TestUrlRequestListener();
1329 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1297 UrlRequest.Builder builder = new UrlRequest.Builder(
1330 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1298 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1331 // Shut down the test server, so connecting to it fails. Note that 1299 // Shut down the test server, so connecting to it fails. Note that
1332 // calling shutdown again during teardown is safe. 1300 // calling shutdown again during teardown is safe.
1333 NativeTestServer.shutdownNativeTestServer(); 1301 NativeTestServer.shutdownNativeTestServer();
1334 1302
1335 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1303 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1336 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1304 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1337 dataProvider.addRead("test".getBytes()); 1305 dataProvider.addRead("test".getBytes());
1338 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); 1306 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1339 urlRequest.addHeader("Content-Type", "useless/string"); 1307 builder.addHeader("Content-Type", "useless/string");
1340 urlRequest.start(); 1308 mActivity.mCronetEngine.executeRequest(builder);
1341 listener.blockForDone(); 1309 listener.blockForDone();
1342 1310
1343 assertNull(listener.mResponseInfo); 1311 assertNull(listener.mResponseInfo);
1344 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", 1312 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ",
1345 listener.mError.getMessage()); 1313 listener.mError.getMessage());
1346 } 1314 }
1347 1315
1348 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , 1316 private void throwOrCancel(FailureType failureType, ResponseStep failureStep ,
1349 boolean expectResponseInfo, boolean expectError) { 1317 boolean expectResponseInfo, boolean expectError) {
1350 TestUrlRequestListener listener = new TestUrlRequestListener(); 1318 TestUrlRequestListener listener = new TestUrlRequestListener();
1351 listener.setFailure(failureType, failureStep); 1319 listener.setFailure(failureType, failureStep);
1352 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1320 UrlRequest.Builder builder = new UrlRequest.Builder(
1353 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 1321 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r());
1354 urlRequest.start(); 1322 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
1355 listener.blockForDone(); 1323 listener.blockForDone();
1356 assertEquals(1, listener.mRedirectCount); 1324 assertEquals(1, listener.mRedirectCount);
1357 assertEquals(listener.mResponseStep, failureStep); 1325 assertEquals(listener.mResponseStep, failureStep);
1358 assertTrue(urlRequest.isDone()); 1326 assertTrue(urlRequest.isDone());
1359 assertEquals(expectResponseInfo, listener.mResponseInfo != null); 1327 assertEquals(expectResponseInfo, listener.mResponseInfo != null);
1360 assertEquals(expectError, listener.mError != null); 1328 assertEquals(expectError, listener.mError != null);
1361 assertEquals(expectError, listener.mOnErrorCalled); 1329 assertEquals(expectError, listener.mOnErrorCalled);
1362 } 1330 }
1363 1331
1364 @SmallTest 1332 @SmallTest
(...skipping 25 matching lines...) Expand all
1390 true, false); 1358 true, false);
1391 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, 1359 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED,
1392 true, true); 1360 true, true);
1393 } 1361 }
1394 1362
1395 @SmallTest 1363 @SmallTest
1396 @Feature({"Cronet"}) 1364 @Feature({"Cronet"})
1397 public void testThrowON_SUCCEEDED() { 1365 public void testThrowON_SUCCEEDED() {
1398 TestUrlRequestListener listener = new TestUrlRequestListener(); 1366 TestUrlRequestListener listener = new TestUrlRequestListener();
1399 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); 1367 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED);
1400 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1368 UrlRequest.Builder builder = new UrlRequest.Builder(
1401 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 1369 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r());
1402 urlRequest.start(); 1370 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
1403 listener.blockForDone(); 1371 listener.blockForDone();
1404 assertEquals(1, listener.mRedirectCount); 1372 assertEquals(1, listener.mRedirectCount);
1405 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); 1373 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED);
1406 assertTrue(urlRequest.isDone()); 1374 assertTrue(urlRequest.isDone());
1407 assertNotNull(listener.mResponseInfo); 1375 assertNotNull(listener.mResponseInfo);
1408 assertNull(listener.mError); 1376 assertNull(listener.mError);
1409 assertFalse(listener.mOnErrorCalled); 1377 assertFalse(listener.mOnErrorCalled);
1410 } 1378 }
1411 1379
1412 @SmallTest 1380 @SmallTest
1413 @Feature({"Cronet"}) 1381 @Feature({"Cronet"})
1414 public void testExecutorShutdown() { 1382 public void testExecutorShutdown() {
1415 TestUrlRequestListener listener = new TestUrlRequestListener(); 1383 TestUrlRequestListener listener = new TestUrlRequestListener();
1416 1384
1417 listener.setAutoAdvance(false); 1385 listener.setAutoAdvance(false);
1386 UrlRequest.Builder builder = new UrlRequest.Builder(
1387 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1418 CronetUrlRequest urlRequest = 1388 CronetUrlRequest urlRequest =
1419 (CronetUrlRequest) mActivity.mUrlRequestContext.createRequest( 1389 (CronetUrlRequest) mActivity.mCronetEngine.executeRequest(builde r);
1420 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1421 urlRequest.start();
1422 listener.waitForNextStep(); 1390 listener.waitForNextStep();
1423 assertFalse(listener.isDone()); 1391 assertFalse(listener.isDone());
1424 assertFalse(urlRequest.isDone()); 1392 assertFalse(urlRequest.isDone());
1425 1393
1426 final ConditionVariable requestDestroyed = new ConditionVariable(false); 1394 final ConditionVariable requestDestroyed = new ConditionVariable(false);
1427 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { 1395 urlRequest.setOnDestroyedCallbackForTests(new Runnable() {
1428 @Override 1396 @Override
1429 public void run() { 1397 public void run() {
1430 requestDestroyed.open(); 1398 requestDestroyed.open();
1431 } 1399 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1463 mByteBuffer = byteBuffer; 1431 mByteBuffer = byteBuffer;
1464 mReadCalled.open(); 1432 mReadCalled.open();
1465 } 1433 }
1466 1434
1467 @Override 1435 @Override
1468 public void rewind(final UploadDataSink uploadDataSink) { 1436 public void rewind(final UploadDataSink uploadDataSink) {
1469 } 1437 }
1470 } 1438 }
1471 1439
1472 TestUrlRequestListener listener = new TestUrlRequestListener(); 1440 TestUrlRequestListener listener = new TestUrlRequestListener();
1473 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 1441 UrlRequest.Builder builder = new UrlRequest.Builder(
1474 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); 1442 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r());
1475 1443
1476 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); 1444 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor();
1477 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ; 1445 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ;
1478 urlRequest.setUploadDataProvider(dataProvider, uploadExecutor); 1446 builder.setUploadDataProvider(dataProvider, uploadExecutor);
1479 urlRequest.addHeader("Content-Type", "useless/string"); 1447 builder.addHeader("Content-Type", "useless/string");
1480 urlRequest.start(); 1448 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder);
1481 // Wait for read to be called on executor. 1449 // Wait for read to be called on executor.
1482 dataProvider.mReadCalled.block(); 1450 dataProvider.mReadCalled.block();
1483 // Shutdown the executor, so posting next task will throw an exception. 1451 // Shutdown the executor, so posting next task will throw an exception.
1484 uploadExecutor.shutdown(); 1452 uploadExecutor.shutdown();
1485 // Continue the upload. 1453 // Continue the upload.
1486 dataProvider.mByteBuffer.putInt(42); 1454 dataProvider.mByteBuffer.putInt(42);
1487 dataProvider.mUploadDataSink.onReadSucceeded(false); 1455 dataProvider.mUploadDataSink.onReadSucceeded(false);
1488 // Listener.onFailed will be called on request executor even though uplo ad 1456 // Listener.onFailed will be called on request executor even though uplo ad
1489 // executor is shutdown. 1457 // executor is shutdown.
1490 listener.blockForDone(); 1458 listener.blockForDone();
1491 assertTrue(listener.isDone()); 1459 assertTrue(listener.isDone());
1492 assertTrue(listener.mOnErrorCalled); 1460 assertTrue(listener.mOnErrorCalled);
1493 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1461 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1494 assertTrue(urlRequest.isDone()); 1462 assertTrue(urlRequest.isDone());
1495 } 1463 }
1496 1464
1497 // Returns the contents of byteBuffer, from its position() to its limit(), 1465 // Returns the contents of byteBuffer, from its position() to its limit(),
1498 // as a String. Does not modify byteBuffer's position(). 1466 // as a String. Does not modify byteBuffer's position().
1499 private String bufferContentsToString(ByteBuffer byteBuffer, int start, 1467 private String bufferContentsToString(ByteBuffer byteBuffer, int start,
1500 int end) { 1468 int end) {
1501 // Use a duplicate to avoid modifying byteBuffer. 1469 // Use a duplicate to avoid modifying byteBuffer.
1502 ByteBuffer duplicate = byteBuffer.duplicate(); 1470 ByteBuffer duplicate = byteBuffer.duplicate();
1503 duplicate.position(start); 1471 duplicate.position(start);
1504 duplicate.limit(end); 1472 duplicate.limit(end);
1505 byte[] contents = new byte[duplicate.remaining()]; 1473 byte[] contents = new byte[duplicate.remaining()];
1506 duplicate.get(contents); 1474 duplicate.get(contents);
1507 return new String(contents); 1475 return new String(contents);
1508 } 1476 }
1509 } 1477 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698