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

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

Issue 1417973002: [Cronet] Switch from InstrumentationTest to junit (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address Helen's comments Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 9
10 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
(...skipping 10 matching lines...) Expand all
21 import java.util.regex.Matcher; 21 import java.util.regex.Matcher;
22 import java.util.regex.Pattern; 22 import java.util.regex.Pattern;
23 23
24 /** 24 /**
25 * Test functionality of CronetUrlRequest. 25 * Test functionality of CronetUrlRequest.
26 */ 26 */
27 public class CronetUrlRequestTest extends CronetTestBase { 27 public class CronetUrlRequestTest extends CronetTestBase {
28 // URL used for base tests. 28 // URL used for base tests.
29 private static final String TEST_URL = "http://127.0.0.1:8000"; 29 private static final String TEST_URL = "http://127.0.0.1:8000";
30 30
31 private CronetTestActivity mActivity; 31 private CronetTestFramework mTestFramework;
32 32
33 @Override 33 @Override
34 protected void setUp() throws Exception { 34 protected void setUp() throws Exception {
35 super.setUp(); 35 super.setUp();
36 mActivity = launchCronetTestApp(); 36 mTestFramework = startCronetTestFramework();
37 assertTrue(NativeTestServer.startNativeTestServer( 37 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
38 getInstrumentation().getTargetContext()));
39 // Add url interceptors after native application context is initialized. 38 // Add url interceptors after native application context is initialized.
40 MockUrlRequestJobFactory.setUp(); 39 MockUrlRequestJobFactory.setUp();
41 } 40 }
42 41
43 @Override 42 @Override
44 protected void tearDown() throws Exception { 43 protected void tearDown() throws Exception {
45 NativeTestServer.shutdownNativeTestServer(); 44 NativeTestServer.shutdownNativeTestServer();
46 mActivity.mCronetEngine.shutdown(); 45 mTestFramework.mCronetEngine.shutdown();
47 super.tearDown(); 46 super.tearDown();
48 } 47 }
49 48
50 private TestUrlRequestListener startAndWaitForComplete(String url) 49 private TestUrlRequestListener startAndWaitForComplete(String url)
51 throws Exception { 50 throws Exception {
52 TestUrlRequestListener listener = new TestUrlRequestListener(); 51 TestUrlRequestListener listener = new TestUrlRequestListener();
53 // Create request. 52 // Create request.
54 UrlRequest.Builder builder = new UrlRequest.Builder( 53 UrlRequest.Builder builder = new UrlRequest.Builder(
55 url, listener, listener.getExecutor(), mActivity.mCronetEngine); 54 url, listener, listener.getExecutor(), mTestFramework.mCronetEng ine);
56 UrlRequest urlRequest = builder.build(); 55 UrlRequest urlRequest = builder.build();
57 urlRequest.start(); 56 urlRequest.start();
58 listener.blockForDone(); 57 listener.blockForDone();
59 assertTrue(urlRequest.isDone()); 58 assertTrue(urlRequest.isDone());
60 return listener; 59 return listener;
61 } 60 }
62 61
63 private void checkResponseInfo(UrlResponseInfo responseInfo, String expected Url, 62 private void checkResponseInfo(UrlResponseInfo responseInfo, String expected Url,
64 int expectedHttpStatusCode, String expectedHttpStatusText) { 63 int expectedHttpStatusCode, String expectedHttpStatusText) {
65 assertEquals(expectedUrl, responseInfo.getUrl()); 64 assertEquals(expectedUrl, responseInfo.getUrl());
(...skipping 12 matching lines...) Expand all
78 List<String> header = responseHeaders.get(headerName); 77 List<String> header = responseHeaders.get(headerName);
79 assertNotNull(header); 78 assertNotNull(header);
80 assertTrue(header.contains(headerValue)); 79 assertTrue(header.contains(headerValue));
81 } 80 }
82 81
83 @SmallTest 82 @SmallTest
84 @Feature({"Cronet"}) 83 @Feature({"Cronet"})
85 public void testBuilderChecks() throws Exception { 84 public void testBuilderChecks() throws Exception {
86 TestUrlRequestListener listener = new TestUrlRequestListener(); 85 TestUrlRequestListener listener = new TestUrlRequestListener();
87 try { 86 try {
88 new UrlRequest.Builder(null, listener, listener.getExecutor(), mActi vity.mCronetEngine); 87 new UrlRequest.Builder(
88 null, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
89 fail("URL not null-checked"); 89 fail("URL not null-checked");
90 } catch (NullPointerException e) { 90 } catch (NullPointerException e) {
91 assertEquals("URL is required.", e.getMessage()); 91 assertEquals("URL is required.", e.getMessage());
92 } 92 }
93 try { 93 try {
94 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), null, list ener.getExecutor(), 94 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), null, list ener.getExecutor(),
95 mActivity.mCronetEngine); 95 mTestFramework.mCronetEngine);
96 fail("Listener not null-checked"); 96 fail("Listener not null-checked");
97 } catch (NullPointerException e) { 97 } catch (NullPointerException e) {
98 assertEquals("Listener is required.", e.getMessage()); 98 assertEquals("Listener is required.", e.getMessage());
99 } 99 }
100 try { 100 try {
101 new UrlRequest.Builder( 101 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listener, null,
102 NativeTestServer.getRedirectURL(), listener, null, mActivity .mCronetEngine); 102 mTestFramework.mCronetEngine);
103 fail("Executor not null-checked"); 103 fail("Executor not null-checked");
104 } catch (NullPointerException e) { 104 } catch (NullPointerException e) {
105 assertEquals("Executor is required.", e.getMessage()); 105 assertEquals("Executor is required.", e.getMessage());
106 } 106 }
107 try { 107 try {
108 new UrlRequest.Builder( 108 new UrlRequest.Builder(
109 NativeTestServer.getRedirectURL(), listener, listener.getExe cutor(), null); 109 NativeTestServer.getRedirectURL(), listener, listener.getExe cutor(), null);
110 fail("CronetEngine not null-checked"); 110 fail("CronetEngine not null-checked");
111 } catch (NullPointerException e) { 111 } catch (NullPointerException e) {
112 assertEquals("CronetEngine is required.", e.getMessage()); 112 assertEquals("CronetEngine is required.", e.getMessage());
113 } 113 }
114 // Verify successful creation doesn't throw. 114 // Verify successful creation doesn't throw.
115 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listener, list ener.getExecutor(), 115 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listener, list ener.getExecutor(),
116 mActivity.mCronetEngine); 116 mTestFramework.mCronetEngine);
117 } 117 }
118 118
119 @SmallTest 119 @SmallTest
120 @Feature({"Cronet"}) 120 @Feature({"Cronet"})
121 public void testSimpleGet() throws Exception { 121 public void testSimpleGet() throws Exception {
122 String url = NativeTestServer.getEchoMethodURL(); 122 String url = NativeTestServer.getEchoMethodURL();
123 TestUrlRequestListener listener = startAndWaitForComplete(url); 123 TestUrlRequestListener listener = startAndWaitForComplete(url);
124 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 124 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
125 // Default method is 'GET'. 125 // Default method is 'GET'.
126 assertEquals("GET", listener.mResponseAsString); 126 assertEquals("GET", listener.mResponseAsString);
(...skipping 15 matching lines...) Expand all
142 * request works as expected. To make sure there are no unexpected pending 142 * request works as expected. To make sure there are no unexpected pending
143 * messages, does a GET between UrlRequestListener callbacks. 143 * messages, does a GET between UrlRequestListener callbacks.
144 */ 144 */
145 @SmallTest 145 @SmallTest
146 @Feature({"Cronet"}) 146 @Feature({"Cronet"})
147 public void testRedirectAsync() throws Exception { 147 public void testRedirectAsync() throws Exception {
148 // Start the request and wait to see the redirect. 148 // Start the request and wait to see the redirect.
149 TestUrlRequestListener listener = new TestUrlRequestListener(); 149 TestUrlRequestListener listener = new TestUrlRequestListener();
150 listener.setAutoAdvance(false); 150 listener.setAutoAdvance(false);
151 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(), 151 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(),
152 listener, listener.getExecutor(), mActivity.mCronetEngine); 152 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
153 UrlRequest urlRequest = builder.build(); 153 UrlRequest urlRequest = builder.build();
154 urlRequest.start(); 154 urlRequest.start();
155 listener.waitForNextStep(); 155 listener.waitForNextStep();
156 156
157 // Check the redirect. 157 // Check the redirect.
158 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); 158 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep);
159 assertEquals(1, listener.mRedirectResponseInfoList.size()); 159 assertEquals(1, listener.mRedirectResponseInfoList.size());
160 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), 160 checkResponseInfo(listener.mRedirectResponseInfoList.get(0),
161 NativeTestServer.getRedirectURL(), 302, "Found"); 161 NativeTestServer.getRedirectURL(), 302, "Found");
162 assertEquals(1, listener.mRedirectResponseInfoList.get(0).getUrlChain(). size()); 162 assertEquals(1, listener.mRedirectResponseInfoList.get(0).getUrlChain(). size());
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 // TestUrlRequestListener catching a second onFailed call. 270 // TestUrlRequestListener catching a second onFailed call.
271 testSimpleGet(); 271 testSimpleGet();
272 } 272 }
273 273
274 @SmallTest 274 @SmallTest
275 @Feature({"Cronet"}) 275 @Feature({"Cronet"})
276 public void testSetHttpMethod() throws Exception { 276 public void testSetHttpMethod() throws Exception {
277 TestUrlRequestListener listener = new TestUrlRequestListener(); 277 TestUrlRequestListener listener = new TestUrlRequestListener();
278 String methodName = "HEAD"; 278 String methodName = "HEAD";
279 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 279 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
280 listener, listener.getExecutor(), mActivity.mCronetEngine); 280 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
281 // Try to set 'null' method. 281 // Try to set 'null' method.
282 try { 282 try {
283 builder.setHttpMethod(null); 283 builder.setHttpMethod(null);
284 fail("Exception not thrown"); 284 fail("Exception not thrown");
285 } catch (NullPointerException e) { 285 } catch (NullPointerException e) {
286 assertEquals("Method is required.", e.getMessage()); 286 assertEquals("Method is required.", e.getMessage());
287 } 287 }
288 288
289 builder.setHttpMethod(methodName); 289 builder.setHttpMethod(methodName);
290 builder.build().start(); 290 builder.build().start();
291 listener.blockForDone(); 291 listener.blockForDone();
292 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 292 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
293 assertEquals(0, listener.mHttpResponseDataLength); 293 assertEquals(0, listener.mHttpResponseDataLength);
294 } 294 }
295 295
296 @SmallTest 296 @SmallTest
297 @Feature({"Cronet"}) 297 @Feature({"Cronet"})
298 public void testBadMethod() throws Exception { 298 public void testBadMethod() throws Exception {
299 TestUrlRequestListener listener = new TestUrlRequestListener(); 299 TestUrlRequestListener listener = new TestUrlRequestListener();
300 UrlRequest.Builder builder = new UrlRequest.Builder( 300 UrlRequest.Builder builder = new UrlRequest.Builder(
301 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 301 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
302 try { 302 try {
303 builder.setHttpMethod("bad:method!"); 303 builder.setHttpMethod("bad:method!");
304 builder.build().start(); 304 builder.build().start();
305 fail("IllegalArgumentException not thrown."); 305 fail("IllegalArgumentException not thrown.");
306 } catch (IllegalArgumentException e) { 306 } catch (IllegalArgumentException e) {
307 assertEquals("Invalid http method bad:method!", 307 assertEquals("Invalid http method bad:method!",
308 e.getMessage()); 308 e.getMessage());
309 } 309 }
310 } 310 }
311 311
312 @SmallTest 312 @SmallTest
313 @Feature({"Cronet"}) 313 @Feature({"Cronet"})
314 public void testBadHeaderName() throws Exception { 314 public void testBadHeaderName() throws Exception {
315 TestUrlRequestListener listener = new TestUrlRequestListener(); 315 TestUrlRequestListener listener = new TestUrlRequestListener();
316 UrlRequest.Builder builder = new UrlRequest.Builder( 316 UrlRequest.Builder builder = new UrlRequest.Builder(
317 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 317 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
318 try { 318 try {
319 builder.addHeader("header:name", "headervalue"); 319 builder.addHeader("header:name", "headervalue");
320 builder.build().start(); 320 builder.build().start();
321 fail("IllegalArgumentException not thrown."); 321 fail("IllegalArgumentException not thrown.");
322 } catch (IllegalArgumentException e) { 322 } catch (IllegalArgumentException e) {
323 assertEquals("Invalid header header:name=headervalue", 323 assertEquals("Invalid header header:name=headervalue",
324 e.getMessage()); 324 e.getMessage());
325 } 325 }
326 } 326 }
327 327
328 @SmallTest 328 @SmallTest
329 @Feature({"Cronet"}) 329 @Feature({"Cronet"})
330 public void testBadHeaderValue() throws Exception { 330 public void testBadHeaderValue() throws Exception {
331 TestUrlRequestListener listener = new TestUrlRequestListener(); 331 TestUrlRequestListener listener = new TestUrlRequestListener();
332 UrlRequest.Builder builder = new UrlRequest.Builder( 332 UrlRequest.Builder builder = new UrlRequest.Builder(
333 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 333 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
334 try { 334 try {
335 builder.addHeader("headername", "bad header\r\nvalue"); 335 builder.addHeader("headername", "bad header\r\nvalue");
336 builder.build().start(); 336 builder.build().start();
337 fail("IllegalArgumentException not thrown."); 337 fail("IllegalArgumentException not thrown.");
338 } catch (IllegalArgumentException e) { 338 } catch (IllegalArgumentException e) {
339 assertEquals("Invalid header headername=bad header\r\nvalue", 339 assertEquals("Invalid header headername=bad header\r\nvalue",
340 e.getMessage()); 340 e.getMessage());
341 } 341 }
342 } 342 }
343 343
344 @SmallTest 344 @SmallTest
345 @Feature({"Cronet"}) 345 @Feature({"Cronet"})
346 public void testAddHeader() throws Exception { 346 public void testAddHeader() throws Exception {
347 TestUrlRequestListener listener = new TestUrlRequestListener(); 347 TestUrlRequestListener listener = new TestUrlRequestListener();
348 String headerName = "header-name"; 348 String headerName = "header-name";
349 String headerValue = "header-value"; 349 String headerValue = "header-value";
350 UrlRequest.Builder builder = 350 UrlRequest.Builder builder =
351 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), listener, 351 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), listener,
352 listener.getExecutor(), mActivity.mCronetEngine); 352 listener.getExecutor(), mTestFramework.mCronetEngine);
353 353
354 builder.addHeader(headerName, headerValue); 354 builder.addHeader(headerName, headerValue);
355 builder.build().start(); 355 builder.build().start();
356 listener.blockForDone(); 356 listener.blockForDone();
357 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 357 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
358 assertEquals(headerValue, listener.mResponseAsString); 358 assertEquals(headerValue, listener.mResponseAsString);
359 } 359 }
360 360
361 @SmallTest 361 @SmallTest
362 @Feature({"Cronet"}) 362 @Feature({"Cronet"})
363 public void testMultiRequestHeaders() throws Exception { 363 public void testMultiRequestHeaders() throws Exception {
364 TestUrlRequestListener listener = new TestUrlRequestListener(); 364 TestUrlRequestListener listener = new TestUrlRequestListener();
365 String headerName = "header-name"; 365 String headerName = "header-name";
366 String headerValue1 = "header-value1"; 366 String headerValue1 = "header-value1";
367 String headerValue2 = "header-value2"; 367 String headerValue2 = "header-value2";
368 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoAllHeadersURL(), 368 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoAllHeadersURL(),
369 listener, listener.getExecutor(), mActivity.mCronetEngine); 369 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
370 builder.addHeader(headerName, headerValue1); 370 builder.addHeader(headerName, headerValue1);
371 builder.addHeader(headerName, headerValue2); 371 builder.addHeader(headerName, headerValue2);
372 builder.build().start(); 372 builder.build().start();
373 listener.blockForDone(); 373 listener.blockForDone();
374 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 374 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
375 String headers = listener.mResponseAsString; 375 String headers = listener.mResponseAsString;
376 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); 376 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n");
377 Matcher matcher = pattern.matcher(headers); 377 Matcher matcher = pattern.matcher(headers);
378 List<String> actualValues = new ArrayList<String>(); 378 List<String> actualValues = new ArrayList<String>();
379 while (matcher.find()) { 379 while (matcher.find()) {
380 actualValues.add(matcher.group(1)); 380 actualValues.add(matcher.group(1));
381 } 381 }
382 assertEquals(1, actualValues.size()); 382 assertEquals(1, actualValues.size());
383 assertEquals("header-value2", actualValues.get(0)); 383 assertEquals("header-value2", actualValues.get(0));
384 } 384 }
385 385
386 @SmallTest 386 @SmallTest
387 @Feature({"Cronet"}) 387 @Feature({"Cronet"})
388 public void testCustomUserAgent() throws Exception { 388 public void testCustomUserAgent() throws Exception {
389 TestUrlRequestListener listener = new TestUrlRequestListener(); 389 TestUrlRequestListener listener = new TestUrlRequestListener();
390 String userAgentName = "User-Agent"; 390 String userAgentName = "User-Agent";
391 String userAgentValue = "User-Agent-Value"; 391 String userAgentValue = "User-Agent-Value";
392 UrlRequest.Builder builder = 392 UrlRequest.Builder builder =
393 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), listener, 393 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), listener,
394 listener.getExecutor(), mActivity.mCronetEngine); 394 listener.getExecutor(), mTestFramework.mCronetEngine);
395 builder.addHeader(userAgentName, userAgentValue); 395 builder.addHeader(userAgentName, userAgentValue);
396 builder.build().start(); 396 builder.build().start();
397 listener.blockForDone(); 397 listener.blockForDone();
398 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 398 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
399 assertEquals(userAgentValue, listener.mResponseAsString); 399 assertEquals(userAgentValue, listener.mResponseAsString);
400 } 400 }
401 401
402 @SmallTest 402 @SmallTest
403 @Feature({"Cronet"}) 403 @Feature({"Cronet"})
404 public void testDefaultUserAgent() throws Exception { 404 public void testDefaultUserAgent() throws Exception {
405 TestUrlRequestListener listener = new TestUrlRequestListener(); 405 TestUrlRequestListener listener = new TestUrlRequestListener();
406 String headerName = "User-Agent"; 406 String headerName = "User-Agent";
407 UrlRequest.Builder builder = 407 UrlRequest.Builder builder =
408 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), listener, 408 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN ame), listener,
409 listener.getExecutor(), mActivity.mCronetEngine); 409 listener.getExecutor(), mTestFramework.mCronetEngine);
410 builder.build().start(); 410 builder.build().start();
411 listener.blockForDone(); 411 listener.blockForDone();
412 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 412 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
413 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " 413 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is "
414 + listener.mResponseAsString, 414 + listener.mResponseAsString,
415 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", 415 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+",
416 listener.mResponseAsString)); 416 listener.mResponseAsString));
417 } 417 }
418 418
419 @SmallTest 419 @SmallTest
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 */ 582 */
583 @SmallTest 583 @SmallTest
584 @Feature({"Cronet"}) 584 @Feature({"Cronet"})
585 public void testLegacySimpleGetBufferUpdates() throws Exception { 585 public void testLegacySimpleGetBufferUpdates() throws Exception {
586 TestUrlRequestListener listener = new TestUrlRequestListener(); 586 TestUrlRequestListener listener = new TestUrlRequestListener();
587 listener.mLegacyReadByteBufferAdjustment = true; 587 listener.mLegacyReadByteBufferAdjustment = true;
588 listener.setAutoAdvance(false); 588 listener.setAutoAdvance(false);
589 // Since the default method is "GET", the expected response body is also 589 // Since the default method is "GET", the expected response body is also
590 // "GET". 590 // "GET".
591 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 591 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
592 listener, listener.getExecutor(), mActivity.mCronetEngine); 592 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
593 UrlRequest urlRequest = builder.build(); 593 UrlRequest urlRequest = builder.build();
594 urlRequest.start(); 594 urlRequest.start();
595 listener.waitForNextStep(); 595 listener.waitForNextStep();
596 596
597 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 597 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
598 readBuffer.put("FOR".getBytes()); 598 readBuffer.put("FOR".getBytes());
599 assertEquals(3, readBuffer.position()); 599 assertEquals(3, readBuffer.position());
600 600
601 // Read first two characters of the response ("GE"). It's theoretically 601 // Read first two characters of the response ("GE"). It's theoretically
602 // possible to need one read per character, though in practice, 602 // possible to need one read per character, though in practice,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 * Checks that the buffer is updated correctly, when starting at an offset. 669 * Checks that the buffer is updated correctly, when starting at an offset.
670 */ 670 */
671 @SmallTest 671 @SmallTest
672 @Feature({"Cronet"}) 672 @Feature({"Cronet"})
673 public void testSimpleGetBufferUpdates() throws Exception { 673 public void testSimpleGetBufferUpdates() throws Exception {
674 TestUrlRequestListener listener = new TestUrlRequestListener(); 674 TestUrlRequestListener listener = new TestUrlRequestListener();
675 listener.setAutoAdvance(false); 675 listener.setAutoAdvance(false);
676 // Since the default method is "GET", the expected response body is also 676 // Since the default method is "GET", the expected response body is also
677 // "GET". 677 // "GET".
678 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 678 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
679 listener, listener.getExecutor(), mActivity.mCronetEngine); 679 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
680 UrlRequest urlRequest = builder.build(); 680 UrlRequest urlRequest = builder.build();
681 urlRequest.start(); 681 urlRequest.start();
682 listener.waitForNextStep(); 682 listener.waitForNextStep();
683 683
684 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); 684 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5);
685 readBuffer.put("FOR".getBytes()); 685 readBuffer.put("FOR".getBytes());
686 assertEquals(3, readBuffer.position()); 686 assertEquals(3, readBuffer.position());
687 687
688 // Read first two characters of the response ("GE"). It's theoretically 688 // Read first two characters of the response ("GE"). It's theoretically
689 // possible to need one read per character, though in practice, 689 // possible to need one read per character, though in practice,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 // asserts in TestURLRequestListener. 751 // asserts in TestURLRequestListener.
752 testSimpleGet(); 752 testSimpleGet();
753 } 753 }
754 754
755 @SmallTest 755 @SmallTest
756 @Feature({"Cronet"}) 756 @Feature({"Cronet"})
757 public void testBadBuffers() throws Exception { 757 public void testBadBuffers() throws Exception {
758 TestUrlRequestListener listener = new TestUrlRequestListener(); 758 TestUrlRequestListener listener = new TestUrlRequestListener();
759 listener.setAutoAdvance(false); 759 listener.setAutoAdvance(false);
760 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 760 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
761 listener, listener.getExecutor(), mActivity.mCronetEngine); 761 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
762 UrlRequest urlRequest = builder.build(); 762 UrlRequest urlRequest = builder.build();
763 urlRequest.start(); 763 urlRequest.start();
764 listener.waitForNextStep(); 764 listener.waitForNextStep();
765 765
766 // Try to read using a full buffer. 766 // Try to read using a full buffer.
767 try { 767 try {
768 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); 768 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4);
769 readBuffer.put("full".getBytes()); 769 readBuffer.put("full".getBytes());
770 urlRequest.readNew(readBuffer); 770 urlRequest.readNew(readBuffer);
771 fail("Exception not thrown"); 771 fail("Exception not thrown");
(...skipping 21 matching lines...) Expand all
793 assertEquals("GET", listener.mResponseAsString); 793 assertEquals("GET", listener.mResponseAsString);
794 } 794 }
795 795
796 @SmallTest 796 @SmallTest
797 @Feature({"Cronet"}) 797 @Feature({"Cronet"})
798 public void testUnexpectedReads() throws Exception { 798 public void testUnexpectedReads() throws Exception {
799 final TestUrlRequestListener listener = new TestUrlRequestListener(); 799 final TestUrlRequestListener listener = new TestUrlRequestListener();
800 listener.setAutoAdvance(false); 800 listener.setAutoAdvance(false);
801 final UrlRequest urlRequest = 801 final UrlRequest urlRequest =
802 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen er, 802 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen er,
803 listener.getExecutor(), mActivity.mCronetE ngine) 803 listener.getExecutor(), mTestFramework.mCr onetEngine)
804 .build(); 804 .build();
805 805
806 // Try to read before starting request. 806 // Try to read before starting request.
807 try { 807 try {
808 listener.startNextRead(urlRequest); 808 listener.startNextRead(urlRequest);
809 fail("Exception not thrown"); 809 fail("Exception not thrown");
810 } catch (IllegalStateException e) { 810 } catch (IllegalStateException e) {
811 assertEquals("Unexpected read attempt.", 811 assertEquals("Unexpected read attempt.",
812 e.getMessage()); 812 e.getMessage());
813 } 813 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 } 878 }
879 } 879 }
880 880
881 @SmallTest 881 @SmallTest
882 @Feature({"Cronet"}) 882 @Feature({"Cronet"})
883 public void testUnexpectedFollowRedirects() throws Exception { 883 public void testUnexpectedFollowRedirects() throws Exception {
884 final TestUrlRequestListener listener = new TestUrlRequestListener(); 884 final TestUrlRequestListener listener = new TestUrlRequestListener();
885 listener.setAutoAdvance(false); 885 listener.setAutoAdvance(false);
886 final UrlRequest urlRequest = 886 final UrlRequest urlRequest =
887 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen er, 887 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen er,
888 listener.getExecutor(), mActivity.mCronetE ngine) 888 listener.getExecutor(), mTestFramework.mCr onetEngine)
889 .build(); 889 .build();
890 890
891 // Try to follow a redirect before starting the request. 891 // Try to follow a redirect before starting the request.
892 try { 892 try {
893 urlRequest.followRedirect(); 893 urlRequest.followRedirect();
894 fail("Exception not thrown"); 894 fail("Exception not thrown");
895 } catch (IllegalStateException e) { 895 } catch (IllegalStateException e) {
896 assertEquals("No redirect to follow.", 896 assertEquals("No redirect to follow.",
897 e.getMessage()); 897 e.getMessage());
898 } 898 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 assertEquals("No redirect to follow.", 959 assertEquals("No redirect to follow.",
960 e.getMessage()); 960 e.getMessage());
961 } 961 }
962 } 962 }
963 963
964 @SmallTest 964 @SmallTest
965 @Feature({"Cronet"}) 965 @Feature({"Cronet"})
966 public void testUploadSetDataProvider() throws Exception { 966 public void testUploadSetDataProvider() throws Exception {
967 TestUrlRequestListener listener = new TestUrlRequestListener(); 967 TestUrlRequestListener listener = new TestUrlRequestListener();
968 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 968 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
969 listener, listener.getExecutor(), mActivity.mCronetEngine); 969 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
970 970
971 try { 971 try {
972 builder.setUploadDataProvider(null, listener.getExecutor()); 972 builder.setUploadDataProvider(null, listener.getExecutor());
973 fail("Exception not thrown"); 973 fail("Exception not thrown");
974 } catch (NullPointerException e) { 974 } catch (NullPointerException e) {
975 assertEquals("Invalid UploadDataProvider.", e.getMessage()); 975 assertEquals("Invalid UploadDataProvider.", e.getMessage());
976 } 976 }
977 977
978 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 978 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
979 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 979 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
980 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 980 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
981 try { 981 try {
982 builder.build().start(); 982 builder.build().start();
983 fail("Exception not thrown"); 983 fail("Exception not thrown");
984 } catch (IllegalArgumentException e) { 984 } catch (IllegalArgumentException e) {
985 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage()); 985 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage());
986 } 986 }
987 } 987 }
988 988
989 @SmallTest 989 @SmallTest
990 @Feature({"Cronet"}) 990 @Feature({"Cronet"})
991 public void testUploadEmptyBodySync() throws Exception { 991 public void testUploadEmptyBodySync() throws Exception {
992 TestUrlRequestListener listener = new TestUrlRequestListener(); 992 TestUrlRequestListener listener = new TestUrlRequestListener();
993 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 993 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
994 listener, listener.getExecutor(), mActivity.mCronetEngine); 994 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
995 995
996 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 996 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
997 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 997 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
998 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 998 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
999 builder.addHeader("Content-Type", "useless/string"); 999 builder.addHeader("Content-Type", "useless/string");
1000 builder.build().start(); 1000 builder.build().start();
1001 listener.blockForDone(); 1001 listener.blockForDone();
1002 1002
1003 assertEquals(0, dataProvider.getLength()); 1003 assertEquals(0, dataProvider.getLength());
1004 assertEquals(0, dataProvider.getNumReadCalls()); 1004 assertEquals(0, dataProvider.getNumReadCalls());
1005 assertEquals(0, dataProvider.getNumRewindCalls()); 1005 assertEquals(0, dataProvider.getNumRewindCalls());
1006 1006
1007 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1007 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1008 assertEquals("", listener.mResponseAsString); 1008 assertEquals("", listener.mResponseAsString);
1009 } 1009 }
1010 1010
1011 @SmallTest 1011 @SmallTest
1012 @Feature({"Cronet"}) 1012 @Feature({"Cronet"})
1013 public void testUploadSync() throws Exception { 1013 public void testUploadSync() throws Exception {
1014 TestUrlRequestListener listener = new TestUrlRequestListener(); 1014 TestUrlRequestListener listener = new TestUrlRequestListener();
1015 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1015 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1016 listener, listener.getExecutor(), mActivity.mCronetEngine); 1016 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1017 1017
1018 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1018 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1019 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1019 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1020 dataProvider.addRead("test".getBytes()); 1020 dataProvider.addRead("test".getBytes());
1021 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1021 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1022 builder.addHeader("Content-Type", "useless/string"); 1022 builder.addHeader("Content-Type", "useless/string");
1023 builder.build().start(); 1023 builder.build().start();
1024 listener.blockForDone(); 1024 listener.blockForDone();
1025 1025
1026 assertEquals(4, dataProvider.getLength()); 1026 assertEquals(4, dataProvider.getLength());
1027 assertEquals(1, dataProvider.getNumReadCalls()); 1027 assertEquals(1, dataProvider.getNumReadCalls());
1028 assertEquals(0, dataProvider.getNumRewindCalls()); 1028 assertEquals(0, dataProvider.getNumRewindCalls());
1029 1029
1030 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1030 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1031 assertEquals("test", listener.mResponseAsString); 1031 assertEquals("test", listener.mResponseAsString);
1032 } 1032 }
1033 1033
1034 @SmallTest 1034 @SmallTest
1035 @Feature({"Cronet"}) 1035 @Feature({"Cronet"})
1036 public void testUploadMultiplePiecesSync() throws Exception { 1036 public void testUploadMultiplePiecesSync() throws Exception {
1037 TestUrlRequestListener listener = new TestUrlRequestListener(); 1037 TestUrlRequestListener listener = new TestUrlRequestListener();
1038 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1038 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1039 listener, listener.getExecutor(), mActivity.mCronetEngine); 1039 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1040 1040
1041 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1041 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1042 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1042 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1043 dataProvider.addRead("Y".getBytes()); 1043 dataProvider.addRead("Y".getBytes());
1044 dataProvider.addRead("et ".getBytes()); 1044 dataProvider.addRead("et ".getBytes());
1045 dataProvider.addRead("another ".getBytes()); 1045 dataProvider.addRead("another ".getBytes());
1046 dataProvider.addRead("test".getBytes()); 1046 dataProvider.addRead("test".getBytes());
1047 1047
1048 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1048 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1049 builder.addHeader("Content-Type", "useless/string"); 1049 builder.addHeader("Content-Type", "useless/string");
1050 builder.build().start(); 1050 builder.build().start();
1051 listener.blockForDone(); 1051 listener.blockForDone();
1052 1052
1053 assertEquals(16, dataProvider.getLength()); 1053 assertEquals(16, dataProvider.getLength());
1054 assertEquals(4, dataProvider.getNumReadCalls()); 1054 assertEquals(4, dataProvider.getNumReadCalls());
1055 assertEquals(0, dataProvider.getNumRewindCalls()); 1055 assertEquals(0, dataProvider.getNumRewindCalls());
1056 1056
1057 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1057 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1058 assertEquals("Yet another test", listener.mResponseAsString); 1058 assertEquals("Yet another test", listener.mResponseAsString);
1059 } 1059 }
1060 1060
1061 @SmallTest 1061 @SmallTest
1062 @Feature({"Cronet"}) 1062 @Feature({"Cronet"})
1063 public void testUploadMultiplePiecesAsync() throws Exception { 1063 public void testUploadMultiplePiecesAsync() throws Exception {
1064 TestUrlRequestListener listener = new TestUrlRequestListener(); 1064 TestUrlRequestListener listener = new TestUrlRequestListener();
1065 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1065 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1066 listener, listener.getExecutor(), mActivity.mCronetEngine); 1066 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1067 1067
1068 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1068 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1069 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1069 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1070 dataProvider.addRead("Y".getBytes()); 1070 dataProvider.addRead("Y".getBytes());
1071 dataProvider.addRead("et ".getBytes()); 1071 dataProvider.addRead("et ".getBytes());
1072 dataProvider.addRead("another ".getBytes()); 1072 dataProvider.addRead("another ".getBytes());
1073 dataProvider.addRead("test".getBytes()); 1073 dataProvider.addRead("test".getBytes());
1074 1074
1075 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1075 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1076 builder.addHeader("Content-Type", "useless/string"); 1076 builder.addHeader("Content-Type", "useless/string");
1077 builder.build().start(); 1077 builder.build().start();
1078 listener.blockForDone(); 1078 listener.blockForDone();
1079 1079
1080 assertEquals(16, dataProvider.getLength()); 1080 assertEquals(16, dataProvider.getLength());
1081 assertEquals(4, dataProvider.getNumReadCalls()); 1081 assertEquals(4, dataProvider.getNumReadCalls());
1082 assertEquals(0, dataProvider.getNumRewindCalls()); 1082 assertEquals(0, dataProvider.getNumRewindCalls());
1083 1083
1084 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1084 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1085 assertEquals("Yet another test", listener.mResponseAsString); 1085 assertEquals("Yet another test", listener.mResponseAsString);
1086 } 1086 }
1087 1087
1088 @SmallTest 1088 @SmallTest
1089 @Feature({"Cronet"}) 1089 @Feature({"Cronet"})
1090 public void testUploadChangesDefaultMethod() throws Exception { 1090 public void testUploadChangesDefaultMethod() throws Exception {
1091 TestUrlRequestListener listener = new TestUrlRequestListener(); 1091 TestUrlRequestListener listener = new TestUrlRequestListener();
1092 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 1092 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
1093 listener, listener.getExecutor(), mActivity.mCronetEngine); 1093 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1094 1094
1095 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1095 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1096 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1096 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1097 dataProvider.addRead("test".getBytes()); 1097 dataProvider.addRead("test".getBytes());
1098 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1098 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1099 builder.addHeader("Content-Type", "useless/string"); 1099 builder.addHeader("Content-Type", "useless/string");
1100 builder.build().start(); 1100 builder.build().start();
1101 listener.blockForDone(); 1101 listener.blockForDone();
1102 1102
1103 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1103 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1104 assertEquals("POST", listener.mResponseAsString); 1104 assertEquals("POST", listener.mResponseAsString);
1105 } 1105 }
1106 1106
1107 @SmallTest 1107 @SmallTest
1108 @Feature({"Cronet"}) 1108 @Feature({"Cronet"})
1109 public void testUploadWithSetMethod() throws Exception { 1109 public void testUploadWithSetMethod() throws Exception {
1110 TestUrlRequestListener listener = new TestUrlRequestListener(); 1110 TestUrlRequestListener listener = new TestUrlRequestListener();
1111 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(), 1111 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoMethodURL(),
1112 listener, listener.getExecutor(), mActivity.mCronetEngine); 1112 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1113 1113
1114 final String method = "PUT"; 1114 final String method = "PUT";
1115 builder.setHttpMethod(method); 1115 builder.setHttpMethod(method);
1116 1116
1117 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1117 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1118 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1118 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1119 dataProvider.addRead("test".getBytes()); 1119 dataProvider.addRead("test".getBytes());
1120 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1120 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1121 builder.addHeader("Content-Type", "useless/string"); 1121 builder.addHeader("Content-Type", "useless/string");
1122 builder.build().start(); 1122 builder.build().start();
1123 listener.blockForDone(); 1123 listener.blockForDone();
1124 1124
1125 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1125 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1126 assertEquals("PUT", listener.mResponseAsString); 1126 assertEquals("PUT", listener.mResponseAsString);
1127 } 1127 }
1128 1128
1129 @SmallTest 1129 @SmallTest
1130 @Feature({"Cronet"}) 1130 @Feature({"Cronet"})
1131 public void testUploadRedirectSync() throws Exception { 1131 public void testUploadRedirectSync() throws Exception {
1132 TestUrlRequestListener listener = new TestUrlRequestListener(); 1132 TestUrlRequestListener listener = new TestUrlRequestListener();
1133 UrlRequest.Builder builder = 1133 UrlRequest.Builder builder =
1134 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener, 1134 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1135 listener.getExecutor(), mActivity.mCronetEngine); 1135 listener.getExecutor(), mTestFramework.mCronetEngine);
1136 1136
1137 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1137 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1138 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1138 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1139 dataProvider.addRead("test".getBytes()); 1139 dataProvider.addRead("test".getBytes());
1140 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1140 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1141 builder.addHeader("Content-Type", "useless/string"); 1141 builder.addHeader("Content-Type", "useless/string");
1142 builder.build().start(); 1142 builder.build().start();
1143 listener.blockForDone(); 1143 listener.blockForDone();
1144 1144
1145 // 1 read call before the rewind, 1 after. 1145 // 1 read call before the rewind, 1 after.
1146 assertEquals(2, dataProvider.getNumReadCalls()); 1146 assertEquals(2, dataProvider.getNumReadCalls());
1147 assertEquals(1, dataProvider.getNumRewindCalls()); 1147 assertEquals(1, dataProvider.getNumRewindCalls());
1148 1148
1149 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1149 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1150 assertEquals("test", listener.mResponseAsString); 1150 assertEquals("test", listener.mResponseAsString);
1151 } 1151 }
1152 1152
1153 @SmallTest 1153 @SmallTest
1154 @Feature({"Cronet"}) 1154 @Feature({"Cronet"})
1155 public void testUploadRedirectAsync() throws Exception { 1155 public void testUploadRedirectAsync() throws Exception {
1156 TestUrlRequestListener listener = new TestUrlRequestListener(); 1156 TestUrlRequestListener listener = new TestUrlRequestListener();
1157 UrlRequest.Builder builder = 1157 UrlRequest.Builder builder =
1158 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener, 1158 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1159 listener.getExecutor(), mActivity.mCronetEngine); 1159 listener.getExecutor(), mTestFramework.mCronetEngine);
1160 1160
1161 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1161 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1162 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1162 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1163 dataProvider.addRead("test".getBytes()); 1163 dataProvider.addRead("test".getBytes());
1164 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1164 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1165 builder.addHeader("Content-Type", "useless/string"); 1165 builder.addHeader("Content-Type", "useless/string");
1166 builder.build().start(); 1166 builder.build().start();
1167 listener.blockForDone(); 1167 listener.blockForDone();
1168 1168
1169 // 1 read call before the rewind, 1 after. 1169 // 1 read call before the rewind, 1 after.
1170 assertEquals(2, dataProvider.getNumReadCalls()); 1170 assertEquals(2, dataProvider.getNumReadCalls());
1171 assertEquals(1, dataProvider.getNumRewindCalls()); 1171 assertEquals(1, dataProvider.getNumRewindCalls());
1172 1172
1173 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 1173 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
1174 assertEquals("test", listener.mResponseAsString); 1174 assertEquals("test", listener.mResponseAsString);
1175 } 1175 }
1176 1176
1177 @SmallTest 1177 @SmallTest
1178 @Feature({"Cronet"}) 1178 @Feature({"Cronet"})
1179 public void testUploadReadFailSync() throws Exception { 1179 public void testUploadReadFailSync() throws Exception {
1180 TestUrlRequestListener listener = new TestUrlRequestListener(); 1180 TestUrlRequestListener listener = new TestUrlRequestListener();
1181 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1181 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1182 listener, listener.getExecutor(), mActivity.mCronetEngine); 1182 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1183 1183
1184 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1184 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1185 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1185 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1186 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); 1186 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC);
1187 // This will never be read, but if the length is 0, read may never be 1187 // This will never be read, but if the length is 0, read may never be
1188 // called. 1188 // called.
1189 dataProvider.addRead("test".getBytes()); 1189 dataProvider.addRead("test".getBytes());
1190 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1190 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1191 builder.addHeader("Content-Type", "useless/string"); 1191 builder.addHeader("Content-Type", "useless/string");
1192 builder.build().start(); 1192 builder.build().start();
1193 listener.blockForDone(); 1193 listener.blockForDone();
1194 1194
1195 assertEquals(1, dataProvider.getNumReadCalls()); 1195 assertEquals(1, dataProvider.getNumReadCalls());
1196 assertEquals(0, dataProvider.getNumRewindCalls()); 1196 assertEquals(0, dataProvider.getNumRewindCalls());
1197 1197
1198 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1198 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1199 assertEquals("Sync read failure", listener.mError.getCause().getMessage( )); 1199 assertEquals("Sync read failure", listener.mError.getCause().getMessage( ));
1200 assertEquals(null, listener.mResponseInfo); 1200 assertEquals(null, listener.mResponseInfo);
1201 } 1201 }
1202 1202
1203 @SmallTest 1203 @SmallTest
1204 @Feature({"Cronet"}) 1204 @Feature({"Cronet"})
1205 public void testUploadReadFailAsync() throws Exception { 1205 public void testUploadReadFailAsync() throws Exception {
1206 TestUrlRequestListener listener = new TestUrlRequestListener(); 1206 TestUrlRequestListener listener = new TestUrlRequestListener();
1207 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1207 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1208 listener, listener.getExecutor(), mActivity.mCronetEngine); 1208 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1209 1209
1210 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1210 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1211 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1211 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1212 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); 1212 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC);
1213 // This will never be read, but if the length is 0, read may never be 1213 // This will never be read, but if the length is 0, read may never be
1214 // called. 1214 // called.
1215 dataProvider.addRead("test".getBytes()); 1215 dataProvider.addRead("test".getBytes());
1216 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1216 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1217 builder.addHeader("Content-Type", "useless/string"); 1217 builder.addHeader("Content-Type", "useless/string");
1218 builder.build().start(); 1218 builder.build().start();
1219 listener.blockForDone(); 1219 listener.blockForDone();
1220 1220
1221 assertEquals(1, dataProvider.getNumReadCalls()); 1221 assertEquals(1, dataProvider.getNumReadCalls());
1222 assertEquals(0, dataProvider.getNumRewindCalls()); 1222 assertEquals(0, dataProvider.getNumRewindCalls());
1223 1223
1224 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1224 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1225 assertEquals("Async read failure", listener.mError.getCause().getMessage ()); 1225 assertEquals("Async read failure", listener.mError.getCause().getMessage ());
1226 assertEquals(null, listener.mResponseInfo); 1226 assertEquals(null, listener.mResponseInfo);
1227 } 1227 }
1228 1228
1229 @SmallTest 1229 @SmallTest
1230 @Feature({"Cronet"}) 1230 @Feature({"Cronet"})
1231 public void testUploadReadFailThrown() throws Exception { 1231 public void testUploadReadFailThrown() throws Exception {
1232 TestUrlRequestListener listener = new TestUrlRequestListener(); 1232 TestUrlRequestListener listener = new TestUrlRequestListener();
1233 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1233 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1234 listener, listener.getExecutor(), mActivity.mCronetEngine); 1234 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1235 1235
1236 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1236 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1237 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1237 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1238 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); 1238 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN);
1239 // This will never be read, but if the length is 0, read may never be 1239 // This will never be read, but if the length is 0, read may never be
1240 // called. 1240 // called.
1241 dataProvider.addRead("test".getBytes()); 1241 dataProvider.addRead("test".getBytes());
1242 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1242 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1243 builder.addHeader("Content-Type", "useless/string"); 1243 builder.addHeader("Content-Type", "useless/string");
1244 builder.build().start(); 1244 builder.build().start();
1245 listener.blockForDone(); 1245 listener.blockForDone();
1246 1246
1247 assertEquals(1, dataProvider.getNumReadCalls()); 1247 assertEquals(1, dataProvider.getNumReadCalls());
1248 assertEquals(0, dataProvider.getNumRewindCalls()); 1248 assertEquals(0, dataProvider.getNumRewindCalls());
1249 1249
1250 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1250 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1251 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e()); 1251 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e());
1252 assertEquals(null, listener.mResponseInfo); 1252 assertEquals(null, listener.mResponseInfo);
1253 } 1253 }
1254 1254
1255 @SmallTest 1255 @SmallTest
1256 @Feature({"Cronet"}) 1256 @Feature({"Cronet"})
1257 public void testUploadRewindFailSync() throws Exception { 1257 public void testUploadRewindFailSync() throws Exception {
1258 TestUrlRequestListener listener = new TestUrlRequestListener(); 1258 TestUrlRequestListener listener = new TestUrlRequestListener();
1259 UrlRequest.Builder builder = 1259 UrlRequest.Builder builder =
1260 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener, 1260 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1261 listener.getExecutor(), mActivity.mCronetEngine); 1261 listener.getExecutor(), mTestFramework.mCronetEngine);
1262 1262
1263 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1263 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1264 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1264 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1265 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); 1265 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC);
1266 dataProvider.addRead("test".getBytes()); 1266 dataProvider.addRead("test".getBytes());
1267 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1267 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1268 builder.addHeader("Content-Type", "useless/string"); 1268 builder.addHeader("Content-Type", "useless/string");
1269 builder.build().start(); 1269 builder.build().start();
1270 listener.blockForDone(); 1270 listener.blockForDone();
1271 1271
1272 assertEquals(1, dataProvider.getNumReadCalls()); 1272 assertEquals(1, dataProvider.getNumReadCalls());
1273 assertEquals(1, dataProvider.getNumRewindCalls()); 1273 assertEquals(1, dataProvider.getNumRewindCalls());
1274 1274
1275 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1275 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1276 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e()); 1276 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e());
1277 assertEquals(null, listener.mResponseInfo); 1277 assertEquals(null, listener.mResponseInfo);
1278 } 1278 }
1279 1279
1280 @SmallTest 1280 @SmallTest
1281 @Feature({"Cronet"}) 1281 @Feature({"Cronet"})
1282 public void testUploadRewindFailAsync() throws Exception { 1282 public void testUploadRewindFailAsync() throws Exception {
1283 TestUrlRequestListener listener = new TestUrlRequestListener(); 1283 TestUrlRequestListener listener = new TestUrlRequestListener();
1284 UrlRequest.Builder builder = 1284 UrlRequest.Builder builder =
1285 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener, 1285 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1286 listener.getExecutor(), mActivity.mCronetEngine); 1286 listener.getExecutor(), mTestFramework.mCronetEngine);
1287 1287
1288 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1288 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1289 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); 1289 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor());
1290 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); 1290 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC);
1291 dataProvider.addRead("test".getBytes()); 1291 dataProvider.addRead("test".getBytes());
1292 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1292 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1293 builder.addHeader("Content-Type", "useless/string"); 1293 builder.addHeader("Content-Type", "useless/string");
1294 builder.build().start(); 1294 builder.build().start();
1295 listener.blockForDone(); 1295 listener.blockForDone();
1296 1296
1297 assertEquals(1, dataProvider.getNumReadCalls()); 1297 assertEquals(1, dataProvider.getNumReadCalls());
1298 assertEquals(1, dataProvider.getNumRewindCalls()); 1298 assertEquals(1, dataProvider.getNumRewindCalls());
1299 1299
1300 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1300 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1301 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge()); 1301 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge());
1302 assertEquals(null, listener.mResponseInfo); 1302 assertEquals(null, listener.mResponseInfo);
1303 } 1303 }
1304 1304
1305 @SmallTest 1305 @SmallTest
1306 @Feature({"Cronet"}) 1306 @Feature({"Cronet"})
1307 public void testUploadRewindFailThrown() throws Exception { 1307 public void testUploadRewindFailThrown() throws Exception {
1308 TestUrlRequestListener listener = new TestUrlRequestListener(); 1308 TestUrlRequestListener listener = new TestUrlRequestListener();
1309 UrlRequest.Builder builder = 1309 UrlRequest.Builder builder =
1310 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener, 1310 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(), listener,
1311 listener.getExecutor(), mActivity.mCronetEngine); 1311 listener.getExecutor(), mTestFramework.mCronetEngine);
1312 1312
1313 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1313 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1314 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1314 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1315 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); 1315 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN);
1316 dataProvider.addRead("test".getBytes()); 1316 dataProvider.addRead("test".getBytes());
1317 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1317 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1318 builder.addHeader("Content-Type", "useless/string"); 1318 builder.addHeader("Content-Type", "useless/string");
1319 builder.build().start(); 1319 builder.build().start();
1320 listener.blockForDone(); 1320 listener.blockForDone();
1321 1321
1322 assertEquals(1, dataProvider.getNumReadCalls()); 1322 assertEquals(1, dataProvider.getNumReadCalls());
1323 assertEquals(1, dataProvider.getNumRewindCalls()); 1323 assertEquals(1, dataProvider.getNumRewindCalls());
1324 1324
1325 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); 1325 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage());
1326 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age()); 1326 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age());
1327 assertEquals(null, listener.mResponseInfo); 1327 assertEquals(null, listener.mResponseInfo);
1328 } 1328 }
1329 1329
1330 @SmallTest 1330 @SmallTest
1331 @Feature({"Cronet"}) 1331 @Feature({"Cronet"})
1332 public void testUploadChunked() throws Exception { 1332 public void testUploadChunked() throws Exception {
1333 TestUrlRequestListener listener = new TestUrlRequestListener(); 1333 TestUrlRequestListener listener = new TestUrlRequestListener();
1334 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1334 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1335 listener, listener.getExecutor(), mActivity.mCronetEngine); 1335 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1336 1336
1337 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1337 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1338 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1338 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1339 dataProvider.addRead("test hello".getBytes()); 1339 dataProvider.addRead("test hello".getBytes());
1340 dataProvider.setChunked(true); 1340 dataProvider.setChunked(true);
1341 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1341 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1342 builder.addHeader("Content-Type", "useless/string"); 1342 builder.addHeader("Content-Type", "useless/string");
1343 1343
1344 assertEquals(-1, dataProvider.getLength()); 1344 assertEquals(-1, dataProvider.getLength());
1345 1345
1346 builder.build().start(); 1346 builder.build().start();
1347 listener.blockForDone(); 1347 listener.blockForDone();
1348 1348
1349 // 1 read call for one data chunk. 1349 // 1 read call for one data chunk.
1350 assertEquals(1, dataProvider.getNumReadCalls()); 1350 assertEquals(1, dataProvider.getNumReadCalls());
1351 assertEquals("test hello", listener.mResponseAsString); 1351 assertEquals("test hello", listener.mResponseAsString);
1352 } 1352 }
1353 1353
1354 @SmallTest 1354 @SmallTest
1355 @Feature({"Cronet"}) 1355 @Feature({"Cronet"})
1356 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { 1356 public void testUploadChunkedLastReadZeroLengthBody() throws Exception {
1357 TestUrlRequestListener listener = new TestUrlRequestListener(); 1357 TestUrlRequestListener listener = new TestUrlRequestListener();
1358 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1358 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1359 listener, listener.getExecutor(), mActivity.mCronetEngine); 1359 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1360 1360
1361 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1361 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1362 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1362 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1363 // Add 3 reads. The last read has a 0-length body. 1363 // Add 3 reads. The last read has a 0-length body.
1364 dataProvider.addRead("hello there".getBytes()); 1364 dataProvider.addRead("hello there".getBytes());
1365 dataProvider.addRead("!".getBytes()); 1365 dataProvider.addRead("!".getBytes());
1366 dataProvider.addRead("".getBytes()); 1366 dataProvider.addRead("".getBytes());
1367 dataProvider.setChunked(true); 1367 dataProvider.setChunked(true);
1368 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1368 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1369 builder.addHeader("Content-Type", "useless/string"); 1369 builder.addHeader("Content-Type", "useless/string");
1370 1370
1371 assertEquals(-1, dataProvider.getLength()); 1371 assertEquals(-1, dataProvider.getLength());
1372 1372
1373 builder.build().start(); 1373 builder.build().start();
1374 listener.blockForDone(); 1374 listener.blockForDone();
1375 1375
1376 // 2 read call for the first two data chunks, and 1 for final chunk. 1376 // 2 read call for the first two data chunks, and 1 for final chunk.
1377 assertEquals(3, dataProvider.getNumReadCalls()); 1377 assertEquals(3, dataProvider.getNumReadCalls());
1378 assertEquals("hello there!", listener.mResponseAsString); 1378 assertEquals("hello there!", listener.mResponseAsString);
1379 } 1379 }
1380 1380
1381 // Test where an upload fails without ever initializing the 1381 // Test where an upload fails without ever initializing the
1382 // UploadDataStream, because it can't connect to the server. 1382 // UploadDataStream, because it can't connect to the server.
1383 @SmallTest 1383 @SmallTest
1384 @Feature({"Cronet"}) 1384 @Feature({"Cronet"})
1385 public void testUploadFailsWithoutInitializingStream() throws Exception { 1385 public void testUploadFailsWithoutInitializingStream() throws Exception {
1386 TestUrlRequestListener listener = new TestUrlRequestListener(); 1386 TestUrlRequestListener listener = new TestUrlRequestListener();
1387 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1387 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1388 listener, listener.getExecutor(), mActivity.mCronetEngine); 1388 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1389 // Shut down the test server, so connecting to it fails. Note that 1389 // Shut down the test server, so connecting to it fails. Note that
1390 // calling shutdown again during teardown is safe. 1390 // calling shutdown again during teardown is safe.
1391 NativeTestServer.shutdownNativeTestServer(); 1391 NativeTestServer.shutdownNativeTestServer();
1392 1392
1393 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1393 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1394 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); 1394 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor());
1395 dataProvider.addRead("test".getBytes()); 1395 dataProvider.addRead("test".getBytes());
1396 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); 1396 builder.setUploadDataProvider(dataProvider, listener.getExecutor());
1397 builder.addHeader("Content-Type", "useless/string"); 1397 builder.addHeader("Content-Type", "useless/string");
1398 builder.build().start(); 1398 builder.build().start();
1399 listener.blockForDone(); 1399 listener.blockForDone();
1400 1400
1401 assertNull(listener.mResponseInfo); 1401 assertNull(listener.mResponseInfo);
1402 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", 1402 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ",
1403 listener.mError.getMessage()); 1403 listener.mError.getMessage());
1404 } 1404 }
1405 1405
1406 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , 1406 private void throwOrCancel(FailureType failureType, ResponseStep failureStep ,
1407 boolean expectResponseInfo, boolean expectError) { 1407 boolean expectResponseInfo, boolean expectError) {
1408 TestUrlRequestListener listener = new TestUrlRequestListener(); 1408 TestUrlRequestListener listener = new TestUrlRequestListener();
1409 listener.setFailure(failureType, failureStep); 1409 listener.setFailure(failureType, failureStep);
1410 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(), 1410 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(),
1411 listener, listener.getExecutor(), mActivity.mCronetEngine); 1411 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1412 UrlRequest urlRequest = builder.build(); 1412 UrlRequest urlRequest = builder.build();
1413 urlRequest.start(); 1413 urlRequest.start();
1414 listener.blockForDone(); 1414 listener.blockForDone();
1415 assertEquals(1, listener.mRedirectCount); 1415 assertEquals(1, listener.mRedirectCount);
1416 assertEquals(listener.mResponseStep, failureStep); 1416 assertEquals(listener.mResponseStep, failureStep);
1417 assertTrue(urlRequest.isDone()); 1417 assertTrue(urlRequest.isDone());
1418 assertEquals(expectResponseInfo, listener.mResponseInfo != null); 1418 assertEquals(expectResponseInfo, listener.mResponseInfo != null);
1419 assertEquals(expectError, listener.mError != null); 1419 assertEquals(expectError, listener.mError != null);
1420 assertEquals(expectError, listener.mOnErrorCalled); 1420 assertEquals(expectError, listener.mOnErrorCalled);
1421 assertEquals(failureType == FailureType.CANCEL_SYNC 1421 assertEquals(failureType == FailureType.CANCEL_SYNC
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1454 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, 1454 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED,
1455 true, true); 1455 true, true);
1456 } 1456 }
1457 1457
1458 @SmallTest 1458 @SmallTest
1459 @Feature({"Cronet"}) 1459 @Feature({"Cronet"})
1460 public void testThrowON_SUCCEEDED() { 1460 public void testThrowON_SUCCEEDED() {
1461 TestUrlRequestListener listener = new TestUrlRequestListener(); 1461 TestUrlRequestListener listener = new TestUrlRequestListener();
1462 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); 1462 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED);
1463 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(), 1463 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get RedirectURL(),
1464 listener, listener.getExecutor(), mActivity.mCronetEngine); 1464 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1465 UrlRequest urlRequest = builder.build(); 1465 UrlRequest urlRequest = builder.build();
1466 urlRequest.start(); 1466 urlRequest.start();
1467 listener.blockForDone(); 1467 listener.blockForDone();
1468 assertEquals(1, listener.mRedirectCount); 1468 assertEquals(1, listener.mRedirectCount);
1469 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); 1469 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED);
1470 assertTrue(urlRequest.isDone()); 1470 assertTrue(urlRequest.isDone());
1471 assertNotNull(listener.mResponseInfo); 1471 assertNotNull(listener.mResponseInfo);
1472 assertNull(listener.mError); 1472 assertNull(listener.mError);
1473 assertFalse(listener.mOnErrorCalled); 1473 assertFalse(listener.mOnErrorCalled);
1474 } 1474 }
1475 1475
1476 @SmallTest 1476 @SmallTest
1477 @Feature({"Cronet"}) 1477 @Feature({"Cronet"})
1478 public void testExecutorShutdown() { 1478 public void testExecutorShutdown() {
1479 TestUrlRequestListener listener = new TestUrlRequestListener(); 1479 TestUrlRequestListener listener = new TestUrlRequestListener();
1480 1480
1481 listener.setAutoAdvance(false); 1481 listener.setAutoAdvance(false);
1482 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1482 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1483 listener, listener.getExecutor(), mActivity.mCronetEngine); 1483 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1484 CronetUrlRequest urlRequest = (CronetUrlRequest) builder.build(); 1484 CronetUrlRequest urlRequest = (CronetUrlRequest) builder.build();
1485 urlRequest.start(); 1485 urlRequest.start();
1486 listener.waitForNextStep(); 1486 listener.waitForNextStep();
1487 assertFalse(listener.isDone()); 1487 assertFalse(listener.isDone());
1488 assertFalse(urlRequest.isDone()); 1488 assertFalse(urlRequest.isDone());
1489 1489
1490 final ConditionVariable requestDestroyed = new ConditionVariable(false); 1490 final ConditionVariable requestDestroyed = new ConditionVariable(false);
1491 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { 1491 urlRequest.setOnDestroyedCallbackForTests(new Runnable() {
1492 @Override 1492 @Override
1493 public void run() { 1493 public void run() {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 mReadCalled.open(); 1528 mReadCalled.open();
1529 } 1529 }
1530 1530
1531 @Override 1531 @Override
1532 public void rewind(final UploadDataSink uploadDataSink) { 1532 public void rewind(final UploadDataSink uploadDataSink) {
1533 } 1533 }
1534 } 1534 }
1535 1535
1536 TestUrlRequestListener listener = new TestUrlRequestListener(); 1536 TestUrlRequestListener listener = new TestUrlRequestListener();
1537 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1537 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1538 listener, listener.getExecutor(), mActivity.mCronetEngine); 1538 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
1539 1539
1540 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); 1540 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor();
1541 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ; 1541 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ;
1542 builder.setUploadDataProvider(dataProvider, uploadExecutor); 1542 builder.setUploadDataProvider(dataProvider, uploadExecutor);
1543 builder.addHeader("Content-Type", "useless/string"); 1543 builder.addHeader("Content-Type", "useless/string");
1544 UrlRequest urlRequest = builder.build(); 1544 UrlRequest urlRequest = builder.build();
1545 urlRequest.start(); 1545 urlRequest.start();
1546 // Wait for read to be called on executor. 1546 // Wait for read to be called on executor.
1547 dataProvider.mReadCalled.block(); 1547 dataProvider.mReadCalled.block();
1548 // Shutdown the executor, so posting next task will throw an exception. 1548 // Shutdown the executor, so posting next task will throw an exception.
(...skipping 16 matching lines...) Expand all
1565 int end) { 1565 int end) {
1566 // Use a duplicate to avoid modifying byteBuffer. 1566 // Use a duplicate to avoid modifying byteBuffer.
1567 ByteBuffer duplicate = byteBuffer.duplicate(); 1567 ByteBuffer duplicate = byteBuffer.duplicate();
1568 duplicate.position(start); 1568 duplicate.position(start);
1569 duplicate.limit(end); 1569 duplicate.limit(end);
1570 byte[] contents = new byte[duplicate.remaining()]; 1570 byte[] contents = new byte[duplicate.remaining()];
1571 duplicate.get(contents); 1571 duplicate.get(contents);
1572 return new String(contents); 1572 return new String(contents);
1573 } 1573 }
1574 } 1574 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698