OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |