| 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 import android.util.Pair; | 9 import android.util.Pair; |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 mActivity = launchCronetTestApp(); | 37 mActivity = launchCronetTestApp(); |
| 38 assertTrue(NativeTestServer.startNativeTestServer( | 38 assertTrue(NativeTestServer.startNativeTestServer( |
| 39 getInstrumentation().getTargetContext())); | 39 getInstrumentation().getTargetContext())); |
| 40 // Add url interceptors after native application context is initialized. | 40 // Add url interceptors after native application context is initialized. |
| 41 MockUrlRequestJobFactory.setUp(); | 41 MockUrlRequestJobFactory.setUp(); |
| 42 } | 42 } |
| 43 | 43 |
| 44 @Override | 44 @Override |
| 45 protected void tearDown() throws Exception { | 45 protected void tearDown() throws Exception { |
| 46 NativeTestServer.shutdownNativeTestServer(); | 46 NativeTestServer.shutdownNativeTestServer(); |
| 47 mActivity.mUrlRequestContext.shutdown(); | 47 mActivity.mCronetEngine.shutdown(); |
| 48 super.tearDown(); | 48 super.tearDown(); |
| 49 } | 49 } |
| 50 | 50 |
| 51 private TestUrlRequestListener startAndWaitForComplete(String url) | 51 private TestUrlRequestListener startAndWaitForComplete(String url) |
| 52 throws Exception { | 52 throws Exception { |
| 53 TestUrlRequestListener listener = new TestUrlRequestListener(); | 53 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 54 // Create request. | 54 // Create request. |
| 55 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 55 UrlRequest.Builder builder = new UrlRequest.Builder( |
| 56 url, listener, listener.getExecutor()); | 56 url, listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 57 UrlRequest urlRequest = builder.build(); |
| 57 urlRequest.start(); | 58 urlRequest.start(); |
| 58 listener.blockForDone(); | 59 listener.blockForDone(); |
| 59 assertTrue(urlRequest.isDone()); | 60 assertTrue(urlRequest.isDone()); |
| 60 return listener; | 61 return listener; |
| 61 } | 62 } |
| 62 | 63 |
| 63 private void checkResponseInfo(ResponseInfo responseInfo, | 64 private void checkResponseInfo(ResponseInfo responseInfo, |
| 64 String expectedUrl, int expectedHttpStatusCode, | 65 String expectedUrl, int expectedHttpStatusCode, |
| 65 String expectedHttpStatusText) { | 66 String expectedHttpStatusText) { |
| 66 assertEquals(expectedUrl, responseInfo.getUrl()); | 67 assertEquals(expectedUrl, responseInfo.getUrl()); |
| 67 assertEquals(expectedUrl, responseInfo.getUrlChain()[ | 68 assertEquals(expectedUrl, responseInfo.getUrlChain()[ |
| 68 responseInfo.getUrlChain().length - 1]); | 69 responseInfo.getUrlChain().length - 1]); |
| 69 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); | 70 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); |
| 70 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText()); | 71 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText()); |
| 71 assertFalse(responseInfo.wasCached()); | 72 assertFalse(responseInfo.wasCached()); |
| 72 } | 73 } |
| 73 | 74 |
| 74 private void checkResponseInfoHeader(ResponseInfo responseInfo, | 75 private void checkResponseInfoHeader(ResponseInfo responseInfo, |
| 75 String headerName, String headerValue) { | 76 String headerName, String headerValue) { |
| 76 Map<String, List<String>> responseHeaders = | 77 Map<String, List<String>> responseHeaders = |
| 77 responseInfo.getAllHeaders(); | 78 responseInfo.getAllHeaders(); |
| 78 List<String> header = responseHeaders.get(headerName); | 79 List<String> header = responseHeaders.get(headerName); |
| 79 assertNotNull(header); | 80 assertNotNull(header); |
| 80 assertTrue(header.contains(headerValue)); | 81 assertTrue(header.contains(headerValue)); |
| 81 } | 82 } |
| 82 | 83 |
| 83 @SmallTest | 84 @SmallTest |
| 84 @Feature({"Cronet"}) | 85 @Feature({"Cronet"}) |
| 86 public void testBuilderChecks() throws Exception { |
| 87 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 88 try { |
| 89 new UrlRequest.Builder(null, |
| 90 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 91 fail("URL not null-checked"); |
| 92 } catch (NullPointerException e) { |
| 93 assertEquals("URL is required.", e.getMessage()); |
| 94 } |
| 95 try { |
| 96 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), |
| 97 null, listener.getExecutor(), mActivity.mCronetEngine); |
| 98 fail("Listener not null-checked"); |
| 99 } catch (NullPointerException e) { |
| 100 assertEquals("Listener is required.", e.getMessage()); |
| 101 } |
| 102 try { |
| 103 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), |
| 104 listener, null, mActivity.mCronetEngine); |
| 105 fail("Executor not null-checked"); |
| 106 } catch (NullPointerException e) { |
| 107 assertEquals("Executor is required.", e.getMessage()); |
| 108 } |
| 109 try { |
| 110 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), |
| 111 listener, listener.getExecutor(), null); |
| 112 fail("CronetEngine not null-checked"); |
| 113 } catch (NullPointerException e) { |
| 114 assertEquals("CronetEngine is required.", e.getMessage()); |
| 115 } |
| 116 // Verify successful creation doesn't throw. |
| 117 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), |
| 118 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 119 } |
| 120 |
| 121 @SmallTest |
| 122 @Feature({"Cronet"}) |
| 85 public void testSimpleGet() throws Exception { | 123 public void testSimpleGet() throws Exception { |
| 86 TestUrlRequestListener listener = startAndWaitForComplete( | 124 TestUrlRequestListener listener = startAndWaitForComplete( |
| 87 NativeTestServer.getEchoMethodURL()); | 125 NativeTestServer.getEchoMethodURL()); |
| 88 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 126 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 89 // Default method is 'GET'. | 127 // Default method is 'GET'. |
| 90 assertEquals("GET", listener.mResponseAsString); | 128 assertEquals("GET", listener.mResponseAsString); |
| 91 assertEquals(0, listener.mRedirectCount); | 129 assertEquals(0, listener.mRedirectCount); |
| 92 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 130 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
| 93 checkResponseInfo(listener.mResponseInfo, | 131 checkResponseInfo(listener.mResponseInfo, |
| 94 NativeTestServer.getEchoMethodURL(), 200, "OK"); | 132 NativeTestServer.getEchoMethodURL(), 200, "OK"); |
| 95 checkResponseInfo(listener.mExtendedResponseInfo.getResponseInfo(), | 133 checkResponseInfo(listener.mExtendedResponseInfo.getResponseInfo(), |
| 96 NativeTestServer.getEchoMethodURL(), 200, "OK"); | 134 NativeTestServer.getEchoMethodURL(), 200, "OK"); |
| 97 } | 135 } |
| 98 | 136 |
| 99 /** | 137 /** |
| 100 * Tests a redirect by running it step-by-step. Also tests that delaying a | 138 * Tests a redirect by running it step-by-step. Also tests that delaying a |
| 101 * request works as expected. To make sure there are no unexpected pending | 139 * request works as expected. To make sure there are no unexpected pending |
| 102 * messages, does a GET between UrlRequestListener callbacks. | 140 * messages, does a GET between UrlRequestListener callbacks. |
| 103 */ | 141 */ |
| 104 @SmallTest | 142 @SmallTest |
| 105 @Feature({"Cronet"}) | 143 @Feature({"Cronet"}) |
| 106 public void testRedirectAsync() throws Exception { | 144 public void testRedirectAsync() throws Exception { |
| 107 // Start the request and wait to see the redirect. | 145 // Start the request and wait to see the redirect. |
| 108 TestUrlRequestListener listener = new TestUrlRequestListener(); | 146 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 109 listener.setAutoAdvance(false); | 147 listener.setAutoAdvance(false); |
| 110 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 148 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
RedirectURL(), |
| 111 NativeTestServer.getRedirectURL(), listener, listener.getExecuto
r()); | 149 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 150 UrlRequest urlRequest = builder.build(); |
| 112 urlRequest.start(); | 151 urlRequest.start(); |
| 113 listener.waitForNextStep(); | 152 listener.waitForNextStep(); |
| 114 | 153 |
| 115 // Check the redirect. | 154 // Check the redirect. |
| 116 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); | 155 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); |
| 117 assertEquals(1, listener.mRedirectResponseInfoList.size()); | 156 assertEquals(1, listener.mRedirectResponseInfoList.size()); |
| 118 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), | 157 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), |
| 119 NativeTestServer.getRedirectURL(), 302, "Found"); | 158 NativeTestServer.getRedirectURL(), 302, "Found"); |
| 120 assertEquals(1, | 159 assertEquals(1, |
| 121 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); | 160 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 // onFailed messages. This test relies on checks in | 249 // onFailed messages. This test relies on checks in |
| 211 // TestUrlRequestListener catching a second onFailed call. | 250 // TestUrlRequestListener catching a second onFailed call. |
| 212 testSimpleGet(); | 251 testSimpleGet(); |
| 213 } | 252 } |
| 214 | 253 |
| 215 @SmallTest | 254 @SmallTest |
| 216 @Feature({"Cronet"}) | 255 @Feature({"Cronet"}) |
| 217 public void testSetHttpMethod() throws Exception { | 256 public void testSetHttpMethod() throws Exception { |
| 218 TestUrlRequestListener listener = new TestUrlRequestListener(); | 257 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 219 String methodName = "HEAD"; | 258 String methodName = "HEAD"; |
| 220 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 259 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoMethodURL(), |
| 221 NativeTestServer.getEchoMethodURL(), listener, | 260 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 222 listener.getExecutor()); | |
| 223 // Try to set 'null' method. | 261 // Try to set 'null' method. |
| 224 try { | 262 try { |
| 225 urlRequest.setHttpMethod(null); | 263 builder.setHttpMethod(null); |
| 226 fail("Exception not thrown"); | 264 fail("Exception not thrown"); |
| 227 } catch (NullPointerException e) { | 265 } catch (NullPointerException e) { |
| 228 assertEquals("Method is required.", e.getMessage()); | 266 assertEquals("Method is required.", e.getMessage()); |
| 229 } | 267 } |
| 230 | 268 |
| 231 urlRequest.setHttpMethod(methodName); | 269 builder.setHttpMethod(methodName); |
| 232 urlRequest.start(); | 270 builder.build().start(); |
| 233 try { | |
| 234 urlRequest.setHttpMethod("toolate"); | |
| 235 fail("Exception not thrown"); | |
| 236 } catch (IllegalStateException e) { | |
| 237 assertEquals("Request is already started.", e.getMessage()); | |
| 238 } | |
| 239 listener.blockForDone(); | 271 listener.blockForDone(); |
| 240 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 272 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 241 assertEquals(0, listener.mHttpResponseDataLength); | 273 assertEquals(0, listener.mHttpResponseDataLength); |
| 242 } | 274 } |
| 243 | 275 |
| 244 @SmallTest | 276 @SmallTest |
| 245 @Feature({"Cronet"}) | 277 @Feature({"Cronet"}) |
| 246 public void testBadMethod() throws Exception { | 278 public void testBadMethod() throws Exception { |
| 247 TestUrlRequestListener listener = new TestUrlRequestListener(); | 279 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 248 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 280 UrlRequest.Builder builder = new UrlRequest.Builder( |
| 249 TEST_URL, listener, listener.getExecutor()); | 281 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng
ine); |
| 250 try { | 282 try { |
| 251 urlRequest.setHttpMethod("bad:method!"); | 283 builder.setHttpMethod("bad:method!"); |
| 252 urlRequest.start(); | 284 builder.build().start(); |
| 253 fail("IllegalArgumentException not thrown."); | 285 fail("IllegalArgumentException not thrown."); |
| 254 } catch (IllegalArgumentException e) { | 286 } catch (IllegalArgumentException e) { |
| 255 assertEquals("Invalid http method bad:method!", | 287 assertEquals("Invalid http method bad:method!", |
| 256 e.getMessage()); | 288 e.getMessage()); |
| 257 } | 289 } |
| 258 } | 290 } |
| 259 | 291 |
| 260 @SmallTest | 292 @SmallTest |
| 261 @Feature({"Cronet"}) | 293 @Feature({"Cronet"}) |
| 262 public void testBadHeaderName() throws Exception { | 294 public void testBadHeaderName() throws Exception { |
| 263 TestUrlRequestListener listener = new TestUrlRequestListener(); | 295 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 264 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 296 UrlRequest.Builder builder = new UrlRequest.Builder( |
| 265 TEST_URL, listener, listener.getExecutor()); | 297 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng
ine); |
| 266 try { | 298 try { |
| 267 urlRequest.addHeader("header:name", "headervalue"); | 299 builder.addHeader("header:name", "headervalue"); |
| 268 urlRequest.start(); | 300 builder.build().start(); |
| 269 fail("IllegalArgumentException not thrown."); | 301 fail("IllegalArgumentException not thrown."); |
| 270 } catch (IllegalArgumentException e) { | 302 } catch (IllegalArgumentException e) { |
| 271 assertEquals("Invalid header header:name=headervalue", | 303 assertEquals("Invalid header header:name=headervalue", |
| 272 e.getMessage()); | 304 e.getMessage()); |
| 273 } | 305 } |
| 274 } | 306 } |
| 275 | 307 |
| 276 @SmallTest | 308 @SmallTest |
| 277 @Feature({"Cronet"}) | 309 @Feature({"Cronet"}) |
| 278 public void testBadHeaderValue() throws Exception { | 310 public void testBadHeaderValue() throws Exception { |
| 279 TestUrlRequestListener listener = new TestUrlRequestListener(); | 311 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 280 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 312 UrlRequest.Builder builder = new UrlRequest.Builder( |
| 281 TEST_URL, listener, listener.getExecutor()); | 313 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng
ine); |
| 282 try { | 314 try { |
| 283 urlRequest.addHeader("headername", "bad header\r\nvalue"); | 315 builder.addHeader("headername", "bad header\r\nvalue"); |
| 284 urlRequest.start(); | 316 builder.build().start(); |
| 285 fail("IllegalArgumentException not thrown."); | 317 fail("IllegalArgumentException not thrown."); |
| 286 } catch (IllegalArgumentException e) { | 318 } catch (IllegalArgumentException e) { |
| 287 assertEquals("Invalid header headername=bad header\r\nvalue", | 319 assertEquals("Invalid header headername=bad header\r\nvalue", |
| 288 e.getMessage()); | 320 e.getMessage()); |
| 289 } | 321 } |
| 290 } | 322 } |
| 291 | 323 |
| 292 @SmallTest | 324 @SmallTest |
| 293 @Feature({"Cronet"}) | 325 @Feature({"Cronet"}) |
| 294 public void testAddHeader() throws Exception { | 326 public void testAddHeader() throws Exception { |
| 295 TestUrlRequestListener listener = new TestUrlRequestListener(); | 327 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 296 String headerName = "header-name"; | 328 String headerName = "header-name"; |
| 297 String headerValue = "header-value"; | 329 String headerValue = "header-value"; |
| 298 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 330 UrlRequest.Builder builder = |
| 299 NativeTestServer.getEchoHeaderURL(headerName), listener, | 331 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN
ame), listener, |
| 300 listener.getExecutor()); | 332 listener.getExecutor(), mActivity.mCronetEngine); |
| 301 | 333 |
| 302 urlRequest.addHeader(headerName, headerValue); | 334 builder.addHeader(headerName, headerValue); |
| 303 urlRequest.start(); | 335 builder.build().start(); |
| 304 try { | |
| 305 urlRequest.addHeader("header2", "value"); | |
| 306 fail("Exception not thrown"); | |
| 307 } catch (IllegalStateException e) { | |
| 308 assertEquals("Request is already started.", e.getMessage()); | |
| 309 } | |
| 310 listener.blockForDone(); | 336 listener.blockForDone(); |
| 311 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 337 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 312 assertEquals(headerValue, listener.mResponseAsString); | 338 assertEquals(headerValue, listener.mResponseAsString); |
| 313 } | 339 } |
| 314 | 340 |
| 315 @SmallTest | 341 @SmallTest |
| 316 @Feature({"Cronet"}) | 342 @Feature({"Cronet"}) |
| 317 public void testMultiRequestHeaders() throws Exception { | 343 public void testMultiRequestHeaders() throws Exception { |
| 318 TestUrlRequestListener listener = new TestUrlRequestListener(); | 344 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 319 String headerName = "header-name"; | 345 String headerName = "header-name"; |
| 320 String headerValue1 = "header-value1"; | 346 String headerValue1 = "header-value1"; |
| 321 String headerValue2 = "header-value2"; | 347 String headerValue2 = "header-value2"; |
| 322 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 348 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoAllHeadersURL(), |
| 323 NativeTestServer.getEchoAllHeadersURL(), listener, | 349 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 324 listener.getExecutor()); | 350 builder.addHeader(headerName, headerValue1); |
| 325 urlRequest.addHeader(headerName, headerValue1); | 351 builder.addHeader(headerName, headerValue2); |
| 326 urlRequest.addHeader(headerName, headerValue2); | 352 builder.build().start(); |
| 327 urlRequest.start(); | |
| 328 listener.blockForDone(); | 353 listener.blockForDone(); |
| 329 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 354 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 330 String headers = listener.mResponseAsString; | 355 String headers = listener.mResponseAsString; |
| 331 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); | 356 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); |
| 332 Matcher matcher = pattern.matcher(headers); | 357 Matcher matcher = pattern.matcher(headers); |
| 333 List<String> actualValues = new ArrayList<String>(); | 358 List<String> actualValues = new ArrayList<String>(); |
| 334 while (matcher.find()) { | 359 while (matcher.find()) { |
| 335 actualValues.add(matcher.group(1)); | 360 actualValues.add(matcher.group(1)); |
| 336 } | 361 } |
| 337 assertEquals(1, actualValues.size()); | 362 assertEquals(1, actualValues.size()); |
| 338 assertEquals("header-value2", actualValues.get(0)); | 363 assertEquals("header-value2", actualValues.get(0)); |
| 339 } | 364 } |
| 340 | 365 |
| 341 @SmallTest | 366 @SmallTest |
| 342 @Feature({"Cronet"}) | 367 @Feature({"Cronet"}) |
| 343 public void testCustomUserAgent() throws Exception { | 368 public void testCustomUserAgent() throws Exception { |
| 344 TestUrlRequestListener listener = new TestUrlRequestListener(); | 369 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 345 String userAgentName = "User-Agent"; | 370 String userAgentName = "User-Agent"; |
| 346 String userAgentValue = "User-Agent-Value"; | 371 String userAgentValue = "User-Agent-Value"; |
| 347 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 372 UrlRequest.Builder builder = |
| 348 NativeTestServer.getEchoHeaderURL(userAgentName), listener, | 373 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge
ntName), listener, |
| 349 listener.getExecutor()); | 374 listener.getExecutor(), mActivity.mCronetEngine); |
| 350 urlRequest.addHeader(userAgentName, userAgentValue); | 375 builder.addHeader(userAgentName, userAgentValue); |
| 351 urlRequest.start(); | 376 builder.build().start(); |
| 352 listener.blockForDone(); | 377 listener.blockForDone(); |
| 353 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 378 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 354 assertEquals(userAgentValue, listener.mResponseAsString); | 379 assertEquals(userAgentValue, listener.mResponseAsString); |
| 355 } | 380 } |
| 356 | 381 |
| 357 @SmallTest | 382 @SmallTest |
| 358 @Feature({"Cronet"}) | 383 @Feature({"Cronet"}) |
| 359 public void testDefaultUserAgent() throws Exception { | 384 public void testDefaultUserAgent() throws Exception { |
| 360 TestUrlRequestListener listener = new TestUrlRequestListener(); | 385 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 361 String headerName = "User-Agent"; | 386 String headerName = "User-Agent"; |
| 362 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 387 UrlRequest.Builder builder = |
| 363 NativeTestServer.getEchoHeaderURL(headerName), listener, | 388 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(headerN
ame), listener, |
| 364 listener.getExecutor()); | 389 listener.getExecutor(), mActivity.mCronetEngine); |
| 365 urlRequest.start(); | 390 builder.build().start(); |
| 366 listener.blockForDone(); | 391 listener.blockForDone(); |
| 367 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 392 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 368 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " | 393 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " |
| 369 + listener.mResponseAsString, | 394 + listener.mResponseAsString, |
| 370 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", | 395 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", |
| 371 listener.mResponseAsString)); | 396 listener.mResponseAsString)); |
| 372 } | 397 } |
| 373 | 398 |
| 374 @SmallTest | 399 @SmallTest |
| 375 @Feature({"Cronet"}) | 400 @Feature({"Cronet"}) |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 * when using legacy read() API. | 558 * when using legacy read() API. |
| 534 */ | 559 */ |
| 535 @SmallTest | 560 @SmallTest |
| 536 @Feature({"Cronet"}) | 561 @Feature({"Cronet"}) |
| 537 public void testLegacySimpleGetBufferUpdates() throws Exception { | 562 public void testLegacySimpleGetBufferUpdates() throws Exception { |
| 538 TestUrlRequestListener listener = new TestUrlRequestListener(); | 563 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 539 listener.mLegacyReadByteBufferAdjustment = true; | 564 listener.mLegacyReadByteBufferAdjustment = true; |
| 540 listener.setAutoAdvance(false); | 565 listener.setAutoAdvance(false); |
| 541 // Since the default method is "GET", the expected response body is also | 566 // Since the default method is "GET", the expected response body is also |
| 542 // "GET". | 567 // "GET". |
| 543 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 568 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoMethodURL(), |
| 544 NativeTestServer.getEchoMethodURL(), | 569 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 545 listener, listener.getExecutor()); | 570 UrlRequest urlRequest = builder.build(); |
| 546 urlRequest.start(); | 571 urlRequest.start(); |
| 547 listener.waitForNextStep(); | 572 listener.waitForNextStep(); |
| 548 | 573 |
| 549 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); | 574 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); |
| 550 readBuffer.put("FOR".getBytes()); | 575 readBuffer.put("FOR".getBytes()); |
| 551 assertEquals(3, readBuffer.position()); | 576 assertEquals(3, readBuffer.position()); |
| 552 | 577 |
| 553 // Read first two characters of the response ("GE"). It's theoretically | 578 // Read first two characters of the response ("GE"). It's theoretically |
| 554 // possible to need one read per character, though in practice, | 579 // possible to need one read per character, though in practice, |
| 555 // shouldn't happen. | 580 // shouldn't happen. |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 /** | 645 /** |
| 621 * Checks that the buffer is updated correctly, when starting at an offset. | 646 * Checks that the buffer is updated correctly, when starting at an offset. |
| 622 */ | 647 */ |
| 623 @SmallTest | 648 @SmallTest |
| 624 @Feature({"Cronet"}) | 649 @Feature({"Cronet"}) |
| 625 public void testSimpleGetBufferUpdates() throws Exception { | 650 public void testSimpleGetBufferUpdates() throws Exception { |
| 626 TestUrlRequestListener listener = new TestUrlRequestListener(); | 651 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 627 listener.setAutoAdvance(false); | 652 listener.setAutoAdvance(false); |
| 628 // Since the default method is "GET", the expected response body is also | 653 // Since the default method is "GET", the expected response body is also |
| 629 // "GET". | 654 // "GET". |
| 630 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 655 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoMethodURL(), |
| 631 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu
tor()); | 656 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 657 UrlRequest urlRequest = builder.build(); |
| 632 urlRequest.start(); | 658 urlRequest.start(); |
| 633 listener.waitForNextStep(); | 659 listener.waitForNextStep(); |
| 634 | 660 |
| 635 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); | 661 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); |
| 636 readBuffer.put("FOR".getBytes()); | 662 readBuffer.put("FOR".getBytes()); |
| 637 assertEquals(3, readBuffer.position()); | 663 assertEquals(3, readBuffer.position()); |
| 638 | 664 |
| 639 // Read first two characters of the response ("GE"). It's theoretically | 665 // Read first two characters of the response ("GE"). It's theoretically |
| 640 // possible to need one read per character, though in practice, | 666 // possible to need one read per character, though in practice, |
| 641 // shouldn't happen. | 667 // shouldn't happen. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 // Make sure there are no other pending messages, which would trigger | 727 // Make sure there are no other pending messages, which would trigger |
| 702 // asserts in TestURLRequestListener. | 728 // asserts in TestURLRequestListener. |
| 703 testSimpleGet(); | 729 testSimpleGet(); |
| 704 } | 730 } |
| 705 | 731 |
| 706 @SmallTest | 732 @SmallTest |
| 707 @Feature({"Cronet"}) | 733 @Feature({"Cronet"}) |
| 708 public void testBadBuffers() throws Exception { | 734 public void testBadBuffers() throws Exception { |
| 709 TestUrlRequestListener listener = new TestUrlRequestListener(); | 735 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 710 listener.setAutoAdvance(false); | 736 listener.setAutoAdvance(false); |
| 711 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 737 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoMethodURL(), |
| 712 NativeTestServer.getEchoMethodURL(), listener, | 738 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 713 listener.getExecutor()); | 739 UrlRequest urlRequest = builder.build(); |
| 714 urlRequest.start(); | 740 urlRequest.start(); |
| 715 listener.waitForNextStep(); | 741 listener.waitForNextStep(); |
| 716 | 742 |
| 717 // Try to read using a full buffer. | 743 // Try to read using a full buffer. |
| 718 try { | 744 try { |
| 719 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); | 745 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); |
| 720 readBuffer.put("full".getBytes()); | 746 readBuffer.put("full".getBytes()); |
| 721 urlRequest.readNew(readBuffer); | 747 urlRequest.readNew(readBuffer); |
| 722 fail("Exception not thrown"); | 748 fail("Exception not thrown"); |
| 723 } catch (IllegalArgumentException e) { | 749 } catch (IllegalArgumentException e) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 742 listener.blockForDone(); | 768 listener.blockForDone(); |
| 743 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 769 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 744 assertEquals("GET", listener.mResponseAsString); | 770 assertEquals("GET", listener.mResponseAsString); |
| 745 } | 771 } |
| 746 | 772 |
| 747 @SmallTest | 773 @SmallTest |
| 748 @Feature({"Cronet"}) | 774 @Feature({"Cronet"}) |
| 749 public void testUnexpectedReads() throws Exception { | 775 public void testUnexpectedReads() throws Exception { |
| 750 final TestUrlRequestListener listener = new TestUrlRequestListener(); | 776 final TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 751 listener.setAutoAdvance(false); | 777 listener.setAutoAdvance(false); |
| 752 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest
( | 778 final UrlRequest urlRequest = |
| 753 NativeTestServer.getRedirectURL(), listener, listener.getExecuto
r()); | 779 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen
er, |
| 780 listener.getExecutor(), mActivity.mCronetE
ngine) |
| 781 .build(); |
| 754 | 782 |
| 755 // Try to read before starting request. | 783 // Try to read before starting request. |
| 756 try { | 784 try { |
| 757 listener.startNextRead(urlRequest); | 785 listener.startNextRead(urlRequest); |
| 758 fail("Exception not thrown"); | 786 fail("Exception not thrown"); |
| 759 } catch (IllegalStateException e) { | 787 } catch (IllegalStateException e) { |
| 760 assertEquals("Unexpected read attempt.", | 788 assertEquals("Unexpected read attempt.", |
| 761 e.getMessage()); | 789 e.getMessage()); |
| 762 } | 790 } |
| 763 | 791 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 assertEquals("Unexpected read attempt.", | 853 assertEquals("Unexpected read attempt.", |
| 826 e.getMessage()); | 854 e.getMessage()); |
| 827 } | 855 } |
| 828 } | 856 } |
| 829 | 857 |
| 830 @SmallTest | 858 @SmallTest |
| 831 @Feature({"Cronet"}) | 859 @Feature({"Cronet"}) |
| 832 public void testUnexpectedFollowRedirects() throws Exception { | 860 public void testUnexpectedFollowRedirects() throws Exception { |
| 833 final TestUrlRequestListener listener = new TestUrlRequestListener(); | 861 final TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 834 listener.setAutoAdvance(false); | 862 listener.setAutoAdvance(false); |
| 835 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest
( | 863 final UrlRequest urlRequest = |
| 836 NativeTestServer.getRedirectURL(), listener, listener.getExecuto
r()); | 864 new UrlRequest.Builder(NativeTestServer.getRedirectURL(), listen
er, |
| 865 listener.getExecutor(), mActivity.mCronetE
ngine) |
| 866 .build(); |
| 837 | 867 |
| 838 // Try to follow a redirect before starting the request. | 868 // Try to follow a redirect before starting the request. |
| 839 try { | 869 try { |
| 840 urlRequest.followRedirect(); | 870 urlRequest.followRedirect(); |
| 841 fail("Exception not thrown"); | 871 fail("Exception not thrown"); |
| 842 } catch (IllegalStateException e) { | 872 } catch (IllegalStateException e) { |
| 843 assertEquals("No redirect to follow.", | 873 assertEquals("No redirect to follow.", |
| 844 e.getMessage()); | 874 e.getMessage()); |
| 845 } | 875 } |
| 846 | 876 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 } catch (IllegalStateException e) { | 935 } catch (IllegalStateException e) { |
| 906 assertEquals("No redirect to follow.", | 936 assertEquals("No redirect to follow.", |
| 907 e.getMessage()); | 937 e.getMessage()); |
| 908 } | 938 } |
| 909 } | 939 } |
| 910 | 940 |
| 911 @SmallTest | 941 @SmallTest |
| 912 @Feature({"Cronet"}) | 942 @Feature({"Cronet"}) |
| 913 public void testUploadSetDataProvider() throws Exception { | 943 public void testUploadSetDataProvider() throws Exception { |
| 914 TestUrlRequestListener listener = new TestUrlRequestListener(); | 944 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 915 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 945 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 916 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 946 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 917 | 947 |
| 918 try { | 948 try { |
| 919 urlRequest.setUploadDataProvider(null, listener.getExecutor()); | 949 builder.setUploadDataProvider(null, listener.getExecutor()); |
| 920 fail("Exception not thrown"); | 950 fail("Exception not thrown"); |
| 921 } catch (NullPointerException e) { | 951 } catch (NullPointerException e) { |
| 922 assertEquals("Invalid UploadDataProvider.", e.getMessage()); | 952 assertEquals("Invalid UploadDataProvider.", e.getMessage()); |
| 923 } | 953 } |
| 924 | 954 |
| 925 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 955 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 926 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 956 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 927 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 957 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 928 try { | 958 try { |
| 929 urlRequest.start(); | 959 builder.build().start(); |
| 930 fail("Exception not thrown"); | 960 fail("Exception not thrown"); |
| 931 } catch (IllegalArgumentException e) { | 961 } catch (IllegalArgumentException e) { |
| 932 assertEquals("Requests with upload data must have a Content-Type.",
e.getMessage()); | 962 assertEquals("Requests with upload data must have a Content-Type.",
e.getMessage()); |
| 933 } | 963 } |
| 934 } | 964 } |
| 935 | 965 |
| 936 @SmallTest | 966 @SmallTest |
| 937 @Feature({"Cronet"}) | 967 @Feature({"Cronet"}) |
| 938 public void testUploadEmptyBodySync() throws Exception { | 968 public void testUploadEmptyBodySync() throws Exception { |
| 939 TestUrlRequestListener listener = new TestUrlRequestListener(); | 969 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 940 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 970 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 941 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 971 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 942 | 972 |
| 943 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 973 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 944 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 974 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 945 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 975 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 946 urlRequest.addHeader("Content-Type", "useless/string"); | 976 builder.addHeader("Content-Type", "useless/string"); |
| 947 urlRequest.start(); | 977 builder.build().start(); |
| 948 listener.blockForDone(); | 978 listener.blockForDone(); |
| 949 | 979 |
| 950 assertEquals(0, dataProvider.getLength()); | 980 assertEquals(0, dataProvider.getLength()); |
| 951 assertEquals(0, dataProvider.getNumReadCalls()); | 981 assertEquals(0, dataProvider.getNumReadCalls()); |
| 952 assertEquals(0, dataProvider.getNumRewindCalls()); | 982 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 953 | 983 |
| 954 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 984 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 955 assertEquals("", listener.mResponseAsString); | 985 assertEquals("", listener.mResponseAsString); |
| 956 } | 986 } |
| 957 | 987 |
| 958 @SmallTest | 988 @SmallTest |
| 959 @Feature({"Cronet"}) | 989 @Feature({"Cronet"}) |
| 960 public void testUploadSync() throws Exception { | 990 public void testUploadSync() throws Exception { |
| 961 TestUrlRequestListener listener = new TestUrlRequestListener(); | 991 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 962 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 992 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 963 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 993 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 964 | 994 |
| 965 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 995 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 966 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 996 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 967 dataProvider.addRead("test".getBytes()); | 997 dataProvider.addRead("test".getBytes()); |
| 968 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 998 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 969 urlRequest.addHeader("Content-Type", "useless/string"); | 999 builder.addHeader("Content-Type", "useless/string"); |
| 970 urlRequest.start(); | 1000 builder.build().start(); |
| 971 listener.blockForDone(); | 1001 listener.blockForDone(); |
| 972 | 1002 |
| 973 assertEquals(4, dataProvider.getLength()); | 1003 assertEquals(4, dataProvider.getLength()); |
| 974 assertEquals(1, dataProvider.getNumReadCalls()); | 1004 assertEquals(1, dataProvider.getNumReadCalls()); |
| 975 assertEquals(0, dataProvider.getNumRewindCalls()); | 1005 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 976 | 1006 |
| 977 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1007 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 978 assertEquals("test", listener.mResponseAsString); | 1008 assertEquals("test", listener.mResponseAsString); |
| 979 } | 1009 } |
| 980 | 1010 |
| 981 @SmallTest | 1011 @SmallTest |
| 982 @Feature({"Cronet"}) | 1012 @Feature({"Cronet"}) |
| 983 public void testUploadMultiplePiecesSync() throws Exception { | 1013 public void testUploadMultiplePiecesSync() throws Exception { |
| 984 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1014 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 985 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1015 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 986 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1016 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 987 | 1017 |
| 988 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1018 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 989 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1019 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 990 dataProvider.addRead("Y".getBytes()); | 1020 dataProvider.addRead("Y".getBytes()); |
| 991 dataProvider.addRead("et ".getBytes()); | 1021 dataProvider.addRead("et ".getBytes()); |
| 992 dataProvider.addRead("another ".getBytes()); | 1022 dataProvider.addRead("another ".getBytes()); |
| 993 dataProvider.addRead("test".getBytes()); | 1023 dataProvider.addRead("test".getBytes()); |
| 994 | 1024 |
| 995 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1025 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 996 urlRequest.addHeader("Content-Type", "useless/string"); | 1026 builder.addHeader("Content-Type", "useless/string"); |
| 997 urlRequest.start(); | 1027 builder.build().start(); |
| 998 listener.blockForDone(); | 1028 listener.blockForDone(); |
| 999 | 1029 |
| 1000 assertEquals(16, dataProvider.getLength()); | 1030 assertEquals(16, dataProvider.getLength()); |
| 1001 assertEquals(4, dataProvider.getNumReadCalls()); | 1031 assertEquals(4, dataProvider.getNumReadCalls()); |
| 1002 assertEquals(0, dataProvider.getNumRewindCalls()); | 1032 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1003 | 1033 |
| 1004 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1034 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 1005 assertEquals("Yet another test", listener.mResponseAsString); | 1035 assertEquals("Yet another test", listener.mResponseAsString); |
| 1006 } | 1036 } |
| 1007 | 1037 |
| 1008 @SmallTest | 1038 @SmallTest |
| 1009 @Feature({"Cronet"}) | 1039 @Feature({"Cronet"}) |
| 1010 public void testUploadMultiplePiecesAsync() throws Exception { | 1040 public void testUploadMultiplePiecesAsync() throws Exception { |
| 1011 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1041 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1012 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1042 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1013 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1043 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1014 | 1044 |
| 1015 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1045 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1016 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx
ecutor()); | 1046 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx
ecutor()); |
| 1017 dataProvider.addRead("Y".getBytes()); | 1047 dataProvider.addRead("Y".getBytes()); |
| 1018 dataProvider.addRead("et ".getBytes()); | 1048 dataProvider.addRead("et ".getBytes()); |
| 1019 dataProvider.addRead("another ".getBytes()); | 1049 dataProvider.addRead("another ".getBytes()); |
| 1020 dataProvider.addRead("test".getBytes()); | 1050 dataProvider.addRead("test".getBytes()); |
| 1021 | 1051 |
| 1022 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1052 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1023 urlRequest.addHeader("Content-Type", "useless/string"); | 1053 builder.addHeader("Content-Type", "useless/string"); |
| 1024 urlRequest.start(); | 1054 builder.build().start(); |
| 1025 listener.blockForDone(); | 1055 listener.blockForDone(); |
| 1026 | 1056 |
| 1027 assertEquals(16, dataProvider.getLength()); | 1057 assertEquals(16, dataProvider.getLength()); |
| 1028 assertEquals(4, dataProvider.getNumReadCalls()); | 1058 assertEquals(4, dataProvider.getNumReadCalls()); |
| 1029 assertEquals(0, dataProvider.getNumRewindCalls()); | 1059 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1030 | 1060 |
| 1031 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1061 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 1032 assertEquals("Yet another test", listener.mResponseAsString); | 1062 assertEquals("Yet another test", listener.mResponseAsString); |
| 1033 } | 1063 } |
| 1034 | 1064 |
| 1035 @SmallTest | 1065 @SmallTest |
| 1036 @Feature({"Cronet"}) | 1066 @Feature({"Cronet"}) |
| 1037 public void testUploadChangesDefaultMethod() throws Exception { | 1067 public void testUploadChangesDefaultMethod() throws Exception { |
| 1038 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1068 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1039 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1069 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoMethodURL(), |
| 1040 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu
tor()); | 1070 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1041 | 1071 |
| 1042 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1072 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1043 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1073 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1044 dataProvider.addRead("test".getBytes()); | 1074 dataProvider.addRead("test".getBytes()); |
| 1045 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1075 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1046 urlRequest.addHeader("Content-Type", "useless/string"); | 1076 builder.addHeader("Content-Type", "useless/string"); |
| 1047 urlRequest.start(); | 1077 builder.build().start(); |
| 1048 listener.blockForDone(); | 1078 listener.blockForDone(); |
| 1049 | 1079 |
| 1050 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1080 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 1051 assertEquals("POST", listener.mResponseAsString); | 1081 assertEquals("POST", listener.mResponseAsString); |
| 1052 } | 1082 } |
| 1053 | 1083 |
| 1054 @SmallTest | 1084 @SmallTest |
| 1055 @Feature({"Cronet"}) | 1085 @Feature({"Cronet"}) |
| 1056 public void testUploadWithSetMethod() throws Exception { | 1086 public void testUploadWithSetMethod() throws Exception { |
| 1057 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1087 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1058 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1088 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoMethodURL(), |
| 1059 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu
tor()); | 1089 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1060 | 1090 |
| 1061 final String method = "PUT"; | 1091 final String method = "PUT"; |
| 1062 urlRequest.setHttpMethod(method); | 1092 builder.setHttpMethod(method); |
| 1063 | 1093 |
| 1064 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1094 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1065 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1095 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1066 dataProvider.addRead("test".getBytes()); | 1096 dataProvider.addRead("test".getBytes()); |
| 1067 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1097 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1068 urlRequest.addHeader("Content-Type", "useless/string"); | 1098 builder.addHeader("Content-Type", "useless/string"); |
| 1069 urlRequest.start(); | 1099 builder.build().start(); |
| 1070 listener.blockForDone(); | 1100 listener.blockForDone(); |
| 1071 | 1101 |
| 1072 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1102 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 1073 assertEquals("PUT", listener.mResponseAsString); | 1103 assertEquals("PUT", listener.mResponseAsString); |
| 1074 } | 1104 } |
| 1075 | 1105 |
| 1076 @SmallTest | 1106 @SmallTest |
| 1077 @Feature({"Cronet"}) | 1107 @Feature({"Cronet"}) |
| 1078 public void testUploadRedirectSync() throws Exception { | 1108 public void testUploadRedirectSync() throws Exception { |
| 1079 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1109 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1080 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1110 UrlRequest.Builder builder = |
| 1081 NativeTestServer.getRedirectToEchoBody(), listener, listener.get
Executor()); | 1111 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
listener, |
| 1112 listener.getExecutor(), mActivity.mCronetEngine); |
| 1082 | 1113 |
| 1083 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1114 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1084 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1115 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1085 dataProvider.addRead("test".getBytes()); | 1116 dataProvider.addRead("test".getBytes()); |
| 1086 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1117 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1087 urlRequest.addHeader("Content-Type", "useless/string"); | 1118 builder.addHeader("Content-Type", "useless/string"); |
| 1088 urlRequest.start(); | 1119 builder.build().start(); |
| 1089 listener.blockForDone(); | 1120 listener.blockForDone(); |
| 1090 | 1121 |
| 1091 // 1 read call before the rewind, 1 after. | 1122 // 1 read call before the rewind, 1 after. |
| 1092 assertEquals(2, dataProvider.getNumReadCalls()); | 1123 assertEquals(2, dataProvider.getNumReadCalls()); |
| 1093 assertEquals(1, dataProvider.getNumRewindCalls()); | 1124 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1094 | 1125 |
| 1095 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1126 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 1096 assertEquals("test", listener.mResponseAsString); | 1127 assertEquals("test", listener.mResponseAsString); |
| 1097 } | 1128 } |
| 1098 | 1129 |
| 1099 @SmallTest | 1130 @SmallTest |
| 1100 @Feature({"Cronet"}) | 1131 @Feature({"Cronet"}) |
| 1101 public void testUploadRedirectAsync() throws Exception { | 1132 public void testUploadRedirectAsync() throws Exception { |
| 1102 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1133 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1103 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1134 UrlRequest.Builder builder = |
| 1104 NativeTestServer.getRedirectToEchoBody(), listener, listener.get
Executor()); | 1135 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
listener, |
| 1136 listener.getExecutor(), mActivity.mCronetEngine); |
| 1105 | 1137 |
| 1106 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1138 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1107 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx
ecutor()); | 1139 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx
ecutor()); |
| 1108 dataProvider.addRead("test".getBytes()); | 1140 dataProvider.addRead("test".getBytes()); |
| 1109 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1141 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1110 urlRequest.addHeader("Content-Type", "useless/string"); | 1142 builder.addHeader("Content-Type", "useless/string"); |
| 1111 urlRequest.start(); | 1143 builder.build().start(); |
| 1112 listener.blockForDone(); | 1144 listener.blockForDone(); |
| 1113 | 1145 |
| 1114 // 1 read call before the rewind, 1 after. | 1146 // 1 read call before the rewind, 1 after. |
| 1115 assertEquals(2, dataProvider.getNumReadCalls()); | 1147 assertEquals(2, dataProvider.getNumReadCalls()); |
| 1116 assertEquals(1, dataProvider.getNumRewindCalls()); | 1148 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1117 | 1149 |
| 1118 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1150 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
| 1119 assertEquals("test", listener.mResponseAsString); | 1151 assertEquals("test", listener.mResponseAsString); |
| 1120 } | 1152 } |
| 1121 | 1153 |
| 1122 @SmallTest | 1154 @SmallTest |
| 1123 @Feature({"Cronet"}) | 1155 @Feature({"Cronet"}) |
| 1124 public void testUploadReadFailSync() throws Exception { | 1156 public void testUploadReadFailSync() throws Exception { |
| 1125 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1157 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1126 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1158 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1127 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1159 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1128 | 1160 |
| 1129 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1161 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1130 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1162 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1131 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
SYNC); | 1163 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
SYNC); |
| 1132 // This will never be read, but if the length is 0, read may never be | 1164 // This will never be read, but if the length is 0, read may never be |
| 1133 // called. | 1165 // called. |
| 1134 dataProvider.addRead("test".getBytes()); | 1166 dataProvider.addRead("test".getBytes()); |
| 1135 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1167 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1136 urlRequest.addHeader("Content-Type", "useless/string"); | 1168 builder.addHeader("Content-Type", "useless/string"); |
| 1137 urlRequest.start(); | 1169 builder.build().start(); |
| 1138 listener.blockForDone(); | 1170 listener.blockForDone(); |
| 1139 | 1171 |
| 1140 assertEquals(1, dataProvider.getNumReadCalls()); | 1172 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1141 assertEquals(0, dataProvider.getNumRewindCalls()); | 1173 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1142 | 1174 |
| 1143 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); | 1175 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); |
| 1144 assertEquals("Sync read failure", listener.mError.getCause().getMessage(
)); | 1176 assertEquals("Sync read failure", listener.mError.getCause().getMessage(
)); |
| 1145 assertEquals(null, listener.mResponseInfo); | 1177 assertEquals(null, listener.mResponseInfo); |
| 1146 } | 1178 } |
| 1147 | 1179 |
| 1148 @SmallTest | 1180 @SmallTest |
| 1149 @Feature({"Cronet"}) | 1181 @Feature({"Cronet"}) |
| 1150 public void testUploadReadFailAsync() throws Exception { | 1182 public void testUploadReadFailAsync() throws Exception { |
| 1151 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1183 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1152 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1184 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1153 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1185 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1154 | 1186 |
| 1155 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1187 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1156 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1188 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1157 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
ASYNC); | 1189 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_
ASYNC); |
| 1158 // This will never be read, but if the length is 0, read may never be | 1190 // This will never be read, but if the length is 0, read may never be |
| 1159 // called. | 1191 // called. |
| 1160 dataProvider.addRead("test".getBytes()); | 1192 dataProvider.addRead("test".getBytes()); |
| 1161 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1193 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1162 urlRequest.addHeader("Content-Type", "useless/string"); | 1194 builder.addHeader("Content-Type", "useless/string"); |
| 1163 urlRequest.start(); | 1195 builder.build().start(); |
| 1164 listener.blockForDone(); | 1196 listener.blockForDone(); |
| 1165 | 1197 |
| 1166 assertEquals(1, dataProvider.getNumReadCalls()); | 1198 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1167 assertEquals(0, dataProvider.getNumRewindCalls()); | 1199 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1168 | 1200 |
| 1169 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); | 1201 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); |
| 1170 assertEquals("Async read failure", listener.mError.getCause().getMessage
()); | 1202 assertEquals("Async read failure", listener.mError.getCause().getMessage
()); |
| 1171 assertEquals(null, listener.mResponseInfo); | 1203 assertEquals(null, listener.mResponseInfo); |
| 1172 } | 1204 } |
| 1173 | 1205 |
| 1174 @SmallTest | 1206 @SmallTest |
| 1175 @Feature({"Cronet"}) | 1207 @Feature({"Cronet"}) |
| 1176 public void testUploadReadFailThrown() throws Exception { | 1208 public void testUploadReadFailThrown() throws Exception { |
| 1177 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1209 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1178 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1210 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1179 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1211 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1180 | 1212 |
| 1181 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1213 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1182 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1214 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1183 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); | 1215 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); |
| 1184 // This will never be read, but if the length is 0, read may never be | 1216 // This will never be read, but if the length is 0, read may never be |
| 1185 // called. | 1217 // called. |
| 1186 dataProvider.addRead("test".getBytes()); | 1218 dataProvider.addRead("test".getBytes()); |
| 1187 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1219 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1188 urlRequest.addHeader("Content-Type", "useless/string"); | 1220 builder.addHeader("Content-Type", "useless/string"); |
| 1189 urlRequest.start(); | 1221 builder.build().start(); |
| 1190 listener.blockForDone(); | 1222 listener.blockForDone(); |
| 1191 | 1223 |
| 1192 assertEquals(1, dataProvider.getNumReadCalls()); | 1224 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1193 assertEquals(0, dataProvider.getNumRewindCalls()); | 1225 assertEquals(0, dataProvider.getNumRewindCalls()); |
| 1194 | 1226 |
| 1195 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); | 1227 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); |
| 1196 assertEquals("Thrown read failure", listener.mError.getCause().getMessag
e()); | 1228 assertEquals("Thrown read failure", listener.mError.getCause().getMessag
e()); |
| 1197 assertEquals(null, listener.mResponseInfo); | 1229 assertEquals(null, listener.mResponseInfo); |
| 1198 } | 1230 } |
| 1199 | 1231 |
| 1200 @SmallTest | 1232 @SmallTest |
| 1201 @Feature({"Cronet"}) | 1233 @Feature({"Cronet"}) |
| 1202 public void testUploadRewindFailSync() throws Exception { | 1234 public void testUploadRewindFailSync() throws Exception { |
| 1203 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1235 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1204 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1236 UrlRequest.Builder builder = |
| 1205 NativeTestServer.getRedirectToEchoBody(), listener, listener.get
Executor()); | 1237 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
listener, |
| 1238 listener.getExecutor(), mActivity.mCronetEngine); |
| 1206 | 1239 |
| 1207 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1240 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1208 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1241 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1209 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S
YNC); | 1242 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S
YNC); |
| 1210 dataProvider.addRead("test".getBytes()); | 1243 dataProvider.addRead("test".getBytes()); |
| 1211 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1244 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1212 urlRequest.addHeader("Content-Type", "useless/string"); | 1245 builder.addHeader("Content-Type", "useless/string"); |
| 1213 urlRequest.start(); | 1246 builder.build().start(); |
| 1214 listener.blockForDone(); | 1247 listener.blockForDone(); |
| 1215 | 1248 |
| 1216 assertEquals(1, dataProvider.getNumReadCalls()); | 1249 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1217 assertEquals(1, dataProvider.getNumRewindCalls()); | 1250 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1218 | 1251 |
| 1219 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); | 1252 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); |
| 1220 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag
e()); | 1253 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag
e()); |
| 1221 assertEquals(null, listener.mResponseInfo); | 1254 assertEquals(null, listener.mResponseInfo); |
| 1222 } | 1255 } |
| 1223 | 1256 |
| 1224 @SmallTest | 1257 @SmallTest |
| 1225 @Feature({"Cronet"}) | 1258 @Feature({"Cronet"}) |
| 1226 public void testUploadRewindFailAsync() throws Exception { | 1259 public void testUploadRewindFailAsync() throws Exception { |
| 1227 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1260 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1228 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1261 UrlRequest.Builder builder = |
| 1229 NativeTestServer.getRedirectToEchoBody(), listener, listener.get
Executor()); | 1262 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
listener, |
| 1263 listener.getExecutor(), mActivity.mCronetEngine); |
| 1230 | 1264 |
| 1231 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1265 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1232 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx
ecutor()); | 1266 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx
ecutor()); |
| 1233 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A
SYNC); | 1267 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A
SYNC); |
| 1234 dataProvider.addRead("test".getBytes()); | 1268 dataProvider.addRead("test".getBytes()); |
| 1235 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1269 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1236 urlRequest.addHeader("Content-Type", "useless/string"); | 1270 builder.addHeader("Content-Type", "useless/string"); |
| 1237 urlRequest.start(); | 1271 builder.build().start(); |
| 1238 listener.blockForDone(); | 1272 listener.blockForDone(); |
| 1239 | 1273 |
| 1240 assertEquals(1, dataProvider.getNumReadCalls()); | 1274 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1241 assertEquals(1, dataProvider.getNumRewindCalls()); | 1275 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1242 | 1276 |
| 1243 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); | 1277 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); |
| 1244 assertEquals("Async rewind failure", listener.mError.getCause().getMessa
ge()); | 1278 assertEquals("Async rewind failure", listener.mError.getCause().getMessa
ge()); |
| 1245 assertEquals(null, listener.mResponseInfo); | 1279 assertEquals(null, listener.mResponseInfo); |
| 1246 } | 1280 } |
| 1247 | 1281 |
| 1248 @SmallTest | 1282 @SmallTest |
| 1249 @Feature({"Cronet"}) | 1283 @Feature({"Cronet"}) |
| 1250 public void testUploadRewindFailThrown() throws Exception { | 1284 public void testUploadRewindFailThrown() throws Exception { |
| 1251 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1285 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1252 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1286 UrlRequest.Builder builder = |
| 1253 NativeTestServer.getRedirectToEchoBody(), listener, listener.get
Executor()); | 1287 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
listener, |
| 1288 listener.getExecutor(), mActivity.mCronetEngine); |
| 1254 | 1289 |
| 1255 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1290 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1256 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1291 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1257 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); | 1292 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); |
| 1258 dataProvider.addRead("test".getBytes()); | 1293 dataProvider.addRead("test".getBytes()); |
| 1259 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1294 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1260 urlRequest.addHeader("Content-Type", "useless/string"); | 1295 builder.addHeader("Content-Type", "useless/string"); |
| 1261 urlRequest.start(); | 1296 builder.build().start(); |
| 1262 listener.blockForDone(); | 1297 listener.blockForDone(); |
| 1263 | 1298 |
| 1264 assertEquals(1, dataProvider.getNumReadCalls()); | 1299 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1265 assertEquals(1, dataProvider.getNumRewindCalls()); | 1300 assertEquals(1, dataProvider.getNumRewindCalls()); |
| 1266 | 1301 |
| 1267 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); | 1302 assertEquals("Exception received from UploadDataProvider", listener.mErr
or.getMessage()); |
| 1268 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess
age()); | 1303 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess
age()); |
| 1269 assertEquals(null, listener.mResponseInfo); | 1304 assertEquals(null, listener.mResponseInfo); |
| 1270 } | 1305 } |
| 1271 | 1306 |
| 1272 @SmallTest | 1307 @SmallTest |
| 1273 @Feature({"Cronet"}) | 1308 @Feature({"Cronet"}) |
| 1274 public void testUploadChunked() throws Exception { | 1309 public void testUploadChunked() throws Exception { |
| 1275 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1310 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1276 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1311 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1277 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1312 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1278 | 1313 |
| 1279 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1314 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1280 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1315 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1281 dataProvider.addRead("test hello".getBytes()); | 1316 dataProvider.addRead("test hello".getBytes()); |
| 1282 dataProvider.setChunked(true); | 1317 dataProvider.setChunked(true); |
| 1283 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1318 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1284 urlRequest.addHeader("Content-Type", "useless/string"); | 1319 builder.addHeader("Content-Type", "useless/string"); |
| 1285 | 1320 |
| 1286 assertEquals(-1, dataProvider.getLength()); | 1321 assertEquals(-1, dataProvider.getLength()); |
| 1287 | 1322 |
| 1288 urlRequest.start(); | 1323 builder.build().start(); |
| 1289 listener.blockForDone(); | 1324 listener.blockForDone(); |
| 1290 | 1325 |
| 1291 // 1 read call for one data chunk. | 1326 // 1 read call for one data chunk. |
| 1292 assertEquals(1, dataProvider.getNumReadCalls()); | 1327 assertEquals(1, dataProvider.getNumReadCalls()); |
| 1293 assertEquals("test hello", listener.mResponseAsString); | 1328 assertEquals("test hello", listener.mResponseAsString); |
| 1294 } | 1329 } |
| 1295 | 1330 |
| 1296 @SmallTest | 1331 @SmallTest |
| 1297 @Feature({"Cronet"}) | 1332 @Feature({"Cronet"}) |
| 1298 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { | 1333 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { |
| 1299 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1334 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1300 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1335 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1301 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1336 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1302 | 1337 |
| 1303 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1338 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1304 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1339 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1305 // Add 3 reads. The last read has a 0-length body. | 1340 // Add 3 reads. The last read has a 0-length body. |
| 1306 dataProvider.addRead("hello there".getBytes()); | 1341 dataProvider.addRead("hello there".getBytes()); |
| 1307 dataProvider.addRead("!".getBytes()); | 1342 dataProvider.addRead("!".getBytes()); |
| 1308 dataProvider.addRead("".getBytes()); | 1343 dataProvider.addRead("".getBytes()); |
| 1309 dataProvider.setChunked(true); | 1344 dataProvider.setChunked(true); |
| 1310 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1345 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1311 urlRequest.addHeader("Content-Type", "useless/string"); | 1346 builder.addHeader("Content-Type", "useless/string"); |
| 1312 | 1347 |
| 1313 assertEquals(-1, dataProvider.getLength()); | 1348 assertEquals(-1, dataProvider.getLength()); |
| 1314 | 1349 |
| 1315 urlRequest.start(); | 1350 builder.build().start(); |
| 1316 listener.blockForDone(); | 1351 listener.blockForDone(); |
| 1317 | 1352 |
| 1318 // 2 read call for the first two data chunks, and 1 for final chunk. | 1353 // 2 read call for the first two data chunks, and 1 for final chunk. |
| 1319 assertEquals(3, dataProvider.getNumReadCalls()); | 1354 assertEquals(3, dataProvider.getNumReadCalls()); |
| 1320 assertEquals("hello there!", listener.mResponseAsString); | 1355 assertEquals("hello there!", listener.mResponseAsString); |
| 1321 } | 1356 } |
| 1322 | 1357 |
| 1323 // Test where an upload fails without ever initializing the | 1358 // Test where an upload fails without ever initializing the |
| 1324 // UploadDataStream, because it can't connect to the server. | 1359 // UploadDataStream, because it can't connect to the server. |
| 1325 @SmallTest | 1360 @SmallTest |
| 1326 @Feature({"Cronet"}) | 1361 @Feature({"Cronet"}) |
| 1327 public void testUploadFailsWithoutInitializingStream() throws Exception { | 1362 public void testUploadFailsWithoutInitializingStream() throws Exception { |
| 1328 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1363 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1329 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1364 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1330 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1365 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1331 // Shut down the test server, so connecting to it fails. Note that | 1366 // Shut down the test server, so connecting to it fails. Note that |
| 1332 // calling shutdown again during teardown is safe. | 1367 // calling shutdown again during teardown is safe. |
| 1333 NativeTestServer.shutdownNativeTestServer(); | 1368 NativeTestServer.shutdownNativeTestServer(); |
| 1334 | 1369 |
| 1335 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1370 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
| 1336 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); | 1371 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe
cutor()); |
| 1337 dataProvider.addRead("test".getBytes()); | 1372 dataProvider.addRead("test".getBytes()); |
| 1338 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1373 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
| 1339 urlRequest.addHeader("Content-Type", "useless/string"); | 1374 builder.addHeader("Content-Type", "useless/string"); |
| 1340 urlRequest.start(); | 1375 builder.build().start(); |
| 1341 listener.blockForDone(); | 1376 listener.blockForDone(); |
| 1342 | 1377 |
| 1343 assertNull(listener.mResponseInfo); | 1378 assertNull(listener.mResponseInfo); |
| 1344 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED
", | 1379 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED
", |
| 1345 listener.mError.getMessage()); | 1380 listener.mError.getMessage()); |
| 1346 } | 1381 } |
| 1347 | 1382 |
| 1348 private void throwOrCancel(FailureType failureType, ResponseStep failureStep
, | 1383 private void throwOrCancel(FailureType failureType, ResponseStep failureStep
, |
| 1349 boolean expectResponseInfo, boolean expectError) { | 1384 boolean expectResponseInfo, boolean expectError) { |
| 1350 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1385 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1351 listener.setFailure(failureType, failureStep); | 1386 listener.setFailure(failureType, failureStep); |
| 1352 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1387 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
RedirectURL(), |
| 1353 NativeTestServer.getRedirectURL(), listener, listener.getExecuto
r()); | 1388 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1389 UrlRequest urlRequest = builder.build(); |
| 1354 urlRequest.start(); | 1390 urlRequest.start(); |
| 1355 listener.blockForDone(); | 1391 listener.blockForDone(); |
| 1356 assertEquals(1, listener.mRedirectCount); | 1392 assertEquals(1, listener.mRedirectCount); |
| 1357 assertEquals(listener.mResponseStep, failureStep); | 1393 assertEquals(listener.mResponseStep, failureStep); |
| 1358 assertTrue(urlRequest.isDone()); | 1394 assertTrue(urlRequest.isDone()); |
| 1359 assertEquals(expectResponseInfo, listener.mResponseInfo != null); | 1395 assertEquals(expectResponseInfo, listener.mResponseInfo != null); |
| 1360 assertEquals(expectError, listener.mError != null); | 1396 assertEquals(expectError, listener.mError != null); |
| 1361 assertEquals(expectError, listener.mOnErrorCalled); | 1397 assertEquals(expectError, listener.mOnErrorCalled); |
| 1362 } | 1398 } |
| 1363 | 1399 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1390 true, false); | 1426 true, false); |
| 1391 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, | 1427 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, |
| 1392 true, true); | 1428 true, true); |
| 1393 } | 1429 } |
| 1394 | 1430 |
| 1395 @SmallTest | 1431 @SmallTest |
| 1396 @Feature({"Cronet"}) | 1432 @Feature({"Cronet"}) |
| 1397 public void testThrowON_SUCCEEDED() { | 1433 public void testThrowON_SUCCEEDED() { |
| 1398 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1434 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1399 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); | 1435 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); |
| 1400 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1436 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
RedirectURL(), |
| 1401 NativeTestServer.getRedirectURL(), listener, listener.getExecuto
r()); | 1437 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1438 UrlRequest urlRequest = builder.build(); |
| 1402 urlRequest.start(); | 1439 urlRequest.start(); |
| 1403 listener.blockForDone(); | 1440 listener.blockForDone(); |
| 1404 assertEquals(1, listener.mRedirectCount); | 1441 assertEquals(1, listener.mRedirectCount); |
| 1405 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 1442 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
| 1406 assertTrue(urlRequest.isDone()); | 1443 assertTrue(urlRequest.isDone()); |
| 1407 assertNotNull(listener.mResponseInfo); | 1444 assertNotNull(listener.mResponseInfo); |
| 1408 assertNull(listener.mError); | 1445 assertNull(listener.mError); |
| 1409 assertFalse(listener.mOnErrorCalled); | 1446 assertFalse(listener.mOnErrorCalled); |
| 1410 } | 1447 } |
| 1411 | 1448 |
| 1412 @SmallTest | 1449 @SmallTest |
| 1413 @Feature({"Cronet"}) | 1450 @Feature({"Cronet"}) |
| 1414 public void testExecutorShutdown() { | 1451 public void testExecutorShutdown() { |
| 1415 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1452 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1416 | 1453 |
| 1417 listener.setAutoAdvance(false); | 1454 listener.setAutoAdvance(false); |
| 1418 CronetUrlRequest urlRequest = | 1455 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1419 (CronetUrlRequest) mActivity.mUrlRequestContext.createRequest( | 1456 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1420 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1457 CronetUrlRequest urlRequest = (CronetUrlRequest) builder.build(); |
| 1421 urlRequest.start(); | 1458 urlRequest.start(); |
| 1422 listener.waitForNextStep(); | 1459 listener.waitForNextStep(); |
| 1423 assertFalse(listener.isDone()); | 1460 assertFalse(listener.isDone()); |
| 1424 assertFalse(urlRequest.isDone()); | 1461 assertFalse(urlRequest.isDone()); |
| 1425 | 1462 |
| 1426 final ConditionVariable requestDestroyed = new ConditionVariable(false); | 1463 final ConditionVariable requestDestroyed = new ConditionVariable(false); |
| 1427 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { | 1464 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { |
| 1428 @Override | 1465 @Override |
| 1429 public void run() { | 1466 public void run() { |
| 1430 requestDestroyed.open(); | 1467 requestDestroyed.open(); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1463 mByteBuffer = byteBuffer; | 1500 mByteBuffer = byteBuffer; |
| 1464 mReadCalled.open(); | 1501 mReadCalled.open(); |
| 1465 } | 1502 } |
| 1466 | 1503 |
| 1467 @Override | 1504 @Override |
| 1468 public void rewind(final UploadDataSink uploadDataSink) { | 1505 public void rewind(final UploadDataSink uploadDataSink) { |
| 1469 } | 1506 } |
| 1470 } | 1507 } |
| 1471 | 1508 |
| 1472 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1509 TestUrlRequestListener listener = new TestUrlRequestListener(); |
| 1473 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1510 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 1474 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto
r()); | 1511 listener, listener.getExecutor(), mActivity.mCronetEngine); |
| 1475 | 1512 |
| 1476 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); | 1513 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); |
| 1477 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider()
; | 1514 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider()
; |
| 1478 urlRequest.setUploadDataProvider(dataProvider, uploadExecutor); | 1515 builder.setUploadDataProvider(dataProvider, uploadExecutor); |
| 1479 urlRequest.addHeader("Content-Type", "useless/string"); | 1516 builder.addHeader("Content-Type", "useless/string"); |
| 1517 UrlRequest urlRequest = builder.build(); |
| 1480 urlRequest.start(); | 1518 urlRequest.start(); |
| 1481 // Wait for read to be called on executor. | 1519 // Wait for read to be called on executor. |
| 1482 dataProvider.mReadCalled.block(); | 1520 dataProvider.mReadCalled.block(); |
| 1483 // Shutdown the executor, so posting next task will throw an exception. | 1521 // Shutdown the executor, so posting next task will throw an exception. |
| 1484 uploadExecutor.shutdown(); | 1522 uploadExecutor.shutdown(); |
| 1485 // Continue the upload. | 1523 // Continue the upload. |
| 1486 dataProvider.mByteBuffer.putInt(42); | 1524 dataProvider.mByteBuffer.putInt(42); |
| 1487 dataProvider.mUploadDataSink.onReadSucceeded(false); | 1525 dataProvider.mUploadDataSink.onReadSucceeded(false); |
| 1488 // Listener.onFailed will be called on request executor even though uplo
ad | 1526 // Listener.onFailed will be called on request executor even though uplo
ad |
| 1489 // executor is shutdown. | 1527 // executor is shutdown. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1500 int end) { | 1538 int end) { |
| 1501 // Use a duplicate to avoid modifying byteBuffer. | 1539 // Use a duplicate to avoid modifying byteBuffer. |
| 1502 ByteBuffer duplicate = byteBuffer.duplicate(); | 1540 ByteBuffer duplicate = byteBuffer.duplicate(); |
| 1503 duplicate.position(start); | 1541 duplicate.position(start); |
| 1504 duplicate.limit(end); | 1542 duplicate.limit(end); |
| 1505 byte[] contents = new byte[duplicate.remaining()]; | 1543 byte[] contents = new byte[duplicate.remaining()]; |
| 1506 duplicate.get(contents); | 1544 duplicate.get(contents); |
| 1507 return new String(contents); | 1545 return new String(contents); |
| 1508 } | 1546 } |
| 1509 } | 1547 } |
| OLD | NEW |