| 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 |