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

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

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Rebase & Conflict Resolution Created 4 years, 1 month 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.os.StrictMode; 8 import android.os.StrictMode;
9 import android.test.MoreAsserts; 9 import android.test.MoreAsserts;
10 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 @Override 52 @Override
53 protected void tearDown() throws Exception { 53 protected void tearDown() throws Exception {
54 NativeTestServer.shutdownNativeTestServer(); 54 NativeTestServer.shutdownNativeTestServer();
55 mTestFramework.mCronetEngine.shutdown(); 55 mTestFramework.mCronetEngine.shutdown();
56 super.tearDown(); 56 super.tearDown();
57 } 57 }
58 58
59 private TestUrlRequestCallback startAndWaitForComplete(String url) throws Ex ception { 59 private TestUrlRequestCallback startAndWaitForComplete(String url) throws Ex ception {
60 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 60 TestUrlRequestCallback callback = new TestUrlRequestCallback();
61 // Create request. 61 // Create request.
62 UrlRequest.Builder builder = new UrlRequest.Builder( 62 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
63 url, callback, callback.getExecutor(), mTestFramework.mCronetEng ine); 63 url, callback, callback.getExecutor());
64 UrlRequest urlRequest = builder.build(); 64 UrlRequest urlRequest = builder.build();
65 urlRequest.start(); 65 urlRequest.start();
66 callback.blockForDone(); 66 callback.blockForDone();
67 // Wait for all posted tasks to be executed to ensure there is no unhand led exception. 67 // Wait for all posted tasks to be executed to ensure there is no unhand led exception.
68 callback.shutdownExecutorAndWait(); 68 callback.shutdownExecutorAndWait();
69 assertTrue(urlRequest.isDone()); 69 assertTrue(urlRequest.isDone());
70 return callback; 70 return callback;
71 } 71 }
72 72
73 private void checkResponseInfo(UrlResponseInfo responseInfo, String expected Url, 73 private void checkResponseInfo(UrlResponseInfo responseInfo, String expected Url,
(...skipping 14 matching lines...) Expand all
88 List<String> header = responseHeaders.get(headerName); 88 List<String> header = responseHeaders.get(headerName);
89 assertNotNull(header); 89 assertNotNull(header);
90 assertTrue(header.contains(headerValue)); 90 assertTrue(header.contains(headerValue));
91 } 91 }
92 92
93 @SmallTest 93 @SmallTest
94 @Feature({"Cronet"}) 94 @Feature({"Cronet"})
95 public void testBuilderChecks() throws Exception { 95 public void testBuilderChecks() throws Exception {
96 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 96 TestUrlRequestCallback callback = new TestUrlRequestCallback();
97 try { 97 try {
98 new UrlRequest.Builder( 98 mTestFramework.mCronetEngine.newUrlRequestBuilder(
99 null, callback, callback.getExecutor(), mTestFramework.mCron etEngine); 99 null, callback, callback.getExecutor());
100 fail("URL not null-checked"); 100 fail("URL not null-checked");
101 } catch (NullPointerException e) { 101 } catch (NullPointerException e) {
102 assertEquals("URL is required.", e.getMessage()); 102 assertEquals("URL is required.", e.getMessage());
103 } 103 }
104 try { 104 try {
105 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), null, call back.getExecutor(), 105 mTestFramework.mCronetEngine.newUrlRequestBuilder(
106 mTestFramework.mCronetEngine); 106 NativeTestServer.getRedirectURL(), null, callback.getExecuto r());
107 fail("Callback not null-checked"); 107 fail("Callback not null-checked");
108 } catch (NullPointerException e) { 108 } catch (NullPointerException e) {
109 assertEquals("Callback is required.", e.getMessage()); 109 assertEquals("Callback is required.", e.getMessage());
110 } 110 }
111 try { 111 try {
112 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), callback, null, 112 mTestFramework.mCronetEngine.newUrlRequestBuilder(
113 mTestFramework.mCronetEngine); 113 NativeTestServer.getRedirectURL(), callback, null);
114 fail("Executor not null-checked"); 114 fail("Executor not null-checked");
115 } catch (NullPointerException e) { 115 } catch (NullPointerException e) {
116 assertEquals("Executor is required.", e.getMessage()); 116 assertEquals("Executor is required.", e.getMessage());
117 } 117 }
118 try {
119 new UrlRequest.Builder(
120 NativeTestServer.getRedirectURL(), callback, callback.getExe cutor(), null);
121 fail("CronetEngine not null-checked");
122 } catch (NullPointerException e) {
123 assertEquals("CronetEngine is required.", e.getMessage());
124 }
125 // Verify successful creation doesn't throw. 118 // Verify successful creation doesn't throw.
126 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), callback, call back.getExecutor(), 119 mTestFramework.mCronetEngine.newUrlRequestBuilder(
127 mTestFramework.mCronetEngine); 120 NativeTestServer.getRedirectURL(), callback, callback.getExecuto r());
128 } 121 }
129 122
130 @SmallTest 123 @SmallTest
131 @Feature({"Cronet"}) 124 @Feature({"Cronet"})
132 public void testSimpleGet() throws Exception { 125 public void testSimpleGet() throws Exception {
133 String url = NativeTestServer.getEchoMethodURL(); 126 String url = NativeTestServer.getEchoMethodURL();
134 TestUrlRequestCallback callback = startAndWaitForComplete(url); 127 TestUrlRequestCallback callback = startAndWaitForComplete(url);
135 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 128 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
136 // Default method is 'GET'. 129 // Default method is 'GET'.
137 assertEquals("GET", callback.mResponseAsString); 130 assertEquals("GET", callback.mResponseAsString);
(...skipping 17 matching lines...) Expand all
155 unknown.setReceivedBytesCount(receivedBytes); 148 unknown.setReceivedBytesCount(receivedBytes);
156 return unknown; 149 return unknown;
157 } 150 }
158 151
159 void runConnectionMigrationTest(boolean disableConnectionMigration) { 152 void runConnectionMigrationTest(boolean disableConnectionMigration) {
160 // URLRequest load flags at net/base/load_flags_list.h. 153 // URLRequest load flags at net/base/load_flags_list.h.
161 int connectionMigrationLoadFlag = 1 << 18; 154 int connectionMigrationLoadFlag = 1 << 18;
162 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 155 TestUrlRequestCallback callback = new TestUrlRequestCallback();
163 callback.setAutoAdvance(false); 156 callback.setAutoAdvance(false);
164 // Create builder, start a request, and check if default load_flags are set correctly. 157 // Create builder, start a request, and check if default load_flags are set correctly.
165 UrlRequest.Builder builder = 158 ExperimentalUrlRequest.Builder builder =
166 new UrlRequest.Builder(NativeTestServer.getFileURL("/success.txt "), callback, 159 (ExperimentalUrlRequest.Builder) mTestFramework.mCronetEngine.ne wUrlRequestBuilder(
167 callback.getExecutor(), mTestFramework.mCronetEngine); 160 NativeTestServer.getFileURL("/success.txt"), callback,
161 callback.getExecutor());
168 // Disable connection migration. 162 // Disable connection migration.
169 if (disableConnectionMigration) builder.disableConnectionMigration(); 163 if (disableConnectionMigration) builder.disableConnectionMigration();
170 UrlRequest urlRequest = builder.build(); 164 UrlRequest urlRequest = builder.build();
171 urlRequest.start(); 165 urlRequest.start();
172 callback.waitForNextStep(); 166 callback.waitForNextStep();
173 int loadFlags = CronetTestUtil.getLoadFlags(urlRequest); 167 int loadFlags = CronetTestUtil.getLoadFlags(urlRequest);
174 if (disableConnectionMigration) { 168 if (disableConnectionMigration) {
175 assertEquals(connectionMigrationLoadFlag, loadFlags & connectionMigr ationLoadFlag); 169 assertEquals(connectionMigrationLoadFlag, loadFlags & connectionMigr ationLoadFlag);
176 } else { 170 } else {
177 assertEquals(0, loadFlags & connectionMigrationLoadFlag); 171 assertEquals(0, loadFlags & connectionMigrationLoadFlag);
(...skipping 18 matching lines...) Expand all
196 * Tests a redirect by running it step-by-step. Also tests that delaying a 190 * Tests a redirect by running it step-by-step. Also tests that delaying a
197 * request works as expected. To make sure there are no unexpected pending 191 * request works as expected. To make sure there are no unexpected pending
198 * messages, does a GET between UrlRequest.Callback callbacks. 192 * messages, does a GET between UrlRequest.Callback callbacks.
199 */ 193 */
200 @SmallTest 194 @SmallTest
201 @Feature({"Cronet"}) 195 @Feature({"Cronet"})
202 public void testRedirectAsync() throws Exception { 196 public void testRedirectAsync() throws Exception {
203 // Start the request and wait to see the redirect. 197 // Start the request and wait to see the redirect.
204 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 198 TestUrlRequestCallback callback = new TestUrlRequestCallback();
205 callback.setAutoAdvance(false); 199 callback.setAutoAdvance(false);
206 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(), 200 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
207 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 201 NativeTestServer.getRedirectURL(), callback, callback.getExecuto r());
208 UrlRequest urlRequest = builder.build(); 202 UrlRequest urlRequest = builder.build();
209 urlRequest.start(); 203 urlRequest.start();
210 callback.waitForNextStep(); 204 callback.waitForNextStep();
211 205
212 // Check the redirect. 206 // Check the redirect.
213 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, callback.mResponseStep); 207 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, callback.mResponseStep);
214 assertEquals(1, callback.mRedirectResponseInfoList.size()); 208 assertEquals(1, callback.mRedirectResponseInfoList.size());
215 checkResponseInfo(callback.mRedirectResponseInfoList.get(0), 209 checkResponseInfo(callback.mRedirectResponseInfoList.get(0),
216 NativeTestServer.getRedirectURL(), 302, "Found"); 210 NativeTestServer.getRedirectURL(), 302, "Found");
217 assertEquals(1, callback.mRedirectResponseInfoList.get(0).getUrlChain(). size()); 211 assertEquals(1, callback.mRedirectResponseInfoList.get(0).getUrlChain(). size());
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 318 }
325 319
326 @Override 320 @Override
327 public void onCanceled(UrlRequest request, UrlResponseInfo info) { 321 public void onCanceled(UrlRequest request, UrlResponseInfo info) {
328 assertEquals(1, mRedirectCount); 322 assertEquals(1, mRedirectCount);
329 failedExpectation.compareAndSet(false, 1 != mRedirectCount); 323 failedExpectation.compareAndSet(false, 1 != mRedirectCount);
330 super.onCanceled(request, info); 324 super.onCanceled(request, info);
331 } 325 }
332 }; 326 };
333 327
334 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get MultiRedirectURL(), 328 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
335 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 329 NativeTestServer.getMultiRedirectURL(), callback, callback.getEx ecutor());
336 330
337 final UrlRequest urlRequest = builder.build(); 331 final UrlRequest urlRequest = builder.build();
338 urlRequest.start(); 332 urlRequest.start();
339 callback.blockForDone(); 333 callback.blockForDone();
340 assertFalse(failedExpectation.get()); 334 assertFalse(failedExpectation.get());
341 // Check that only one redirect is received. 335 // Check that only one redirect is received.
342 assertEquals(1, callback.mRedirectCount); 336 assertEquals(1, callback.mRedirectCount);
343 // Check that onCanceled is called. 337 // Check that onCanceled is called.
344 assertTrue(callback.mOnCanceledCalled); 338 assertTrue(callback.mOnCanceledCalled);
345 } 339 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 // onFailed messages. This test relies on checks in 374 // onFailed messages. This test relies on checks in
381 // TestUrlRequestCallback catching a second onFailed call. 375 // TestUrlRequestCallback catching a second onFailed call.
382 testSimpleGet(); 376 testSimpleGet();
383 } 377 }
384 378
385 @SmallTest 379 @SmallTest
386 @Feature({"Cronet"}) 380 @Feature({"Cronet"})
387 public void testSetHttpMethod() throws Exception { 381 public void testSetHttpMethod() throws Exception {
388 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 382 TestUrlRequestCallback callback = new TestUrlRequestCallback();
389 String methodName = "HEAD"; 383 String methodName = "HEAD";
390 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 384 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
391 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 385 NativeTestServer.getEchoMethodURL(), callback, callback.getExecu tor());
392 // Try to set 'null' method. 386 // Try to set 'null' method.
393 try { 387 try {
394 builder.setHttpMethod(null); 388 builder.setHttpMethod(null);
395 fail("Exception not thrown"); 389 fail("Exception not thrown");
396 } catch (NullPointerException e) { 390 } catch (NullPointerException e) {
397 assertEquals("Method is required.", e.getMessage()); 391 assertEquals("Method is required.", e.getMessage());
398 } 392 }
399 393
400 builder.setHttpMethod(methodName); 394 builder.setHttpMethod(methodName);
401 builder.build().start(); 395 builder.build().start();
402 callback.blockForDone(); 396 callback.blockForDone();
403 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 397 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
404 assertEquals(0, callback.mHttpResponseDataLength); 398 assertEquals(0, callback.mHttpResponseDataLength);
405 } 399 }
406 400
407 @SmallTest 401 @SmallTest
408 @Feature({"Cronet"}) 402 @Feature({"Cronet"})
409 public void testBadMethod() throws Exception { 403 public void testBadMethod() throws Exception {
410 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 404 TestUrlRequestCallback callback = new TestUrlRequestCallback();
411 UrlRequest.Builder builder = new UrlRequest.Builder( 405 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
412 TEST_URL, callback, callback.getExecutor(), mTestFramework.mCron etEngine); 406 TEST_URL, callback, callback.getExecutor());
413 try { 407 try {
414 builder.setHttpMethod("bad:method!"); 408 builder.setHttpMethod("bad:method!");
415 builder.build().start(); 409 builder.build().start();
416 fail("IllegalArgumentException not thrown."); 410 fail("IllegalArgumentException not thrown.");
417 } catch (IllegalArgumentException e) { 411 } catch (IllegalArgumentException e) {
418 assertEquals("Invalid http method bad:method!", 412 assertEquals("Invalid http method bad:method!",
419 e.getMessage()); 413 e.getMessage());
420 } 414 }
421 } 415 }
422 416
423 @SmallTest 417 @SmallTest
424 @Feature({"Cronet"}) 418 @Feature({"Cronet"})
425 public void testBadHeaderName() throws Exception { 419 public void testBadHeaderName() throws Exception {
426 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 420 TestUrlRequestCallback callback = new TestUrlRequestCallback();
427 UrlRequest.Builder builder = new UrlRequest.Builder( 421 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
428 TEST_URL, callback, callback.getExecutor(), mTestFramework.mCron etEngine); 422 TEST_URL, callback, callback.getExecutor());
429 try { 423 try {
430 builder.addHeader("header:name", "headervalue"); 424 builder.addHeader("header:name", "headervalue");
431 builder.build().start(); 425 builder.build().start();
432 fail("IllegalArgumentException not thrown."); 426 fail("IllegalArgumentException not thrown.");
433 } catch (IllegalArgumentException e) { 427 } catch (IllegalArgumentException e) {
434 assertEquals("Invalid header header:name=headervalue", 428 assertEquals("Invalid header header:name=headervalue",
435 e.getMessage()); 429 e.getMessage());
436 } 430 }
437 } 431 }
438 432
439 @SmallTest 433 @SmallTest
440 @Feature({"Cronet"}) 434 @Feature({"Cronet"})
441 public void testAcceptEncodingIgnored() throws Exception { 435 public void testAcceptEncodingIgnored() throws Exception {
442 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 436 TestUrlRequestCallback callback = new TestUrlRequestCallback();
443 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoAllHeadersURL(), 437 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
444 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 438 NativeTestServer.getEchoAllHeadersURL(), callback, callback.getE xecutor());
445 // This line should eventually throw an exception, once callers have mig rated 439 // This line should eventually throw an exception, once callers have mig rated
446 builder.addHeader("accept-encoding", "foozip"); 440 builder.addHeader("accept-encoding", "foozip");
447 builder.build().start(); 441 builder.build().start();
448 callback.blockForDone(); 442 callback.blockForDone();
449 assertFalse(callback.mResponseAsString.contains("foozip")); 443 assertFalse(callback.mResponseAsString.contains("foozip"));
450 } 444 }
451 445
452 @SmallTest 446 @SmallTest
453 @Feature({"Cronet"}) 447 @Feature({"Cronet"})
454 public void testBadHeaderValue() throws Exception { 448 public void testBadHeaderValue() throws Exception {
455 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 449 TestUrlRequestCallback callback = new TestUrlRequestCallback();
456 UrlRequest.Builder builder = new UrlRequest.Builder( 450 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
457 TEST_URL, callback, callback.getExecutor(), mTestFramework.mCron etEngine); 451 TEST_URL, callback, callback.getExecutor());
458 try { 452 try {
459 builder.addHeader("headername", "bad header\r\nvalue"); 453 builder.addHeader("headername", "bad header\r\nvalue");
460 builder.build().start(); 454 builder.build().start();
461 fail("IllegalArgumentException not thrown."); 455 fail("IllegalArgumentException not thrown.");
462 } catch (IllegalArgumentException e) { 456 } catch (IllegalArgumentException e) {
463 assertEquals("Invalid header headername=bad header\r\nvalue", 457 assertEquals("Invalid header headername=bad header\r\nvalue",
464 e.getMessage()); 458 e.getMessage());
465 } 459 }
466 } 460 }
467 461
468 @SmallTest 462 @SmallTest
469 @Feature({"Cronet"}) 463 @Feature({"Cronet"})
470 public void testAddHeader() throws Exception { 464 public void testAddHeader() throws Exception {
471 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 465 TestUrlRequestCallback callback = new TestUrlRequestCallback();
472 String headerName = "header-name"; 466 String headerName = "header-name";
473 String headerValue = "header-value"; 467 String headerValue = "header-value";
474 UrlRequest.Builder builder = 468 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
475 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), callback, 469 NativeTestServer.getEchoHeaderURL(headerName), callback, callbac k.getExecutor());
476 callback.getExecutor(), mTestFramework.mCronetEngine);
477 470
478 builder.addHeader(headerName, headerValue); 471 builder.addHeader(headerName, headerValue);
479 builder.build().start(); 472 builder.build().start();
480 callback.blockForDone(); 473 callback.blockForDone();
481 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 474 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
482 assertEquals(headerValue, callback.mResponseAsString); 475 assertEquals(headerValue, callback.mResponseAsString);
483 } 476 }
484 477
485 @SmallTest 478 @SmallTest
486 @Feature({"Cronet"}) 479 @Feature({"Cronet"})
487 public void testMultiRequestHeaders() throws Exception { 480 public void testMultiRequestHeaders() throws Exception {
488 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 481 TestUrlRequestCallback callback = new TestUrlRequestCallback();
489 String headerName = "header-name"; 482 String headerName = "header-name";
490 String headerValue1 = "header-value1"; 483 String headerValue1 = "header-value1";
491 String headerValue2 = "header-value2"; 484 String headerValue2 = "header-value2";
492 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoAllHeadersURL(), 485 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
493 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 486 NativeTestServer.getEchoAllHeadersURL(), callback, callback.getE xecutor());
494 builder.addHeader(headerName, headerValue1); 487 builder.addHeader(headerName, headerValue1);
495 builder.addHeader(headerName, headerValue2); 488 builder.addHeader(headerName, headerValue2);
496 builder.build().start(); 489 builder.build().start();
497 callback.blockForDone(); 490 callback.blockForDone();
498 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 491 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
499 String headers = callback.mResponseAsString; 492 String headers = callback.mResponseAsString;
500 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); 493 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n");
501 Matcher matcher = pattern.matcher(headers); 494 Matcher matcher = pattern.matcher(headers);
502 List<String> actualValues = new ArrayList<String>(); 495 List<String> actualValues = new ArrayList<String>();
503 while (matcher.find()) { 496 while (matcher.find()) {
504 actualValues.add(matcher.group(1)); 497 actualValues.add(matcher.group(1));
505 } 498 }
506 assertEquals(1, actualValues.size()); 499 assertEquals(1, actualValues.size());
507 assertEquals("header-value2", actualValues.get(0)); 500 assertEquals("header-value2", actualValues.get(0));
508 } 501 }
509 502
510 @SmallTest 503 @SmallTest
511 @Feature({"Cronet"}) 504 @Feature({"Cronet"})
512 public void testCustomUserAgent() throws Exception { 505 public void testCustomUserAgent() throws Exception {
513 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 506 TestUrlRequestCallback callback = new TestUrlRequestCallback();
514 String userAgentName = "User-Agent"; 507 String userAgentName = "User-Agent";
515 String userAgentValue = "User-Agent-Value"; 508 String userAgentValue = "User-Agent-Value";
516 UrlRequest.Builder builder = 509 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
517 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), callback, 510 NativeTestServer.getEchoHeaderURL(userAgentName), callback, call back.getExecutor());
518 callback.getExecutor(), mTestFramework.mCronetEngine);
519 builder.addHeader(userAgentName, userAgentValue); 511 builder.addHeader(userAgentName, userAgentValue);
520 builder.build().start(); 512 builder.build().start();
521 callback.blockForDone(); 513 callback.blockForDone();
522 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 514 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
523 assertEquals(userAgentValue, callback.mResponseAsString); 515 assertEquals(userAgentValue, callback.mResponseAsString);
524 } 516 }
525 517
526 @SmallTest 518 @SmallTest
527 @Feature({"Cronet"}) 519 @Feature({"Cronet"})
528 public void testDefaultUserAgent() throws Exception { 520 public void testDefaultUserAgent() throws Exception {
529 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 521 TestUrlRequestCallback callback = new TestUrlRequestCallback();
530 String headerName = "User-Agent"; 522 String headerName = "User-Agent";
531 UrlRequest.Builder builder = 523 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
532 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), callback, 524 NativeTestServer.getEchoHeaderURL(headerName), callback, callbac k.getExecutor());
533 callback.getExecutor(), mTestFramework.mCronetEngine);
534 builder.build().start(); 525 builder.build().start();
535 callback.blockForDone(); 526 callback.blockForDone();
536 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 527 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
537 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " 528 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is "
538 + callback.mResponseAsString, 529 + callback.mResponseAsString,
539 Pattern.matches( 530 Pattern.matches(
540 ".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", callback.mRespon seAsString)); 531 ".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", callback.mRespon seAsString));
541 } 532 }
542 533
543 @SmallTest 534 @SmallTest
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 MockUrlRequestJobFactory.getMockUrlForClientCertificateRequest() ); 669 MockUrlRequestJobFactory.getMockUrlForClientCertificateRequest() );
679 assertNotNull(callback.mResponseInfo); 670 assertNotNull(callback.mResponseInfo);
680 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 671 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
681 assertEquals("data", callback.mResponseAsString); 672 assertEquals("data", callback.mResponseAsString);
682 assertEquals(0, callback.mRedirectCount); 673 assertEquals(0, callback.mRedirectCount);
683 assertNull(callback.mError); 674 assertNull(callback.mError);
684 assertFalse(callback.mOnErrorCalled); 675 assertFalse(callback.mOnErrorCalled);
685 } 676 }
686 677
687 /** 678 /**
688 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai led}. 679 * Tests that an SSL cert error will be reported via {@link UrlRequest.Callb ack#onFailed}.
689 */ 680 */
690 @SmallTest 681 @SmallTest
691 @Feature({"Cronet"}) 682 @Feature({"Cronet"})
692 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 683 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
693 public void testMockSSLCertificateError() throws Exception { 684 public void testMockSSLCertificateError() throws Exception {
694 TestUrlRequestCallback callback = startAndWaitForComplete( 685 TestUrlRequestCallback callback = startAndWaitForComplete(
695 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); 686 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError());
696 assertNull(callback.mResponseInfo); 687 assertNull(callback.mResponseInfo);
697 assertNotNull(callback.mError); 688 assertNotNull(callback.mError);
698 assertTrue(callback.mOnErrorCalled); 689 assertTrue(callback.mOnErrorCalled);
699 assertEquals(-201, callback.mError.getCronetInternalErrorCode()); 690 assertEquals(-201, callback.mError.getCronetInternalErrorCode());
700 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" , 691 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" ,
701 callback.mError.getMessage()); 692 callback.mError.getMessage());
702 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); 693 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
703 } 694 }
704 695
705 /** 696 /**
706 * Checks that the buffer is updated correctly, when starting at an offset. 697 * Checks that the buffer is updated correctly, when starting at an offset.
707 */ 698 */
708 @SmallTest 699 @SmallTest
709 @Feature({"Cronet"}) 700 @Feature({"Cronet"})
710 public void testSimpleGetBufferUpdates() throws Exception { 701 public void testSimpleGetBufferUpdates() throws Exception {
711 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 702 TestUrlRequestCallback callback = new TestUrlRequestCallback();
712 callback.setAutoAdvance(false); 703 callback.setAutoAdvance(false);
713 // Since the default method is "GET", the expected response body is also 704 // Since the default method is "GET", the expected response body is also
714 // "GET". 705 // "GET".
715 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 706 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
716 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 707 NativeTestServer.getEchoMethodURL(), callback, callback.getExecu tor());
717 UrlRequest urlRequest = builder.build(); 708 UrlRequest urlRequest = builder.build();
718 urlRequest.start(); 709 urlRequest.start();
719 callback.waitForNextStep(); 710 callback.waitForNextStep();
720 711
721 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 712 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
722 readBuffer.put("FOR".getBytes()); 713 readBuffer.put("FOR".getBytes());
723 assertEquals(3, readBuffer.position()); 714 assertEquals(3, readBuffer.position());
724 715
725 // Read first two characters of the response ("GE"). It's theoretically 716 // Read first two characters of the response ("GE"). It's theoretically
726 // possible to need one read per character, though in practice, 717 // possible to need one read per character, though in practice,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 // Make sure there are no other pending messages, which would trigger 778 // Make sure there are no other pending messages, which would trigger
788 // asserts in TestUrlRequestCallback. 779 // asserts in TestUrlRequestCallback.
789 testSimpleGet(); 780 testSimpleGet();
790 } 781 }
791 782
792 @SmallTest 783 @SmallTest
793 @Feature({"Cronet"}) 784 @Feature({"Cronet"})
794 public void testBadBuffers() throws Exception { 785 public void testBadBuffers() throws Exception {
795 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 786 TestUrlRequestCallback callback = new TestUrlRequestCallback();
796 callback.setAutoAdvance(false); 787 callback.setAutoAdvance(false);
797 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 788 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
798 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 789 NativeTestServer.getEchoMethodURL(), callback, callback.getExecu tor());
799 UrlRequest urlRequest = builder.build(); 790 UrlRequest urlRequest = builder.build();
800 urlRequest.start(); 791 urlRequest.start();
801 callback.waitForNextStep(); 792 callback.waitForNextStep();
802 793
803 // Try to read using a full buffer. 794 // Try to read using a full buffer.
804 try { 795 try {
805 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); 796 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4);
806 readBuffer.put("full".getBytes()); 797 readBuffer.put("full".getBytes());
807 urlRequest.read(readBuffer); 798 urlRequest.read(readBuffer);
808 fail("Exception not thrown"); 799 fail("Exception not thrown");
(...skipping 20 matching lines...) Expand all
829 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 820 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
830 assertEquals("GET", callback.mResponseAsString); 821 assertEquals("GET", callback.mResponseAsString);
831 } 822 }
832 823
833 @SmallTest 824 @SmallTest
834 @Feature({"Cronet"}) 825 @Feature({"Cronet"})
835 public void testNoIoInCancel() throws Exception { 826 public void testNoIoInCancel() throws Exception {
836 final TestUrlRequestCallback callback = new TestUrlRequestCallback(); 827 final TestUrlRequestCallback callback = new TestUrlRequestCallback();
837 callback.setAutoAdvance(false); 828 callback.setAutoAdvance(false);
838 final UrlRequest urlRequest = 829 final UrlRequest urlRequest =
839 new UrlRequest 830 mTestFramework.mCronetEngine
840 .Builder(NativeTestServer.getEchoHeaderURL("blah-header" ), callback, 831 .newUrlRequestBuilder(NativeTestServer.getEchoHeaderURL( "blah-header"),
841 callback.getExecutor(), mTestFramework.mCronetEn gine) 832 callback, callback.getExecutor())
842 .addHeader("blah-header", "blahblahblah") 833 .addHeader("blah-header", "blahblahblah")
843 .build(); 834 .build();
844 urlRequest.start(); 835 urlRequest.start();
845 callback.waitForNextStep(); 836 callback.waitForNextStep();
846 callback.startNextRead(urlRequest, ByteBuffer.allocateDirect(4)); 837 callback.startNextRead(urlRequest, ByteBuffer.allocateDirect(4));
847 callback.waitForNextStep(); 838 callback.waitForNextStep();
848 StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy(); 839 StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy();
849 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 840 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
850 .detectAll() 841 .detectAll()
851 .penaltyDeath() 842 .penaltyDeath()
852 .penaltyLog() 843 .penaltyLog()
853 .build()); 844 .build());
854 try { 845 try {
855 urlRequest.cancel(); 846 urlRequest.cancel();
856 } finally { 847 } finally {
857 StrictMode.setThreadPolicy(oldPolicy); 848 StrictMode.setThreadPolicy(oldPolicy);
858 } 849 }
859 callback.blockForDone(); 850 callback.blockForDone();
860 assertEquals(true, callback.mOnCanceledCalled); 851 assertEquals(true, callback.mOnCanceledCalled);
861 } 852 }
862 853
863 @SmallTest 854 @SmallTest
864 @Feature({"Cronet"}) 855 @Feature({"Cronet"})
865 public void testUnexpectedReads() throws Exception { 856 public void testUnexpectedReads() throws Exception {
866 final TestUrlRequestCallback callback = new TestUrlRequestCallback(); 857 final TestUrlRequestCallback callback = new TestUrlRequestCallback();
867 callback.setAutoAdvance(false); 858 callback.setAutoAdvance(false);
868 final UrlRequest urlRequest = 859 final UrlRequest urlRequest =
869 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), callba ck, 860 mTestFramework.mCronetEngine
870 callback.getExecutor(), mTestFramework.mCr onetEngine) 861 .newUrlRequestBuilder(
862 NativeTestServer.getRedirectURL(), callback, cal lback.getExecutor())
871 .build(); 863 .build();
872 864
873 // Try to read before starting request. 865 // Try to read before starting request.
874 try { 866 try {
875 callback.startNextRead(urlRequest); 867 callback.startNextRead(urlRequest);
876 fail("Exception not thrown"); 868 fail("Exception not thrown");
877 } catch (IllegalStateException e) { 869 } catch (IllegalStateException e) {
878 } 870 }
879 871
880 // Verify reading right after start throws an assertion. Both must be 872 // Verify reading right after start throws an assertion. Both must be
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 } catch (IllegalStateException e) { 926 } catch (IllegalStateException e) {
935 } 927 }
936 } 928 }
937 929
938 @SmallTest 930 @SmallTest
939 @Feature({"Cronet"}) 931 @Feature({"Cronet"})
940 public void testUnexpectedFollowRedirects() throws Exception { 932 public void testUnexpectedFollowRedirects() throws Exception {
941 final TestUrlRequestCallback callback = new TestUrlRequestCallback(); 933 final TestUrlRequestCallback callback = new TestUrlRequestCallback();
942 callback.setAutoAdvance(false); 934 callback.setAutoAdvance(false);
943 final UrlRequest urlRequest = 935 final UrlRequest urlRequest =
944 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), callba ck, 936 mTestFramework.mCronetEngine
945 callback.getExecutor(), mTestFramework.mCr onetEngine) 937 .newUrlRequestBuilder(
938 NativeTestServer.getRedirectURL(), callback, cal lback.getExecutor())
946 .build(); 939 .build();
947 940
948 // Try to follow a redirect before starting the request. 941 // Try to follow a redirect before starting the request.
949 try { 942 try {
950 urlRequest.followRedirect(); 943 urlRequest.followRedirect();
951 fail("Exception not thrown"); 944 fail("Exception not thrown");
952 } catch (IllegalStateException e) { 945 } catch (IllegalStateException e) {
953 } 946 }
954 947
955 // Try to follow a redirect just after starting the request. Has to be 948 // Try to follow a redirect just after starting the request. Has to be
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 urlRequest.followRedirect(); 998 urlRequest.followRedirect();
1006 fail("Exception not thrown"); 999 fail("Exception not thrown");
1007 } catch (IllegalStateException e) { 1000 } catch (IllegalStateException e) {
1008 } 1001 }
1009 } 1002 }
1010 1003
1011 @SmallTest 1004 @SmallTest
1012 @Feature({"Cronet"}) 1005 @Feature({"Cronet"})
1013 public void testUploadSetDataProvider() throws Exception { 1006 public void testUploadSetDataProvider() throws Exception {
1014 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1007 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1015 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1008 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1016 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1009 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1017 1010
1018 try { 1011 try {
1019 builder.setUploadDataProvider(null, callback.getExecutor()); 1012 builder.setUploadDataProvider(null, callback.getExecutor());
1020 fail("Exception not thrown"); 1013 fail("Exception not thrown");
1021 } catch (NullPointerException e) { 1014 } catch (NullPointerException e) {
1022 assertEquals("Invalid UploadDataProvider.", e.getMessage()); 1015 assertEquals("Invalid UploadDataProvider.", e.getMessage());
1023 } 1016 }
1024 1017
1025 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1018 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1026 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1019 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1027 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1020 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1028 try { 1021 try {
1029 builder.build().start(); 1022 builder.build().start();
1030 fail("Exception not thrown"); 1023 fail("Exception not thrown");
1031 } catch (IllegalArgumentException e) { 1024 } catch (IllegalArgumentException e) {
1032 } 1025 }
1033 } 1026 }
1034 1027
1035 @SmallTest 1028 @SmallTest
1036 @Feature({"Cronet"}) 1029 @Feature({"Cronet"})
1037 public void testUploadEmptyBodySync() throws Exception { 1030 public void testUploadEmptyBodySync() throws Exception {
1038 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1031 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1039 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1032 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1040 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1033 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1041 1034
1042 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1035 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1043 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1036 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1044 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1037 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1045 builder.addHeader("Content-Type", "useless/string"); 1038 builder.addHeader("Content-Type", "useless/string");
1046 builder.build().start(); 1039 builder.build().start();
1047 callback.blockForDone(); 1040 callback.blockForDone();
1048 1041
1049 assertEquals(0, dataProvider.getUploadedLength()); 1042 assertEquals(0, dataProvider.getUploadedLength());
1050 assertEquals(0, dataProvider.getNumReadCalls()); 1043 assertEquals(0, dataProvider.getNumReadCalls());
1051 assertEquals(0, dataProvider.getNumRewindCalls()); 1044 assertEquals(0, dataProvider.getNumRewindCalls());
1052 1045
1053 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1046 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1054 assertEquals("", callback.mResponseAsString); 1047 assertEquals("", callback.mResponseAsString);
1055 dataProvider.assertClosed(); 1048 dataProvider.assertClosed();
1056 } 1049 }
1057 1050
1058 @SmallTest 1051 @SmallTest
1059 @Feature({"Cronet"}) 1052 @Feature({"Cronet"})
1060 public void testUploadSync() throws Exception { 1053 public void testUploadSync() throws Exception {
1061 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1054 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1062 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1055 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1063 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1056 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1064 1057
1065 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1058 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1066 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1059 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1067 dataProvider.addRead("test".getBytes()); 1060 dataProvider.addRead("test".getBytes());
1068 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1061 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1069 builder.addHeader("Content-Type", "useless/string"); 1062 builder.addHeader("Content-Type", "useless/string");
1070 builder.build().start(); 1063 builder.build().start();
1071 callback.blockForDone(); 1064 callback.blockForDone();
1072 dataProvider.assertClosed(); 1065 dataProvider.assertClosed();
1073 1066
1074 assertEquals(4, dataProvider.getUploadedLength()); 1067 assertEquals(4, dataProvider.getUploadedLength());
1075 assertEquals(1, dataProvider.getNumReadCalls()); 1068 assertEquals(1, dataProvider.getNumReadCalls());
1076 assertEquals(0, dataProvider.getNumRewindCalls()); 1069 assertEquals(0, dataProvider.getNumRewindCalls());
1077 1070
1078 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1071 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1079 assertEquals("test", callback.mResponseAsString); 1072 assertEquals("test", callback.mResponseAsString);
1080 } 1073 }
1081 1074
1082 @SmallTest 1075 @SmallTest
1083 @Feature({"Cronet"}) 1076 @Feature({"Cronet"})
1084 public void testUploadMultiplePiecesSync() throws Exception { 1077 public void testUploadMultiplePiecesSync() throws Exception {
1085 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1078 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1086 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1079 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1087 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1080 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1088 1081
1089 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1082 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1090 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1083 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1091 dataProvider.addRead("Y".getBytes()); 1084 dataProvider.addRead("Y".getBytes());
1092 dataProvider.addRead("et ".getBytes()); 1085 dataProvider.addRead("et ".getBytes());
1093 dataProvider.addRead("another ".getBytes()); 1086 dataProvider.addRead("another ".getBytes());
1094 dataProvider.addRead("test".getBytes()); 1087 dataProvider.addRead("test".getBytes());
1095 1088
1096 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1089 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1097 builder.addHeader("Content-Type", "useless/string"); 1090 builder.addHeader("Content-Type", "useless/string");
1098 builder.build().start(); 1091 builder.build().start();
1099 callback.blockForDone(); 1092 callback.blockForDone();
1100 dataProvider.assertClosed(); 1093 dataProvider.assertClosed();
1101 1094
1102 assertEquals(16, dataProvider.getUploadedLength()); 1095 assertEquals(16, dataProvider.getUploadedLength());
1103 assertEquals(4, dataProvider.getNumReadCalls()); 1096 assertEquals(4, dataProvider.getNumReadCalls());
1104 assertEquals(0, dataProvider.getNumRewindCalls()); 1097 assertEquals(0, dataProvider.getNumRewindCalls());
1105 1098
1106 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1099 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1107 assertEquals("Yet another test", callback.mResponseAsString); 1100 assertEquals("Yet another test", callback.mResponseAsString);
1108 } 1101 }
1109 1102
1110 @SmallTest 1103 @SmallTest
1111 @Feature({"Cronet"}) 1104 @Feature({"Cronet"})
1112 public void testUploadMultiplePiecesAsync() throws Exception { 1105 public void testUploadMultiplePiecesAsync() throws Exception {
1113 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1106 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1114 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1107 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1115 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1108 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1116 1109
1117 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1110 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1118 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor()); 1111 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor());
1119 dataProvider.addRead("Y".getBytes()); 1112 dataProvider.addRead("Y".getBytes());
1120 dataProvider.addRead("et ".getBytes()); 1113 dataProvider.addRead("et ".getBytes());
1121 dataProvider.addRead("another ".getBytes()); 1114 dataProvider.addRead("another ".getBytes());
1122 dataProvider.addRead("test".getBytes()); 1115 dataProvider.addRead("test".getBytes());
1123 1116
1124 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1117 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1125 builder.addHeader("Content-Type", "useless/string"); 1118 builder.addHeader("Content-Type", "useless/string");
1126 builder.build().start(); 1119 builder.build().start();
1127 callback.blockForDone(); 1120 callback.blockForDone();
1128 dataProvider.assertClosed(); 1121 dataProvider.assertClosed();
1129 1122
1130 assertEquals(16, dataProvider.getUploadedLength()); 1123 assertEquals(16, dataProvider.getUploadedLength());
1131 assertEquals(4, dataProvider.getNumReadCalls()); 1124 assertEquals(4, dataProvider.getNumReadCalls());
1132 assertEquals(0, dataProvider.getNumRewindCalls()); 1125 assertEquals(0, dataProvider.getNumRewindCalls());
1133 1126
1134 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1127 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1135 assertEquals("Yet another test", callback.mResponseAsString); 1128 assertEquals("Yet another test", callback.mResponseAsString);
1136 } 1129 }
1137 1130
1138 @SmallTest 1131 @SmallTest
1139 @Feature({"Cronet"}) 1132 @Feature({"Cronet"})
1140 public void testUploadChangesDefaultMethod() throws Exception { 1133 public void testUploadChangesDefaultMethod() throws Exception {
1141 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1134 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1142 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 1135 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1143 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1136 NativeTestServer.getEchoMethodURL(), callback, callback.getExecu tor());
1144 1137
1145 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1138 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1146 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1139 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1147 dataProvider.addRead("test".getBytes()); 1140 dataProvider.addRead("test".getBytes());
1148 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1141 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1149 builder.addHeader("Content-Type", "useless/string"); 1142 builder.addHeader("Content-Type", "useless/string");
1150 builder.build().start(); 1143 builder.build().start();
1151 callback.blockForDone(); 1144 callback.blockForDone();
1152 dataProvider.assertClosed(); 1145 dataProvider.assertClosed();
1153 1146
1154 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1147 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1155 assertEquals("POST", callback.mResponseAsString); 1148 assertEquals("POST", callback.mResponseAsString);
1156 } 1149 }
1157 1150
1158 @SmallTest 1151 @SmallTest
1159 @Feature({"Cronet"}) 1152 @Feature({"Cronet"})
1160 public void testUploadWithSetMethod() throws Exception { 1153 public void testUploadWithSetMethod() throws Exception {
1161 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1154 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1162 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 1155 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1163 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1156 NativeTestServer.getEchoMethodURL(), callback, callback.getExecu tor());
1164 1157
1165 final String method = "PUT"; 1158 final String method = "PUT";
1166 builder.setHttpMethod(method); 1159 builder.setHttpMethod(method);
1167 1160
1168 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1161 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1169 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1162 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1170 dataProvider.addRead("test".getBytes()); 1163 dataProvider.addRead("test".getBytes());
1171 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1164 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1172 builder.addHeader("Content-Type", "useless/string"); 1165 builder.addHeader("Content-Type", "useless/string");
1173 builder.build().start(); 1166 builder.build().start();
1174 callback.blockForDone(); 1167 callback.blockForDone();
1175 dataProvider.assertClosed(); 1168 dataProvider.assertClosed();
1176 1169
1177 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1170 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1178 assertEquals("PUT", callback.mResponseAsString); 1171 assertEquals("PUT", callback.mResponseAsString);
1179 } 1172 }
1180 1173
1181 @SmallTest 1174 @SmallTest
1182 @Feature({"Cronet"}) 1175 @Feature({"Cronet"})
1183 public void testUploadRedirectSync() throws Exception { 1176 public void testUploadRedirectSync() throws Exception {
1184 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1177 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1185 UrlRequest.Builder builder = 1178 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1186 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), callback, 1179 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1187 callback.getExecutor(), mTestFramework.mCronetEngine);
1188 1180
1189 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1181 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1190 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1182 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1191 dataProvider.addRead("test".getBytes()); 1183 dataProvider.addRead("test".getBytes());
1192 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1184 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1193 builder.addHeader("Content-Type", "useless/string"); 1185 builder.addHeader("Content-Type", "useless/string");
1194 builder.build().start(); 1186 builder.build().start();
1195 callback.blockForDone(); 1187 callback.blockForDone();
1196 dataProvider.assertClosed(); 1188 dataProvider.assertClosed();
1197 1189
1198 // 1 read call before the rewind, 1 after. 1190 // 1 read call before the rewind, 1 after.
1199 assertEquals(2, dataProvider.getNumReadCalls()); 1191 assertEquals(2, dataProvider.getNumReadCalls());
1200 assertEquals(1, dataProvider.getNumRewindCalls()); 1192 assertEquals(1, dataProvider.getNumRewindCalls());
1201 1193
1202 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1194 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1203 assertEquals("test", callback.mResponseAsString); 1195 assertEquals("test", callback.mResponseAsString);
1204 } 1196 }
1205 1197
1206 @SmallTest 1198 @SmallTest
1207 @Feature({"Cronet"}) 1199 @Feature({"Cronet"})
1208 public void testUploadRedirectAsync() throws Exception { 1200 public void testUploadRedirectAsync() throws Exception {
1209 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1201 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1210 UrlRequest.Builder builder = 1202 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1211 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), callback, 1203 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1212 callback.getExecutor(), mTestFramework.mCronetEngine);
1213 1204
1214 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1205 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1215 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor()); 1206 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor());
1216 dataProvider.addRead("test".getBytes()); 1207 dataProvider.addRead("test".getBytes());
1217 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1208 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1218 builder.addHeader("Content-Type", "useless/string"); 1209 builder.addHeader("Content-Type", "useless/string");
1219 builder.build().start(); 1210 builder.build().start();
1220 dataProvider.assertClosed(); 1211 dataProvider.assertClosed();
1221 callback.blockForDone(); 1212 callback.blockForDone();
1222 1213
1223 // 1 read call before the rewind, 1 after. 1214 // 1 read call before the rewind, 1 after.
1224 assertEquals(2, dataProvider.getNumReadCalls()); 1215 assertEquals(2, dataProvider.getNumReadCalls());
1225 assertEquals(1, dataProvider.getNumRewindCalls()); 1216 assertEquals(1, dataProvider.getNumRewindCalls());
1226 1217
1227 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1218 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1228 assertEquals("test", callback.mResponseAsString); 1219 assertEquals("test", callback.mResponseAsString);
1229 } 1220 }
1230 1221
1231 @SmallTest 1222 @SmallTest
1232 @Feature({"Cronet"}) 1223 @Feature({"Cronet"})
1233 public void testUploadWithBadLength() throws Exception { 1224 public void testUploadWithBadLength() throws Exception {
1234 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1225 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1235 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1226 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1236 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1227 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1237 1228
1238 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1229 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1239 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()) { 1230 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()) {
1240 @Override 1231 @Override
1241 public long getLength() throws IOException { 1232 public long getLength() throws IOException {
1242 return 1; 1233 return 1;
1243 } 1234 }
1244 1235
1245 @Override 1236 @Override
1246 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe r) 1237 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe r)
(...skipping 11 matching lines...) Expand all
1258 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1249 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1259 assertEquals("Read upload data length 2 exceeds expected length 1", 1250 assertEquals("Read upload data length 2 exceeds expected length 1",
1260 callback.mError.getCause().getMessage()); 1251 callback.mError.getCause().getMessage());
1261 assertEquals(null, callback.mResponseInfo); 1252 assertEquals(null, callback.mResponseInfo);
1262 } 1253 }
1263 1254
1264 @SmallTest 1255 @SmallTest
1265 @Feature({"Cronet"}) 1256 @Feature({"Cronet"})
1266 public void testUploadWithBadLengthBufferAligned() throws Exception { 1257 public void testUploadWithBadLengthBufferAligned() throws Exception {
1267 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1258 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1268 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1259 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1269 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1260 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1270 1261
1271 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1262 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1272 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()) { 1263 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()) {
1273 @Override 1264 @Override
1274 public long getLength() throws IOException { 1265 public long getLength() throws IOException {
1275 return 8191; 1266 return 8191;
1276 } 1267 }
1277 1268
1278 @Override 1269 @Override
1279 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe r) 1270 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe r)
(...skipping 11 matching lines...) Expand all
1291 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1282 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1292 assertEquals("Read upload data length 8192 exceeds expected length 8191" , 1283 assertEquals("Read upload data length 8192 exceeds expected length 8191" ,
1293 callback.mError.getCause().getMessage()); 1284 callback.mError.getCause().getMessage());
1294 assertEquals(null, callback.mResponseInfo); 1285 assertEquals(null, callback.mResponseInfo);
1295 } 1286 }
1296 1287
1297 @SmallTest 1288 @SmallTest
1298 @Feature({"Cronet"}) 1289 @Feature({"Cronet"})
1299 public void testUploadReadFailSync() throws Exception { 1290 public void testUploadReadFailSync() throws Exception {
1300 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1291 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1301 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1292 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1302 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1293 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1303 1294
1304 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1295 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1305 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1296 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1306 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); 1297 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC);
1307 // This will never be read, but if the length is 0, read may never be 1298 // This will never be read, but if the length is 0, read may never be
1308 // called. 1299 // called.
1309 dataProvider.addRead("test".getBytes()); 1300 dataProvider.addRead("test".getBytes());
1310 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1301 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1311 builder.addHeader("Content-Type", "useless/string"); 1302 builder.addHeader("Content-Type", "useless/string");
1312 builder.build().start(); 1303 builder.build().start();
1313 callback.blockForDone(); 1304 callback.blockForDone();
1314 dataProvider.assertClosed(); 1305 dataProvider.assertClosed();
1315 1306
1316 assertEquals(1, dataProvider.getNumReadCalls()); 1307 assertEquals(1, dataProvider.getNumReadCalls());
1317 assertEquals(0, dataProvider.getNumRewindCalls()); 1308 assertEquals(0, dataProvider.getNumRewindCalls());
1318 1309
1319 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1310 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1320 assertEquals("Sync read failure", callback.mError.getCause().getMessage( )); 1311 assertEquals("Sync read failure", callback.mError.getCause().getMessage( ));
1321 assertEquals(null, callback.mResponseInfo); 1312 assertEquals(null, callback.mResponseInfo);
1322 } 1313 }
1323 1314
1324 @SmallTest 1315 @SmallTest
1325 @Feature({"Cronet"}) 1316 @Feature({"Cronet"})
1326 public void testUploadLengthFailSync() throws Exception { 1317 public void testUploadLengthFailSync() throws Exception {
1327 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1318 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1328 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1319 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1329 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1320 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1330 1321
1331 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1322 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1332 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1323 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1333 dataProvider.setLengthFailure(); 1324 dataProvider.setLengthFailure();
1334 // This will never be read, but if the length is 0, read may never be 1325 // This will never be read, but if the length is 0, read may never be
1335 // called. 1326 // called.
1336 dataProvider.addRead("test".getBytes()); 1327 dataProvider.addRead("test".getBytes());
1337 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1328 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1338 builder.addHeader("Content-Type", "useless/string"); 1329 builder.addHeader("Content-Type", "useless/string");
1339 builder.build().start(); 1330 builder.build().start();
1340 callback.blockForDone(); 1331 callback.blockForDone();
1341 dataProvider.assertClosed(); 1332 dataProvider.assertClosed();
1342 1333
1343 assertEquals(0, dataProvider.getNumReadCalls()); 1334 assertEquals(0, dataProvider.getNumReadCalls());
1344 assertEquals(0, dataProvider.getNumRewindCalls()); 1335 assertEquals(0, dataProvider.getNumRewindCalls());
1345 1336
1346 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1337 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1347 assertEquals("Sync length failure", callback.mError.getCause().getMessag e()); 1338 assertEquals("Sync length failure", callback.mError.getCause().getMessag e());
1348 assertEquals(null, callback.mResponseInfo); 1339 assertEquals(null, callback.mResponseInfo);
1349 } 1340 }
1350 1341
1351 @SmallTest 1342 @SmallTest
1352 @Feature({"Cronet"}) 1343 @Feature({"Cronet"})
1353 public void testUploadReadFailAsync() throws Exception { 1344 public void testUploadReadFailAsync() throws Exception {
1354 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1345 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1355 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1346 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1356 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1347 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1357 1348
1358 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1349 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1359 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1350 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1360 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); 1351 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC);
1361 // This will never be read, but if the length is 0, read may never be 1352 // This will never be read, but if the length is 0, read may never be
1362 // called. 1353 // called.
1363 dataProvider.addRead("test".getBytes()); 1354 dataProvider.addRead("test".getBytes());
1364 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1355 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1365 builder.addHeader("Content-Type", "useless/string"); 1356 builder.addHeader("Content-Type", "useless/string");
1366 builder.build().start(); 1357 builder.build().start();
(...skipping 13 matching lines...) Expand all
1380 @Feature({"Cronet"}) 1371 @Feature({"Cronet"})
1381 public void testDirectExecutorUploadProhibitedByDefault() throws Exception { 1372 public void testDirectExecutorUploadProhibitedByDefault() throws Exception {
1382 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1373 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1383 Executor myExecutor = new Executor() { 1374 Executor myExecutor = new Executor() {
1384 1375
1385 @Override 1376 @Override
1386 public void execute(Runnable command) { 1377 public void execute(Runnable command) {
1387 command.run(); 1378 command.run();
1388 } 1379 }
1389 }; 1380 };
1390 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1381 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1391 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1382 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1392 1383
1393 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1384 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1394 TestUploadDataProvider.SuccessCallbackMode.SYNC, myExecutor); 1385 TestUploadDataProvider.SuccessCallbackMode.SYNC, myExecutor);
1395 // This will never be read, but if the length is 0, read may never be 1386 // This will never be read, but if the length is 0, read may never be
1396 // called. 1387 // called.
1397 dataProvider.addRead("test".getBytes()); 1388 dataProvider.addRead("test".getBytes());
1398 builder.setUploadDataProvider(dataProvider, myExecutor); 1389 builder.setUploadDataProvider(dataProvider, myExecutor);
1399 builder.addHeader("Content-Type", "useless/string"); 1390 builder.addHeader("Content-Type", "useless/string");
1400 builder.build().start(); 1391 builder.build().start();
1401 callback.blockForDone(); 1392 callback.blockForDone();
(...skipping 13 matching lines...) Expand all
1415 public void testDirectExecutorProhibitedByDefault() throws Exception { 1406 public void testDirectExecutorProhibitedByDefault() throws Exception {
1416 System.out.println("testing with " + mTestFramework.mCronetEngine); 1407 System.out.println("testing with " + mTestFramework.mCronetEngine);
1417 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1408 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1418 Executor myExecutor = new Executor() { 1409 Executor myExecutor = new Executor() {
1419 1410
1420 @Override 1411 @Override
1421 public void execute(Runnable command) { 1412 public void execute(Runnable command) {
1422 command.run(); 1413 command.run();
1423 } 1414 }
1424 }; 1415 };
1425 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1416 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1426 callback, myExecutor, mTestFramework.mCronetEngine); 1417 NativeTestServer.getEchoBodyURL(), callback, myExecutor);
1427 1418
1428 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1419 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1429 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1420 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1430 // This will never be read, but if the length is 0, read may never be 1421 // This will never be read, but if the length is 0, read may never be
1431 // called. 1422 // called.
1432 dataProvider.addRead("test".getBytes()); 1423 dataProvider.addRead("test".getBytes());
1433 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1424 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1434 builder.addHeader("Content-Type", "useless/string"); 1425 builder.addHeader("Content-Type", "useless/string");
1435 builder.build().start(); 1426 builder.build().start();
1436 callback.blockForDone(); 1427 callback.blockForDone();
(...skipping 14 matching lines...) Expand all
1451 public void testDirectExecutorAllowed() throws Exception { 1442 public void testDirectExecutorAllowed() throws Exception {
1452 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1443 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1453 callback.setAllowDirectExecutor(true); 1444 callback.setAllowDirectExecutor(true);
1454 Executor myExecutor = new Executor() { 1445 Executor myExecutor = new Executor() {
1455 1446
1456 @Override 1447 @Override
1457 public void execute(Runnable command) { 1448 public void execute(Runnable command) {
1458 command.run(); 1449 command.run();
1459 } 1450 }
1460 }; 1451 };
1461 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1452 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1462 callback, myExecutor, mTestFramework.mCronetEngine); 1453 NativeTestServer.getEchoBodyURL(), callback, myExecutor);
1463 UploadDataProvider dataProvider = UploadDataProviders.create("test".getB ytes("UTF-8")); 1454 UploadDataProvider dataProvider = UploadDataProviders.create("test".getB ytes("UTF-8"));
1464 builder.setUploadDataProvider(dataProvider, myExecutor); 1455 builder.setUploadDataProvider(dataProvider, myExecutor);
1465 builder.addHeader("Content-Type", "useless/string"); 1456 builder.addHeader("Content-Type", "useless/string");
1466 builder.allowDirectExecutor(); 1457 builder.allowDirectExecutor();
1467 builder.build().start(); 1458 builder.build().start();
1468 callback.blockForDone(); 1459 callback.blockForDone();
1469 1460
1470 if (callback.mOnErrorCalled) { 1461 if (callback.mOnErrorCalled) {
1471 throw callback.mError; 1462 throw callback.mError;
1472 } 1463 }
1473 1464
1474 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1465 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1475 assertEquals("test", callback.mResponseAsString); 1466 assertEquals("test", callback.mResponseAsString);
1476 } 1467 }
1477 1468
1478 @SmallTest 1469 @SmallTest
1479 @Feature({"Cronet"}) 1470 @Feature({"Cronet"})
1480 public void testUploadReadFailThrown() throws Exception { 1471 public void testUploadReadFailThrown() throws Exception {
1481 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1472 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1482 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1473 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1483 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1474 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1484 1475
1485 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1476 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1486 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1477 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1487 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); 1478 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN);
1488 // This will never be read, but if the length is 0, read may never be 1479 // This will never be read, but if the length is 0, read may never be
1489 // called. 1480 // called.
1490 dataProvider.addRead("test".getBytes()); 1481 dataProvider.addRead("test".getBytes());
1491 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1482 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1492 builder.addHeader("Content-Type", "useless/string"); 1483 builder.addHeader("Content-Type", "useless/string");
1493 builder.build().start(); 1484 builder.build().start();
1494 callback.blockForDone(); 1485 callback.blockForDone();
1495 dataProvider.assertClosed(); 1486 dataProvider.assertClosed();
1496 1487
1497 assertEquals(1, dataProvider.getNumReadCalls()); 1488 assertEquals(1, dataProvider.getNumReadCalls());
1498 assertEquals(0, dataProvider.getNumRewindCalls()); 1489 assertEquals(0, dataProvider.getNumRewindCalls());
1499 1490
1500 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1491 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1501 assertEquals("Thrown read failure", callback.mError.getCause().getMessag e()); 1492 assertEquals("Thrown read failure", callback.mError.getCause().getMessag e());
1502 assertEquals(null, callback.mResponseInfo); 1493 assertEquals(null, callback.mResponseInfo);
1503 } 1494 }
1504 1495
1505 @SmallTest 1496 @SmallTest
1506 @Feature({"Cronet"}) 1497 @Feature({"Cronet"})
1507 public void testUploadRewindFailSync() throws Exception { 1498 public void testUploadRewindFailSync() throws Exception {
1508 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1499 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1509 UrlRequest.Builder builder = 1500 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1510 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), callback, 1501 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1511 callback.getExecutor(), mTestFramework.mCronetEngine);
1512 1502
1513 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1503 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1514 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1504 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1515 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); 1505 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC);
1516 dataProvider.addRead("test".getBytes()); 1506 dataProvider.addRead("test".getBytes());
1517 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1507 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1518 builder.addHeader("Content-Type", "useless/string"); 1508 builder.addHeader("Content-Type", "useless/string");
1519 builder.build().start(); 1509 builder.build().start();
1520 callback.blockForDone(); 1510 callback.blockForDone();
1521 dataProvider.assertClosed(); 1511 dataProvider.assertClosed();
1522 1512
1523 assertEquals(1, dataProvider.getNumReadCalls()); 1513 assertEquals(1, dataProvider.getNumReadCalls());
1524 assertEquals(1, dataProvider.getNumRewindCalls()); 1514 assertEquals(1, dataProvider.getNumRewindCalls());
1525 1515
1526 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1516 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1527 assertEquals("Sync rewind failure", callback.mError.getCause().getMessag e()); 1517 assertEquals("Sync rewind failure", callback.mError.getCause().getMessag e());
1528 assertEquals(null, callback.mResponseInfo); 1518 assertEquals(null, callback.mResponseInfo);
1529 } 1519 }
1530 1520
1531 @SmallTest 1521 @SmallTest
1532 @Feature({"Cronet"}) 1522 @Feature({"Cronet"})
1533 public void testUploadRewindFailAsync() throws Exception { 1523 public void testUploadRewindFailAsync() throws Exception {
1534 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1524 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1535 UrlRequest.Builder builder = 1525 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1536 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), callback, 1526 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1537 callback.getExecutor(), mTestFramework.mCronetEngine);
1538 1527
1539 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1528 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1540 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor()); 1529 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor());
1541 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); 1530 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC);
1542 dataProvider.addRead("test".getBytes()); 1531 dataProvider.addRead("test".getBytes());
1543 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1532 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1544 builder.addHeader("Content-Type", "useless/string"); 1533 builder.addHeader("Content-Type", "useless/string");
1545 builder.build().start(); 1534 builder.build().start();
1546 callback.blockForDone(); 1535 callback.blockForDone();
1547 dataProvider.assertClosed(); 1536 dataProvider.assertClosed();
1548 1537
1549 assertEquals(1, dataProvider.getNumReadCalls()); 1538 assertEquals(1, dataProvider.getNumReadCalls());
1550 assertEquals(1, dataProvider.getNumRewindCalls()); 1539 assertEquals(1, dataProvider.getNumRewindCalls());
1551 1540
1552 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1541 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1553 assertEquals("Async rewind failure", callback.mError.getCause().getMessa ge()); 1542 assertEquals("Async rewind failure", callback.mError.getCause().getMessa ge());
1554 assertEquals(null, callback.mResponseInfo); 1543 assertEquals(null, callback.mResponseInfo);
1555 } 1544 }
1556 1545
1557 @SmallTest 1546 @SmallTest
1558 @Feature({"Cronet"}) 1547 @Feature({"Cronet"})
1559 public void testUploadRewindFailThrown() throws Exception { 1548 public void testUploadRewindFailThrown() throws Exception {
1560 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1549 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1561 UrlRequest.Builder builder = 1550 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1562 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), callback, 1551 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1563 callback.getExecutor(), mTestFramework.mCronetEngine);
1564 1552
1565 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1553 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1566 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1554 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1567 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); 1555 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN);
1568 dataProvider.addRead("test".getBytes()); 1556 dataProvider.addRead("test".getBytes());
1569 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1557 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1570 builder.addHeader("Content-Type", "useless/string"); 1558 builder.addHeader("Content-Type", "useless/string");
1571 builder.build().start(); 1559 builder.build().start();
1572 callback.blockForDone(); 1560 callback.blockForDone();
1573 dataProvider.assertClosed(); 1561 dataProvider.assertClosed();
1574 1562
1575 assertEquals(1, dataProvider.getNumReadCalls()); 1563 assertEquals(1, dataProvider.getNumReadCalls());
1576 assertEquals(1, dataProvider.getNumRewindCalls()); 1564 assertEquals(1, dataProvider.getNumRewindCalls());
1577 1565
1578 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1566 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1579 assertEquals("Thrown rewind failure", callback.mError.getCause().getMess age()); 1567 assertEquals("Thrown rewind failure", callback.mError.getCause().getMess age());
1580 assertEquals(null, callback.mResponseInfo); 1568 assertEquals(null, callback.mResponseInfo);
1581 } 1569 }
1582 1570
1583 @SmallTest 1571 @SmallTest
1584 @Feature({"Cronet"}) 1572 @Feature({"Cronet"})
1585 public void testUploadChunked() throws Exception { 1573 public void testUploadChunked() throws Exception {
1586 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1574 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1587 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1575 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1588 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1576 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1589 1577
1590 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1578 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1591 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1579 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1592 dataProvider.addRead("test hello".getBytes()); 1580 dataProvider.addRead("test hello".getBytes());
1593 dataProvider.setChunked(true); 1581 dataProvider.setChunked(true);
1594 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1582 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1595 builder.addHeader("Content-Type", "useless/string"); 1583 builder.addHeader("Content-Type", "useless/string");
1596 1584
1597 assertEquals(-1, dataProvider.getUploadedLength()); 1585 assertEquals(-1, dataProvider.getUploadedLength());
1598 1586
1599 builder.build().start(); 1587 builder.build().start();
1600 callback.blockForDone(); 1588 callback.blockForDone();
1601 dataProvider.assertClosed(); 1589 dataProvider.assertClosed();
1602 1590
1603 // 1 read call for one data chunk. 1591 // 1 read call for one data chunk.
1604 assertEquals(1, dataProvider.getNumReadCalls()); 1592 assertEquals(1, dataProvider.getNumReadCalls());
1605 assertEquals("test hello", callback.mResponseAsString); 1593 assertEquals("test hello", callback.mResponseAsString);
1606 } 1594 }
1607 1595
1608 @SmallTest 1596 @SmallTest
1609 @Feature({"Cronet"}) 1597 @Feature({"Cronet"})
1610 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { 1598 public void testUploadChunkedLastReadZeroLengthBody() throws Exception {
1611 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1599 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1612 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1600 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1613 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1601 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1614 1602
1615 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1603 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1616 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1604 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1617 // Add 3 reads. The last read has a 0-length body. 1605 // Add 3 reads. The last read has a 0-length body.
1618 dataProvider.addRead("hello there".getBytes()); 1606 dataProvider.addRead("hello there".getBytes());
1619 dataProvider.addRead("!".getBytes()); 1607 dataProvider.addRead("!".getBytes());
1620 dataProvider.addRead("".getBytes()); 1608 dataProvider.addRead("".getBytes());
1621 dataProvider.setChunked(true); 1609 dataProvider.setChunked(true);
1622 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1610 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1623 builder.addHeader("Content-Type", "useless/string"); 1611 builder.addHeader("Content-Type", "useless/string");
1624 1612
1625 assertEquals(-1, dataProvider.getUploadedLength()); 1613 assertEquals(-1, dataProvider.getUploadedLength());
1626 1614
1627 builder.build().start(); 1615 builder.build().start();
1628 callback.blockForDone(); 1616 callback.blockForDone();
1629 dataProvider.assertClosed(); 1617 dataProvider.assertClosed();
1630 1618
1631 // 2 read call for the first two data chunks, and 1 for final chunk. 1619 // 2 read call for the first two data chunks, and 1 for final chunk.
1632 assertEquals(3, dataProvider.getNumReadCalls()); 1620 assertEquals(3, dataProvider.getNumReadCalls());
1633 assertEquals("hello there!", callback.mResponseAsString); 1621 assertEquals("hello there!", callback.mResponseAsString);
1634 } 1622 }
1635 1623
1636 // Test where an upload fails without ever initializing the 1624 // Test where an upload fails without ever initializing the
1637 // UploadDataStream, because it can't connect to the server. 1625 // UploadDataStream, because it can't connect to the server.
1638 @SmallTest 1626 @SmallTest
1639 @Feature({"Cronet"}) 1627 @Feature({"Cronet"})
1640 public void testUploadFailsWithoutInitializingStream() throws Exception { 1628 public void testUploadFailsWithoutInitializingStream() throws Exception {
1641 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1629 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1642 // The port for PTP will always refuse a TCP connection 1630 // The port for PTP will always refuse a TCP connection
1643 UrlRequest.Builder builder = new UrlRequest.Builder("http://127.0.0.1:31 9", callback, 1631 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1644 callback.getExecutor(), mTestFramework.mCronetEngine); 1632 "http://127.0.0.1:319", callback, callback.getExecutor());
1645 1633
1646 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1634 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1647 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1635 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1648 dataProvider.addRead("test".getBytes()); 1636 dataProvider.addRead("test".getBytes());
1649 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1637 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1650 builder.addHeader("Content-Type", "useless/string"); 1638 builder.addHeader("Content-Type", "useless/string");
1651 builder.build().start(); 1639 builder.build().start();
1652 callback.blockForDone(); 1640 callback.blockForDone();
1653 dataProvider.assertClosed(); 1641 dataProvider.assertClosed();
1654 1642
1655 assertNull(callback.mResponseInfo); 1643 assertNull(callback.mResponseInfo);
1656 if (testingJavaImpl()) { 1644 if (testingJavaImpl()) {
1657 Throwable cause = callback.mError.getCause(); 1645 Throwable cause = callback.mError.getCause();
1658 assertTrue("Exception was: " + cause, cause instanceof ConnectExcept ion); 1646 assertTrue("Exception was: " + cause, cause instanceof ConnectExcept ion);
1659 } else { 1647 } else {
1660 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REF USED", 1648 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REF USED",
1661 callback.mError.getMessage()); 1649 callback.mError.getMessage());
1662 } 1650 }
1663 } 1651 }
1664 1652
1665 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , 1653 private void throwOrCancel(FailureType failureType, ResponseStep failureStep ,
1666 boolean expectResponseInfo, boolean expectError) { 1654 boolean expectResponseInfo, boolean expectError) {
1667 if (Log.isLoggable("TESTING", Log.VERBOSE)) { 1655 if (Log.isLoggable("TESTING", Log.VERBOSE)) {
1668 Log.v("TESTING", "Testing " + failureType + " during " + failureStep ); 1656 Log.v("TESTING", "Testing " + failureType + " during " + failureStep );
1669 } 1657 }
1670 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1658 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1671 callback.setFailure(failureType, failureStep); 1659 callback.setFailure(failureType, failureStep);
1672 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(), 1660 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1673 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1661 NativeTestServer.getRedirectURL(), callback, callback.getExecuto r());
1674 UrlRequest urlRequest = builder.build(); 1662 UrlRequest urlRequest = builder.build();
1675 urlRequest.start(); 1663 urlRequest.start();
1676 callback.blockForDone(); 1664 callback.blockForDone();
1677 // Wait for all posted tasks to be executed to ensure there is no unhand led exception. 1665 // Wait for all posted tasks to be executed to ensure there is no unhand led exception.
1678 callback.shutdownExecutorAndWait(); 1666 callback.shutdownExecutorAndWait();
1679 assertEquals(1, callback.mRedirectCount); 1667 assertEquals(1, callback.mRedirectCount);
1680 if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType .CANCEL_ASYNC) { 1668 if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType .CANCEL_ASYNC) {
1681 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); 1669 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep);
1682 } else if (failureType == FailureType.THROW_SYNC) { 1670 } else if (failureType == FailureType.THROW_SYNC) {
1683 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); 1671 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1724 } 1712 }
1725 1713
1726 @SmallTest 1714 @SmallTest
1727 @Feature({"Cronet"}) 1715 @Feature({"Cronet"})
1728 public void testThrowOrCancelInOnSucceeded() { 1716 public void testThrowOrCancelInOnSucceeded() {
1729 FailureType[] testTypes = new FailureType[] { 1717 FailureType[] testTypes = new FailureType[] {
1730 FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CAN CEL_ASYNC}; 1718 FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CAN CEL_ASYNC};
1731 for (FailureType type : testTypes) { 1719 for (FailureType type : testTypes) {
1732 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1720 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1733 callback.setFailure(type, ResponseStep.ON_SUCCEEDED); 1721 callback.setFailure(type, ResponseStep.ON_SUCCEEDED);
1734 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer .getEchoMethodURL(), 1722 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ estBuilder(
1735 callback, callback.getExecutor(), mTestFramework.mCronetEngi ne); 1723 NativeTestServer.getEchoMethodURL(), callback, callback.getE xecutor());
1736 UrlRequest urlRequest = builder.build(); 1724 UrlRequest urlRequest = builder.build();
1737 urlRequest.start(); 1725 urlRequest.start();
1738 callback.blockForDone(); 1726 callback.blockForDone();
1739 // Wait for all posted tasks to be executed to ensure there is no un handled exception. 1727 // Wait for all posted tasks to be executed to ensure there is no un handled exception.
1740 callback.shutdownExecutorAndWait(); 1728 callback.shutdownExecutorAndWait();
1741 assertNull(callback.mError); 1729 assertNull(callback.mError);
1742 assertEquals(ResponseStep.ON_SUCCEEDED, callback.mResponseStep); 1730 assertEquals(ResponseStep.ON_SUCCEEDED, callback.mResponseStep);
1743 assertTrue(urlRequest.isDone()); 1731 assertTrue(urlRequest.isDone());
1744 assertNotNull(callback.mResponseInfo); 1732 assertNotNull(callback.mResponseInfo);
1745 assertFalse(callback.mOnErrorCalled); 1733 assertFalse(callback.mOnErrorCalled);
1746 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1734 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1747 assertEquals("GET", callback.mResponseAsString); 1735 assertEquals("GET", callback.mResponseAsString);
1748 } 1736 }
1749 } 1737 }
1750 1738
1751 @SmallTest 1739 @SmallTest
1752 @Feature({"Cronet"}) 1740 @Feature({"Cronet"})
1753 public void testThrowOrCancelInOnFailed() { 1741 public void testThrowOrCancelInOnFailed() {
1754 FailureType[] testTypes = new FailureType[] { 1742 FailureType[] testTypes = new FailureType[] {
1755 FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CAN CEL_ASYNC}; 1743 FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CAN CEL_ASYNC};
1756 for (FailureType type : testTypes) { 1744 for (FailureType type : testTypes) {
1757 String url = NativeTestServer.getEchoBodyURL(); 1745 String url = NativeTestServer.getEchoBodyURL();
1758 // Shut down NativeTestServer so request will fail. 1746 // Shut down NativeTestServer so request will fail.
1759 NativeTestServer.shutdownNativeTestServer(); 1747 NativeTestServer.shutdownNativeTestServer();
1760 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1748 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1761 callback.setFailure(type, ResponseStep.ON_FAILED); 1749 callback.setFailure(type, ResponseStep.ON_FAILED);
1762 UrlRequest.Builder builder = new UrlRequest.Builder( 1750 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ estBuilder(
1763 url, callback, callback.getExecutor(), mTestFramework.mCrone tEngine); 1751 url, callback, callback.getExecutor());
1764 UrlRequest urlRequest = builder.build(); 1752 UrlRequest urlRequest = builder.build();
1765 urlRequest.start(); 1753 urlRequest.start();
1766 callback.blockForDone(); 1754 callback.blockForDone();
1767 // Wait for all posted tasks to be executed to ensure there is no un handled exception. 1755 // Wait for all posted tasks to be executed to ensure there is no un handled exception.
1768 callback.shutdownExecutorAndWait(); 1756 callback.shutdownExecutorAndWait();
1769 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); 1757 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
1770 assertTrue(callback.mOnErrorCalled); 1758 assertTrue(callback.mOnErrorCalled);
1771 assertNotNull(callback.mError); 1759 assertNotNull(callback.mError);
1772 assertTrue(urlRequest.isDone()); 1760 assertTrue(urlRequest.isDone());
1773 // Start NativeTestServer again to run the test for a second time. 1761 // Start NativeTestServer again to run the test for a second time.
1774 assertTrue(NativeTestServer.startNativeTestServer(getContext())); 1762 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
1775 } 1763 }
1776 } 1764 }
1777 1765
1778 @SmallTest 1766 @SmallTest
1779 @Feature({"Cronet"}) 1767 @Feature({"Cronet"})
1780 public void testThrowOrCancelInOnCanceled() { 1768 public void testThrowOrCancelInOnCanceled() {
1781 FailureType[] testTypes = new FailureType[] { 1769 FailureType[] testTypes = new FailureType[] {
1782 FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CAN CEL_ASYNC}; 1770 FailureType.THROW_SYNC, FailureType.CANCEL_SYNC, FailureType.CAN CEL_ASYNC};
1783 for (FailureType type : testTypes) { 1771 for (FailureType type : testTypes) {
1784 TestUrlRequestCallback callback = new TestUrlRequestCallback() { 1772 TestUrlRequestCallback callback = new TestUrlRequestCallback() {
1785 @Override 1773 @Override
1786 public void onResponseStarted(UrlRequest request, UrlResponseInf o info) { 1774 public void onResponseStarted(UrlRequest request, UrlResponseInf o info) {
1787 super.onResponseStarted(request, info); 1775 super.onResponseStarted(request, info);
1788 request.cancel(); 1776 request.cancel();
1789 } 1777 }
1790 }; 1778 };
1791 callback.setFailure(type, ResponseStep.ON_CANCELED); 1779 callback.setFailure(type, ResponseStep.ON_CANCELED);
1792 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer .getEchoBodyURL(), 1780 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ estBuilder(
1793 callback, callback.getExecutor(), mTestFramework.mCronetEngi ne); 1781 NativeTestServer.getEchoBodyURL(), callback, callback.getExe cutor());
1794 UrlRequest urlRequest = builder.build(); 1782 UrlRequest urlRequest = builder.build();
1795 urlRequest.start(); 1783 urlRequest.start();
1796 callback.blockForDone(); 1784 callback.blockForDone();
1797 // Wait for all posted tasks to be executed to ensure there is no un handled exception. 1785 // Wait for all posted tasks to be executed to ensure there is no un handled exception.
1798 callback.shutdownExecutorAndWait(); 1786 callback.shutdownExecutorAndWait();
1799 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); 1787 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep);
1800 assertTrue(urlRequest.isDone()); 1788 assertTrue(urlRequest.isDone());
1801 assertNotNull(callback.mResponseInfo); 1789 assertNotNull(callback.mResponseInfo);
1802 assertNull(callback.mError); 1790 assertNull(callback.mError);
1803 assertTrue(callback.mOnCanceledCalled); 1791 assertTrue(callback.mOnCanceledCalled);
1804 } 1792 }
1805 } 1793 }
1806 1794
1807 @SmallTest 1795 @SmallTest
1808 @Feature({"Cronet"}) 1796 @Feature({"Cronet"})
1809 @OnlyRunNativeCronet // No destroyed callback for tests 1797 @OnlyRunNativeCronet // No destroyed callback for tests
1810 public void testExecutorShutdown() { 1798 public void testExecutorShutdown() {
1811 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1799 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1812 1800
1813 callback.setAutoAdvance(false); 1801 callback.setAutoAdvance(false);
1814 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1802 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1815 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1803 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1816 CronetUrlRequest urlRequest = (CronetUrlRequest) builder.build(); 1804 CronetUrlRequest urlRequest = (CronetUrlRequest) builder.build();
1817 urlRequest.start(); 1805 urlRequest.start();
1818 callback.waitForNextStep(); 1806 callback.waitForNextStep();
1819 assertFalse(callback.isDone()); 1807 assertFalse(callback.isDone());
1820 assertFalse(urlRequest.isDone()); 1808 assertFalse(urlRequest.isDone());
1821 1809
1822 final ConditionVariable requestDestroyed = new ConditionVariable(false); 1810 final ConditionVariable requestDestroyed = new ConditionVariable(false);
1823 urlRequest.setOnDestroyedCallbackForTesting(new Runnable() { 1811 urlRequest.setOnDestroyedCallbackForTesting(new Runnable() {
1824 @Override 1812 @Override
1825 public void run() { 1813 public void run() {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1859 mByteBuffer = byteBuffer; 1847 mByteBuffer = byteBuffer;
1860 mReadCalled.open(); 1848 mReadCalled.open();
1861 } 1849 }
1862 1850
1863 @Override 1851 @Override
1864 public void rewind(final UploadDataSink uploadDataSink) { 1852 public void rewind(final UploadDataSink uploadDataSink) {
1865 } 1853 }
1866 } 1854 }
1867 1855
1868 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1856 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1869 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1857 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1870 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1858 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1871 1859
1872 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); 1860 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor();
1873 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ; 1861 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ;
1874 builder.setUploadDataProvider(dataProvider, uploadExecutor); 1862 builder.setUploadDataProvider(dataProvider, uploadExecutor);
1875 builder.addHeader("Content-Type", "useless/string"); 1863 builder.addHeader("Content-Type", "useless/string");
1876 UrlRequest urlRequest = builder.build(); 1864 UrlRequest urlRequest = builder.build();
1877 urlRequest.start(); 1865 urlRequest.start();
1878 // Wait for read to be called on executor. 1866 // Wait for read to be called on executor.
1879 dataProvider.mReadCalled.block(); 1867 dataProvider.mReadCalled.block();
1880 // Shutdown the executor, so posting next task will throw an exception. 1868 // Shutdown the executor, so posting next task will throw an exception.
(...skipping 21 matching lines...) Expand all
1902 super.onSucceeded(request, info); 1890 super.onSucceeded(request, info);
1903 } 1891 }
1904 } 1892 }
1905 1893
1906 @SmallTest 1894 @SmallTest
1907 @Feature({"Cronet"}) 1895 @Feature({"Cronet"})
1908 @OnlyRunNativeCronet // No adapter to destroy in pure java 1896 @OnlyRunNativeCronet // No adapter to destroy in pure java
1909 // Regression test for crbug.com/564946. 1897 // Regression test for crbug.com/564946.
1910 public void testDestroyUploadDataStreamAdapterOnSucceededCallback() throws E xception { 1898 public void testDestroyUploadDataStreamAdapterOnSucceededCallback() throws E xception {
1911 TestUrlRequestCallback callback = new QuitOnSuccessCallback(); 1899 TestUrlRequestCallback callback = new QuitOnSuccessCallback();
1912 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1900 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1913 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1901 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1914 1902
1915 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1903 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1916 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1904 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1917 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1905 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1918 builder.addHeader("Content-Type", "useless/string"); 1906 builder.addHeader("Content-Type", "useless/string");
1919 CronetUrlRequest request = (CronetUrlRequest) builder.build(); 1907 CronetUrlRequest request = (CronetUrlRequest) builder.build();
1920 final ConditionVariable uploadDataStreamAdapterDestroyed = new Condition Variable(); 1908 final ConditionVariable uploadDataStreamAdapterDestroyed = new Condition Variable();
1921 request.setOnDestroyedUploadCallbackForTesting(new Runnable() { 1909 request.setOnDestroyedUploadCallbackForTesting(new Runnable() {
1922 @Override 1910 @Override
1923 public void run() { 1911 public void run() {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
2017 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) { 2005 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) {
2018 // Use a duplicate to avoid modifying byteBuffer. 2006 // Use a duplicate to avoid modifying byteBuffer.
2019 ByteBuffer duplicate = byteBuffer.duplicate(); 2007 ByteBuffer duplicate = byteBuffer.duplicate();
2020 duplicate.position(start); 2008 duplicate.position(start);
2021 duplicate.limit(end); 2009 duplicate.limit(end);
2022 byte[] contents = new byte[duplicate.remaining()]; 2010 byte[] contents = new byte[duplicate.remaining()];
2023 duplicate.get(contents); 2011 duplicate.get(contents);
2024 return new String(contents); 2012 return new String(contents);
2025 } 2013 }
2026 } 2014 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698