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 |
11 import org.chromium.base.test.util.Feature; | 11 import org.chromium.base.test.util.Feature; |
12 import org.chromium.net.TestUrlRequestListener.FailureType; | 12 import org.chromium.net.TestUrlRequestListener.FailureType; |
13 import org.chromium.net.TestUrlRequestListener.ResponseStep; | 13 import org.chromium.net.TestUrlRequestListener.ResponseStep; |
14 import org.chromium.net.test.FailurePhase; | 14 import org.chromium.net.test.FailurePhase; |
15 | 15 |
16 import java.nio.ByteBuffer; | 16 import java.nio.ByteBuffer; |
17 import java.util.ArrayList; | 17 import java.util.ArrayList; |
18 import java.util.List; | 18 import java.util.List; |
19 import java.util.Map; | 19 import java.util.Map; |
20 import java.util.concurrent.Callable; | |
20 import java.util.concurrent.ExecutorService; | 21 import java.util.concurrent.ExecutorService; |
21 import java.util.concurrent.Executors; | 22 import java.util.concurrent.Executors; |
23 import java.util.concurrent.Future; | |
22 import java.util.regex.Matcher; | 24 import java.util.regex.Matcher; |
23 import java.util.regex.Pattern; | 25 import java.util.regex.Pattern; |
24 | 26 |
25 /** | 27 /** |
26 * Test functionality of CronetUrlRequest. | 28 * Test functionality of CronetUrlRequest. |
27 */ | 29 */ |
28 public class CronetUrlRequestTest extends CronetTestBase { | 30 public class CronetUrlRequestTest extends CronetTestBase { |
29 // URL used for base tests. | 31 // URL used for base tests. |
30 private static final String TEST_URL = "http://127.0.0.1:8000"; | 32 private static final String TEST_URL = "http://127.0.0.1:8000"; |
31 | 33 |
32 private CronetTestActivity mActivity; | 34 private CronetTestActivity mActivity; |
33 | 35 |
34 @Override | 36 @Override |
35 protected void setUp() throws Exception { | 37 protected void setUp() throws Exception { |
36 super.setUp(); | 38 super.setUp(); |
37 mActivity = launchCronetTestApp(); | 39 mActivity = launchCronetTestApp(); |
38 assertTrue(NativeTestServer.startNativeTestServer( | 40 assertTrue(NativeTestServer.startNativeTestServer( |
39 getInstrumentation().getTargetContext())); | 41 getInstrumentation().getTargetContext())); |
40 // Add url interceptors after native application context is initialized. | 42 // Add url interceptors after native application context is initialized. |
41 MockUrlRequestJobFactory.setUp(); | 43 MockUrlRequestJobFactory.setUp(); |
42 } | 44 } |
43 | 45 |
44 @Override | 46 @Override |
45 protected void tearDown() throws Exception { | 47 protected void tearDown() throws Exception { |
46 NativeTestServer.shutdownNativeTestServer(); | 48 NativeTestServer.shutdownNativeTestServer(); |
47 mActivity.mUrlRequestContext.shutdown(); | 49 mActivity.mCronetEngine.shutdown(); |
48 super.tearDown(); | 50 super.tearDown(); |
49 } | 51 } |
50 | 52 |
51 private TestUrlRequestListener startAndWaitForComplete(String url) | 53 private TestUrlRequestListener startAndWaitForComplete(String url) |
52 throws Exception { | 54 throws Exception { |
53 TestUrlRequestListener listener = new TestUrlRequestListener(); | 55 TestUrlRequestListener listener = new TestUrlRequestListener(); |
54 // Create request. | 56 // Create request. |
55 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 57 UrlRequest.Builder builder = new UrlRequest.Builder(url, listener, liste ner.getExecutor()); |
56 url, listener, listener.getExecutor()); | 58 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
57 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()[ |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
100 * Tests a redirect by running it step-by-step. Also tests that delaying a | 101 * 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 | 102 * request works as expected. To make sure there are no unexpected pending |
102 * messages, does a GET between UrlRequestListener callbacks. | 103 * messages, does a GET between UrlRequestListener callbacks. |
103 */ | 104 */ |
104 @SmallTest | 105 @SmallTest |
105 @Feature({"Cronet"}) | 106 @Feature({"Cronet"}) |
106 public void testRedirectAsync() throws Exception { | 107 public void testRedirectAsync() throws Exception { |
107 // Start the request and wait to see the redirect. | 108 // Start the request and wait to see the redirect. |
108 TestUrlRequestListener listener = new TestUrlRequestListener(); | 109 TestUrlRequestListener listener = new TestUrlRequestListener(); |
109 listener.setAutoAdvance(false); | 110 listener.setAutoAdvance(false); |
110 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 111 UrlRequest.Builder builder = new UrlRequest.Builder( |
111 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); | 112 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); |
112 urlRequest.start(); | 113 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
113 listener.waitForNextStep(); | 114 listener.waitForNextStep(); |
114 | 115 |
115 // Check the redirect. | 116 // Check the redirect. |
116 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); | 117 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); |
117 assertEquals(1, listener.mRedirectResponseInfoList.size()); | 118 assertEquals(1, listener.mRedirectResponseInfoList.size()); |
118 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), | 119 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), |
119 NativeTestServer.getRedirectURL(), 302, "Found"); | 120 NativeTestServer.getRedirectURL(), 302, "Found"); |
120 assertEquals(1, | 121 assertEquals(1, |
121 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); | 122 listener.mRedirectResponseInfoList.get(0).getUrlChain().length); |
122 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList .get(0)); | 123 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList .get(0)); |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
210 // onFailed messages. This test relies on checks in | 211 // onFailed messages. This test relies on checks in |
211 // TestUrlRequestListener catching a second onFailed call. | 212 // TestUrlRequestListener catching a second onFailed call. |
212 testSimpleGet(); | 213 testSimpleGet(); |
213 } | 214 } |
214 | 215 |
215 @SmallTest | 216 @SmallTest |
216 @Feature({"Cronet"}) | 217 @Feature({"Cronet"}) |
217 public void testSetHttpMethod() throws Exception { | 218 public void testSetHttpMethod() throws Exception { |
218 TestUrlRequestListener listener = new TestUrlRequestListener(); | 219 TestUrlRequestListener listener = new TestUrlRequestListener(); |
219 String methodName = "HEAD"; | 220 String methodName = "HEAD"; |
220 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 221 UrlRequest.Builder builder = new UrlRequest.Builder( |
221 NativeTestServer.getEchoMethodURL(), listener, | 222 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); |
222 listener.getExecutor()); | |
223 // Try to set 'null' method. | 223 // Try to set 'null' method. |
224 try { | 224 try { |
225 urlRequest.setHttpMethod(null); | 225 builder.setHttpMethod(null); |
226 fail("Exception not thrown"); | 226 fail("Exception not thrown"); |
227 } catch (NullPointerException e) { | 227 } catch (NullPointerException e) { |
228 assertEquals("Method is required.", e.getMessage()); | 228 assertEquals("Method is required.", e.getMessage()); |
229 } | 229 } |
230 | 230 |
231 urlRequest.setHttpMethod(methodName); | 231 builder.setHttpMethod(methodName); |
232 urlRequest.start(); | 232 mActivity.mCronetEngine.executeRequest(builder); |
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(); | 233 listener.blockForDone(); |
240 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 234 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
241 assertEquals(0, listener.mHttpResponseDataLength); | 235 assertEquals(0, listener.mHttpResponseDataLength); |
242 } | 236 } |
243 | 237 |
244 @SmallTest | 238 @SmallTest |
245 @Feature({"Cronet"}) | 239 @Feature({"Cronet"}) |
246 public void testBadMethod() throws Exception { | 240 public void testBadMethod() throws Exception { |
247 TestUrlRequestListener listener = new TestUrlRequestListener(); | 241 TestUrlRequestListener listener = new TestUrlRequestListener(); |
248 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 242 UrlRequest.Builder builder = |
249 TEST_URL, listener, listener.getExecutor()); | 243 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( )); |
250 try { | 244 try { |
251 urlRequest.setHttpMethod("bad:method!"); | 245 builder.setHttpMethod("bad:method!"); |
252 urlRequest.start(); | 246 mActivity.mCronetEngine.executeRequest(builder); |
253 fail("IllegalArgumentException not thrown."); | 247 fail("IllegalArgumentException not thrown."); |
254 } catch (IllegalArgumentException e) { | 248 } catch (IllegalArgumentException e) { |
255 assertEquals("Invalid http method bad:method!", | 249 assertEquals("Invalid http method bad:method!", |
256 e.getMessage()); | 250 e.getMessage()); |
257 } | 251 } |
258 } | 252 } |
259 | 253 |
260 @SmallTest | 254 @SmallTest |
261 @Feature({"Cronet"}) | 255 @Feature({"Cronet"}) |
262 public void testBadHeaderName() throws Exception { | 256 public void testBadHeaderName() throws Exception { |
263 TestUrlRequestListener listener = new TestUrlRequestListener(); | 257 TestUrlRequestListener listener = new TestUrlRequestListener(); |
264 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 258 UrlRequest.Builder builder = |
265 TEST_URL, listener, listener.getExecutor()); | 259 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( )); |
266 try { | 260 try { |
267 urlRequest.addHeader("header:name", "headervalue"); | 261 builder.addHeader("header:name", "headervalue"); |
268 urlRequest.start(); | 262 mActivity.mCronetEngine.executeRequest(builder); |
269 fail("IllegalArgumentException not thrown."); | 263 fail("IllegalArgumentException not thrown."); |
270 } catch (IllegalArgumentException e) { | 264 } catch (IllegalArgumentException e) { |
271 assertEquals("Invalid header header:name=headervalue", | 265 assertEquals("Invalid header header:name=headervalue", |
272 e.getMessage()); | 266 e.getMessage()); |
273 } | 267 } |
274 } | 268 } |
275 | 269 |
276 @SmallTest | 270 @SmallTest |
277 @Feature({"Cronet"}) | 271 @Feature({"Cronet"}) |
278 public void testBadHeaderValue() throws Exception { | 272 public void testBadHeaderValue() throws Exception { |
279 TestUrlRequestListener listener = new TestUrlRequestListener(); | 273 TestUrlRequestListener listener = new TestUrlRequestListener(); |
280 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 274 UrlRequest.Builder builder = |
281 TEST_URL, listener, listener.getExecutor()); | 275 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( )); |
282 try { | 276 try { |
283 urlRequest.addHeader("headername", "bad header\r\nvalue"); | 277 builder.addHeader("headername", "bad header\r\nvalue"); |
284 urlRequest.start(); | 278 mActivity.mCronetEngine.executeRequest(builder); |
285 fail("IllegalArgumentException not thrown."); | 279 fail("IllegalArgumentException not thrown."); |
286 } catch (IllegalArgumentException e) { | 280 } catch (IllegalArgumentException e) { |
287 assertEquals("Invalid header headername=bad header\r\nvalue", | 281 assertEquals("Invalid header headername=bad header\r\nvalue", |
288 e.getMessage()); | 282 e.getMessage()); |
289 } | 283 } |
290 } | 284 } |
291 | 285 |
292 @SmallTest | 286 @SmallTest |
293 @Feature({"Cronet"}) | 287 @Feature({"Cronet"}) |
294 public void testAddHeader() throws Exception { | 288 public void testAddHeader() throws Exception { |
295 TestUrlRequestListener listener = new TestUrlRequestListener(); | 289 TestUrlRequestListener listener = new TestUrlRequestListener(); |
296 String headerName = "header-name"; | 290 String headerName = "header-name"; |
297 String headerValue = "header-value"; | 291 String headerValue = "header-value"; |
298 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 292 UrlRequest.Builder builder = new UrlRequest.Builder( |
299 NativeTestServer.getEchoHeaderURL(headerName), listener, | 293 NativeTestServer.getEchoHeaderURL(headerName), listener, listene r.getExecutor()); |
300 listener.getExecutor()); | |
301 | 294 |
302 urlRequest.addHeader(headerName, headerValue); | 295 builder.addHeader(headerName, headerValue); |
303 urlRequest.start(); | 296 mActivity.mCronetEngine.executeRequest(builder); |
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(); | 297 listener.blockForDone(); |
311 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 298 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
312 assertEquals(headerValue, listener.mResponseAsString); | 299 assertEquals(headerValue, listener.mResponseAsString); |
313 } | 300 } |
314 | 301 |
315 @SmallTest | 302 @SmallTest |
316 @Feature({"Cronet"}) | 303 @Feature({"Cronet"}) |
317 public void testMultiRequestHeaders() throws Exception { | 304 public void testMultiRequestHeaders() throws Exception { |
318 TestUrlRequestListener listener = new TestUrlRequestListener(); | 305 TestUrlRequestListener listener = new TestUrlRequestListener(); |
319 String headerName = "header-name"; | 306 String headerName = "header-name"; |
320 String headerValue1 = "header-value1"; | 307 String headerValue1 = "header-value1"; |
321 String headerValue2 = "header-value2"; | 308 String headerValue2 = "header-value2"; |
322 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 309 UrlRequest.Builder builder = new UrlRequest.Builder( |
323 NativeTestServer.getEchoAllHeadersURL(), listener, | 310 NativeTestServer.getEchoAllHeadersURL(), listener, listener.getE xecutor()); |
324 listener.getExecutor()); | 311 builder.addHeader(headerName, headerValue1); |
325 urlRequest.addHeader(headerName, headerValue1); | 312 builder.addHeader(headerName, headerValue2); |
326 urlRequest.addHeader(headerName, headerValue2); | 313 mActivity.mCronetEngine.executeRequest(builder); |
327 urlRequest.start(); | |
328 listener.blockForDone(); | 314 listener.blockForDone(); |
329 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 315 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
330 String headers = listener.mResponseAsString; | 316 String headers = listener.mResponseAsString; |
331 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); | 317 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); |
332 Matcher matcher = pattern.matcher(headers); | 318 Matcher matcher = pattern.matcher(headers); |
333 List<String> actualValues = new ArrayList<String>(); | 319 List<String> actualValues = new ArrayList<String>(); |
334 while (matcher.find()) { | 320 while (matcher.find()) { |
335 actualValues.add(matcher.group(1)); | 321 actualValues.add(matcher.group(1)); |
336 } | 322 } |
337 assertEquals(1, actualValues.size()); | 323 assertEquals(1, actualValues.size()); |
338 assertEquals("header-value2", actualValues.get(0)); | 324 assertEquals("header-value2", actualValues.get(0)); |
339 } | 325 } |
340 | 326 |
341 @SmallTest | 327 @SmallTest |
342 @Feature({"Cronet"}) | 328 @Feature({"Cronet"}) |
343 public void testCustomUserAgent() throws Exception { | 329 public void testCustomUserAgent() throws Exception { |
344 TestUrlRequestListener listener = new TestUrlRequestListener(); | 330 TestUrlRequestListener listener = new TestUrlRequestListener(); |
345 String userAgentName = "User-Agent"; | 331 String userAgentName = "User-Agent"; |
346 String userAgentValue = "User-Agent-Value"; | 332 String userAgentValue = "User-Agent-Value"; |
347 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 333 UrlRequest.Builder builder = new UrlRequest.Builder( |
348 NativeTestServer.getEchoHeaderURL(userAgentName), listener, | 334 NativeTestServer.getEchoHeaderURL(userAgentName), listener, list ener.getExecutor()); |
349 listener.getExecutor()); | 335 builder.addHeader(userAgentName, userAgentValue); |
350 urlRequest.addHeader(userAgentName, userAgentValue); | 336 mActivity.mCronetEngine.executeRequest(builder); |
351 urlRequest.start(); | |
352 listener.blockForDone(); | 337 listener.blockForDone(); |
353 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 338 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
354 assertEquals(userAgentValue, listener.mResponseAsString); | 339 assertEquals(userAgentValue, listener.mResponseAsString); |
355 } | 340 } |
356 | 341 |
357 @SmallTest | 342 @SmallTest |
358 @Feature({"Cronet"}) | 343 @Feature({"Cronet"}) |
359 public void testDefaultUserAgent() throws Exception { | 344 public void testDefaultUserAgent() throws Exception { |
360 TestUrlRequestListener listener = new TestUrlRequestListener(); | 345 TestUrlRequestListener listener = new TestUrlRequestListener(); |
361 String headerName = "User-Agent"; | 346 String headerName = "User-Agent"; |
362 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 347 UrlRequest.Builder builder = new UrlRequest.Builder( |
363 NativeTestServer.getEchoHeaderURL(headerName), listener, | 348 NativeTestServer.getEchoHeaderURL(headerName), listener, listene r.getExecutor()); |
364 listener.getExecutor()); | 349 mActivity.mCronetEngine.executeRequest(builder); |
365 urlRequest.start(); | |
366 listener.blockForDone(); | 350 listener.blockForDone(); |
367 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 351 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
368 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " | 352 assertTrue("Default User-Agent should contain Cronet/n.n.n.n but is " |
369 + listener.mResponseAsString, | 353 + listener.mResponseAsString, |
370 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", | 354 Pattern.matches(".+Cronet/\\d+\\.\\d+\\.\\d+\\.\\d+.+", |
371 listener.mResponseAsString)); | 355 listener.mResponseAsString)); |
372 } | 356 } |
373 | 357 |
374 @SmallTest | 358 @SmallTest |
375 @Feature({"Cronet"}) | 359 @Feature({"Cronet"}) |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
533 * when using legacy read() API. | 517 * when using legacy read() API. |
534 */ | 518 */ |
535 @SmallTest | 519 @SmallTest |
536 @Feature({"Cronet"}) | 520 @Feature({"Cronet"}) |
537 public void testLegacySimpleGetBufferUpdates() throws Exception { | 521 public void testLegacySimpleGetBufferUpdates() throws Exception { |
538 TestUrlRequestListener listener = new TestUrlRequestListener(); | 522 TestUrlRequestListener listener = new TestUrlRequestListener(); |
539 listener.mLegacyReadByteBufferAdjustment = true; | 523 listener.mLegacyReadByteBufferAdjustment = true; |
540 listener.setAutoAdvance(false); | 524 listener.setAutoAdvance(false); |
541 // Since the default method is "GET", the expected response body is also | 525 // Since the default method is "GET", the expected response body is also |
542 // "GET". | 526 // "GET". |
543 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 527 UrlRequest.Builder builder = new UrlRequest.Builder( |
544 NativeTestServer.getEchoMethodURL(), | 528 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); |
545 listener, listener.getExecutor()); | 529 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
546 urlRequest.start(); | |
547 listener.waitForNextStep(); | 530 listener.waitForNextStep(); |
548 | 531 |
549 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); | 532 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); |
550 readBuffer.put("FOR".getBytes()); | 533 readBuffer.put("FOR".getBytes()); |
551 assertEquals(3, readBuffer.position()); | 534 assertEquals(3, readBuffer.position()); |
552 | 535 |
553 // Read first two characters of the response ("GE"). It's theoretically | 536 // Read first two characters of the response ("GE"). It's theoretically |
554 // possible to need one read per character, though in practice, | 537 // possible to need one read per character, though in practice, |
555 // shouldn't happen. | 538 // shouldn't happen. |
556 while (listener.mResponseAsString.length() < 2) { | 539 while (listener.mResponseAsString.length() < 2) { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
620 /** | 603 /** |
621 * Checks that the buffer is updated correctly, when starting at an offset. | 604 * Checks that the buffer is updated correctly, when starting at an offset. |
622 */ | 605 */ |
623 @SmallTest | 606 @SmallTest |
624 @Feature({"Cronet"}) | 607 @Feature({"Cronet"}) |
625 public void testSimpleGetBufferUpdates() throws Exception { | 608 public void testSimpleGetBufferUpdates() throws Exception { |
626 TestUrlRequestListener listener = new TestUrlRequestListener(); | 609 TestUrlRequestListener listener = new TestUrlRequestListener(); |
627 listener.setAutoAdvance(false); | 610 listener.setAutoAdvance(false); |
628 // Since the default method is "GET", the expected response body is also | 611 // Since the default method is "GET", the expected response body is also |
629 // "GET". | 612 // "GET". |
630 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 613 UrlRequest.Builder builder = new UrlRequest.Builder( |
631 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); | 614 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); |
632 urlRequest.start(); | 615 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
633 listener.waitForNextStep(); | 616 listener.waitForNextStep(); |
634 | 617 |
635 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); | 618 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); |
636 readBuffer.put("FOR".getBytes()); | 619 readBuffer.put("FOR".getBytes()); |
637 assertEquals(3, readBuffer.position()); | 620 assertEquals(3, readBuffer.position()); |
638 | 621 |
639 // Read first two characters of the response ("GE"). It's theoretically | 622 // Read first two characters of the response ("GE"). It's theoretically |
640 // possible to need one read per character, though in practice, | 623 // possible to need one read per character, though in practice, |
641 // shouldn't happen. | 624 // shouldn't happen. |
642 while (listener.mResponseAsString.length() < 2) { | 625 while (listener.mResponseAsString.length() < 2) { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
701 // Make sure there are no other pending messages, which would trigger | 684 // Make sure there are no other pending messages, which would trigger |
702 // asserts in TestURLRequestListener. | 685 // asserts in TestURLRequestListener. |
703 testSimpleGet(); | 686 testSimpleGet(); |
704 } | 687 } |
705 | 688 |
706 @SmallTest | 689 @SmallTest |
707 @Feature({"Cronet"}) | 690 @Feature({"Cronet"}) |
708 public void testBadBuffers() throws Exception { | 691 public void testBadBuffers() throws Exception { |
709 TestUrlRequestListener listener = new TestUrlRequestListener(); | 692 TestUrlRequestListener listener = new TestUrlRequestListener(); |
710 listener.setAutoAdvance(false); | 693 listener.setAutoAdvance(false); |
711 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 694 UrlRequest.Builder builder = new UrlRequest.Builder( |
712 NativeTestServer.getEchoMethodURL(), listener, | 695 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); |
713 listener.getExecutor()); | 696 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
714 urlRequest.start(); | |
715 listener.waitForNextStep(); | 697 listener.waitForNextStep(); |
716 | 698 |
717 // Try to read using a full buffer. | 699 // Try to read using a full buffer. |
718 try { | 700 try { |
719 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); | 701 ByteBuffer readBuffer = ByteBuffer.allocateDirect(4); |
720 readBuffer.put("full".getBytes()); | 702 readBuffer.put("full".getBytes()); |
721 urlRequest.readNew(readBuffer); | 703 urlRequest.readNew(readBuffer); |
722 fail("Exception not thrown"); | 704 fail("Exception not thrown"); |
723 } catch (IllegalArgumentException e) { | 705 } catch (IllegalArgumentException e) { |
724 assertEquals("ByteBuffer is already full.", | 706 assertEquals("ByteBuffer is already full.", |
(...skipping 17 matching lines...) Expand all Loading... | |
742 listener.blockForDone(); | 724 listener.blockForDone(); |
743 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 725 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
744 assertEquals("GET", listener.mResponseAsString); | 726 assertEquals("GET", listener.mResponseAsString); |
745 } | 727 } |
746 | 728 |
747 @SmallTest | 729 @SmallTest |
748 @Feature({"Cronet"}) | 730 @Feature({"Cronet"}) |
749 public void testUnexpectedReads() throws Exception { | 731 public void testUnexpectedReads() throws Exception { |
750 final TestUrlRequestListener listener = new TestUrlRequestListener(); | 732 final TestUrlRequestListener listener = new TestUrlRequestListener(); |
751 listener.setAutoAdvance(false); | 733 listener.setAutoAdvance(false); |
752 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest ( | 734 final UrlRequest.Builder builder = new UrlRequest.Builder( |
753 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); | 735 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); |
754 | 736 |
755 // Try to read before starting request. | |
756 try { | |
757 listener.startNextRead(urlRequest); | |
758 fail("Exception not thrown"); | |
759 } catch (IllegalStateException e) { | |
760 assertEquals("Unexpected read attempt.", | |
761 e.getMessage()); | |
762 } | |
763 | |
764 // Verify reading right after start throws an assertion. Both must be | 737 // Verify reading right after start throws an assertion. Both must be |
765 // invoked on the Executor thread, to prevent receiving data until after | 738 // invoked on the Executor thread, to prevent receiving data until after |
766 // startNextRead has been invoked. | 739 // startNextRead has been invoked. |
767 Runnable startAndRead = new Runnable() { | 740 Callable<UrlRequest> startAndRead = new Callable<UrlRequest>() { |
768 @Override | 741 @Override |
769 public void run() { | 742 public UrlRequest call() { |
770 urlRequest.start(); | 743 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(b uilder); |
771 try { | 744 try { |
772 listener.startNextRead(urlRequest); | 745 listener.startNextRead(urlRequest); |
773 fail("Exception not thrown"); | 746 fail("Exception not thrown"); |
774 } catch (IllegalStateException e) { | 747 } catch (IllegalStateException e) { |
775 assertEquals("Unexpected read attempt.", | 748 assertEquals("Unexpected read attempt.", |
776 e.getMessage()); | 749 e.getMessage()); |
777 } | 750 } |
751 return urlRequest; | |
778 } | 752 } |
779 }; | 753 }; |
780 listener.getExecutor().execute(startAndRead); | 754 Future<UrlRequest> future = listener.getExecutorService().submit(startAn dRead); |
781 listener.waitForNextStep(); | 755 listener.waitForNextStep(); |
756 final UrlRequest urlRequest = future.get(); | |
782 | 757 |
783 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT); | 758 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT); |
784 // Try to read after the redirect. | 759 // Try to read after the redirect. |
785 try { | 760 try { |
786 listener.startNextRead(urlRequest); | 761 listener.startNextRead(urlRequest); |
787 fail("Exception not thrown"); | 762 fail("Exception not thrown"); |
788 } catch (IllegalStateException e) { | 763 } catch (IllegalStateException e) { |
789 assertEquals("Unexpected read attempt.", | 764 assertEquals("Unexpected read attempt.", |
790 e.getMessage()); | 765 e.getMessage()); |
791 } | 766 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
825 assertEquals("Unexpected read attempt.", | 800 assertEquals("Unexpected read attempt.", |
826 e.getMessage()); | 801 e.getMessage()); |
827 } | 802 } |
828 } | 803 } |
829 | 804 |
830 @SmallTest | 805 @SmallTest |
831 @Feature({"Cronet"}) | 806 @Feature({"Cronet"}) |
832 public void testUnexpectedFollowRedirects() throws Exception { | 807 public void testUnexpectedFollowRedirects() throws Exception { |
833 final TestUrlRequestListener listener = new TestUrlRequestListener(); | 808 final TestUrlRequestListener listener = new TestUrlRequestListener(); |
834 listener.setAutoAdvance(false); | 809 listener.setAutoAdvance(false); |
835 final UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest ( | 810 final UrlRequest.Builder builder = new UrlRequest.Builder( |
836 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); | 811 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); |
837 | 812 |
838 // Try to follow a redirect before starting the request. | |
839 try { | |
840 urlRequest.followRedirect(); | |
841 fail("Exception not thrown"); | |
842 } catch (IllegalStateException e) { | |
843 assertEquals("No redirect to follow.", | |
844 e.getMessage()); | |
845 } | |
846 | |
847 // Try to follow a redirect just after starting the request. Has to be | 813 // Try to follow a redirect just after starting the request. Has to be |
848 // done on the executor thread to avoid a race. | 814 // done on the executor thread to avoid a race. |
849 Runnable startAndRead = new Runnable() { | 815 Callable<UrlRequest> startAndRead = new Callable<UrlRequest>() { |
850 @Override | 816 @Override |
851 public void run() { | 817 public UrlRequest call() { |
852 urlRequest.start(); | 818 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(b uilder); |
853 try { | 819 try { |
854 urlRequest.followRedirect(); | 820 urlRequest.followRedirect(); |
855 fail("Exception not thrown"); | 821 fail("Exception not thrown"); |
856 } catch (IllegalStateException e) { | 822 } catch (IllegalStateException e) { |
857 assertEquals("No redirect to follow.", | 823 assertEquals("No redirect to follow.", |
858 e.getMessage()); | 824 e.getMessage()); |
859 } | 825 } |
826 return urlRequest; | |
860 } | 827 } |
861 }; | 828 }; |
862 listener.getExecutor().execute(startAndRead); | 829 Future<UrlRequest> future = listener.getExecutorService().submit(startAn dRead); |
863 listener.waitForNextStep(); | 830 listener.waitForNextStep(); |
831 final UrlRequest urlRequest = future.get(); | |
mef
2015/09/25 21:32:19
why do you need it?
pauljensen
2015/09/28 14:18:12
line 838, 840, 856, and 871 read it
mef
2015/09/28 17:13:37
Ah, that's the pattern change, as we don't have re
| |
864 | 832 |
865 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT); | 833 assertEquals(listener.mResponseStep, ResponseStep.ON_RECEIVED_REDIRECT); |
866 // Try to follow the redirect twice. Second attempt should fail. | 834 // Try to follow the redirect twice. Second attempt should fail. |
867 Runnable followRedirectTwice = new Runnable() { | 835 Runnable followRedirectTwice = new Runnable() { |
868 @Override | 836 @Override |
869 public void run() { | 837 public void run() { |
870 urlRequest.followRedirect(); | 838 urlRequest.followRedirect(); |
871 try { | 839 try { |
872 urlRequest.followRedirect(); | 840 urlRequest.followRedirect(); |
873 fail("Exception not thrown"); | 841 fail("Exception not thrown"); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
905 } catch (IllegalStateException e) { | 873 } catch (IllegalStateException e) { |
906 assertEquals("No redirect to follow.", | 874 assertEquals("No redirect to follow.", |
907 e.getMessage()); | 875 e.getMessage()); |
908 } | 876 } |
909 } | 877 } |
910 | 878 |
911 @SmallTest | 879 @SmallTest |
912 @Feature({"Cronet"}) | 880 @Feature({"Cronet"}) |
913 public void testUploadSetDataProvider() throws Exception { | 881 public void testUploadSetDataProvider() throws Exception { |
914 TestUrlRequestListener listener = new TestUrlRequestListener(); | 882 TestUrlRequestListener listener = new TestUrlRequestListener(); |
915 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 883 UrlRequest.Builder builder = new UrlRequest.Builder( |
916 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 884 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
917 | 885 |
918 try { | 886 try { |
919 urlRequest.setUploadDataProvider(null, listener.getExecutor()); | 887 builder.setUploadDataProvider(null, listener.getExecutor()); |
920 fail("Exception not thrown"); | 888 fail("Exception not thrown"); |
921 } catch (NullPointerException e) { | 889 } catch (NullPointerException e) { |
922 assertEquals("Invalid UploadDataProvider.", e.getMessage()); | 890 assertEquals("Invalid UploadDataProvider.", e.getMessage()); |
923 } | 891 } |
924 | 892 |
925 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 893 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
926 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 894 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
927 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 895 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
928 try { | 896 try { |
929 urlRequest.start(); | 897 mActivity.mCronetEngine.executeRequest(builder); |
930 fail("Exception not thrown"); | 898 fail("Exception not thrown"); |
931 } catch (IllegalArgumentException e) { | 899 } catch (IllegalArgumentException e) { |
932 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage()); | 900 assertEquals("Requests with upload data must have a Content-Type.", e.getMessage()); |
933 } | 901 } |
934 } | 902 } |
935 | 903 |
936 @SmallTest | 904 @SmallTest |
937 @Feature({"Cronet"}) | 905 @Feature({"Cronet"}) |
938 public void testUploadEmptyBodySync() throws Exception { | 906 public void testUploadEmptyBodySync() throws Exception { |
939 TestUrlRequestListener listener = new TestUrlRequestListener(); | 907 TestUrlRequestListener listener = new TestUrlRequestListener(); |
940 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 908 UrlRequest.Builder builder = new UrlRequest.Builder( |
941 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 909 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
942 | 910 |
943 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 911 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
944 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 912 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
945 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 913 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
946 urlRequest.addHeader("Content-Type", "useless/string"); | 914 builder.addHeader("Content-Type", "useless/string"); |
947 urlRequest.start(); | 915 mActivity.mCronetEngine.executeRequest(builder); |
948 listener.blockForDone(); | 916 listener.blockForDone(); |
949 | 917 |
950 assertEquals(0, dataProvider.getLength()); | 918 assertEquals(0, dataProvider.getLength()); |
951 assertEquals(0, dataProvider.getNumReadCalls()); | 919 assertEquals(0, dataProvider.getNumReadCalls()); |
952 assertEquals(0, dataProvider.getNumRewindCalls()); | 920 assertEquals(0, dataProvider.getNumRewindCalls()); |
953 | 921 |
954 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 922 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
955 assertEquals("", listener.mResponseAsString); | 923 assertEquals("", listener.mResponseAsString); |
956 } | 924 } |
957 | 925 |
958 @SmallTest | 926 @SmallTest |
959 @Feature({"Cronet"}) | 927 @Feature({"Cronet"}) |
960 public void testUploadSync() throws Exception { | 928 public void testUploadSync() throws Exception { |
961 TestUrlRequestListener listener = new TestUrlRequestListener(); | 929 TestUrlRequestListener listener = new TestUrlRequestListener(); |
962 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 930 UrlRequest.Builder builder = new UrlRequest.Builder( |
963 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 931 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
964 | 932 |
965 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 933 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
966 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 934 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
967 dataProvider.addRead("test".getBytes()); | 935 dataProvider.addRead("test".getBytes()); |
968 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 936 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
969 urlRequest.addHeader("Content-Type", "useless/string"); | 937 builder.addHeader("Content-Type", "useless/string"); |
970 urlRequest.start(); | 938 mActivity.mCronetEngine.executeRequest(builder); |
971 listener.blockForDone(); | 939 listener.blockForDone(); |
972 | 940 |
973 assertEquals(4, dataProvider.getLength()); | 941 assertEquals(4, dataProvider.getLength()); |
974 assertEquals(1, dataProvider.getNumReadCalls()); | 942 assertEquals(1, dataProvider.getNumReadCalls()); |
975 assertEquals(0, dataProvider.getNumRewindCalls()); | 943 assertEquals(0, dataProvider.getNumRewindCalls()); |
976 | 944 |
977 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 945 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
978 assertEquals("test", listener.mResponseAsString); | 946 assertEquals("test", listener.mResponseAsString); |
979 } | 947 } |
980 | 948 |
981 @SmallTest | 949 @SmallTest |
982 @Feature({"Cronet"}) | 950 @Feature({"Cronet"}) |
983 public void testUploadMultiplePiecesSync() throws Exception { | 951 public void testUploadMultiplePiecesSync() throws Exception { |
984 TestUrlRequestListener listener = new TestUrlRequestListener(); | 952 TestUrlRequestListener listener = new TestUrlRequestListener(); |
985 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 953 UrlRequest.Builder builder = new UrlRequest.Builder( |
986 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 954 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
987 | 955 |
988 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 956 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
989 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 957 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
990 dataProvider.addRead("Y".getBytes()); | 958 dataProvider.addRead("Y".getBytes()); |
991 dataProvider.addRead("et ".getBytes()); | 959 dataProvider.addRead("et ".getBytes()); |
992 dataProvider.addRead("another ".getBytes()); | 960 dataProvider.addRead("another ".getBytes()); |
993 dataProvider.addRead("test".getBytes()); | 961 dataProvider.addRead("test".getBytes()); |
994 | 962 |
995 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 963 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
996 urlRequest.addHeader("Content-Type", "useless/string"); | 964 builder.addHeader("Content-Type", "useless/string"); |
997 urlRequest.start(); | 965 mActivity.mCronetEngine.executeRequest(builder); |
998 listener.blockForDone(); | 966 listener.blockForDone(); |
999 | 967 |
1000 assertEquals(16, dataProvider.getLength()); | 968 assertEquals(16, dataProvider.getLength()); |
1001 assertEquals(4, dataProvider.getNumReadCalls()); | 969 assertEquals(4, dataProvider.getNumReadCalls()); |
1002 assertEquals(0, dataProvider.getNumRewindCalls()); | 970 assertEquals(0, dataProvider.getNumRewindCalls()); |
1003 | 971 |
1004 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 972 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
1005 assertEquals("Yet another test", listener.mResponseAsString); | 973 assertEquals("Yet another test", listener.mResponseAsString); |
1006 } | 974 } |
1007 | 975 |
1008 @SmallTest | 976 @SmallTest |
1009 @Feature({"Cronet"}) | 977 @Feature({"Cronet"}) |
1010 public void testUploadMultiplePiecesAsync() throws Exception { | 978 public void testUploadMultiplePiecesAsync() throws Exception { |
1011 TestUrlRequestListener listener = new TestUrlRequestListener(); | 979 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1012 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 980 UrlRequest.Builder builder = new UrlRequest.Builder( |
1013 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 981 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1014 | 982 |
1015 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 983 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1016 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); | 984 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); |
1017 dataProvider.addRead("Y".getBytes()); | 985 dataProvider.addRead("Y".getBytes()); |
1018 dataProvider.addRead("et ".getBytes()); | 986 dataProvider.addRead("et ".getBytes()); |
1019 dataProvider.addRead("another ".getBytes()); | 987 dataProvider.addRead("another ".getBytes()); |
1020 dataProvider.addRead("test".getBytes()); | 988 dataProvider.addRead("test".getBytes()); |
1021 | 989 |
1022 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 990 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1023 urlRequest.addHeader("Content-Type", "useless/string"); | 991 builder.addHeader("Content-Type", "useless/string"); |
1024 urlRequest.start(); | 992 mActivity.mCronetEngine.executeRequest(builder); |
1025 listener.blockForDone(); | 993 listener.blockForDone(); |
1026 | 994 |
1027 assertEquals(16, dataProvider.getLength()); | 995 assertEquals(16, dataProvider.getLength()); |
1028 assertEquals(4, dataProvider.getNumReadCalls()); | 996 assertEquals(4, dataProvider.getNumReadCalls()); |
1029 assertEquals(0, dataProvider.getNumRewindCalls()); | 997 assertEquals(0, dataProvider.getNumRewindCalls()); |
1030 | 998 |
1031 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 999 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
1032 assertEquals("Yet another test", listener.mResponseAsString); | 1000 assertEquals("Yet another test", listener.mResponseAsString); |
1033 } | 1001 } |
1034 | 1002 |
1035 @SmallTest | 1003 @SmallTest |
1036 @Feature({"Cronet"}) | 1004 @Feature({"Cronet"}) |
1037 public void testUploadChangesDefaultMethod() throws Exception { | 1005 public void testUploadChangesDefaultMethod() throws Exception { |
1038 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1006 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1039 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1007 UrlRequest.Builder builder = new UrlRequest.Builder( |
1040 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); | 1008 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); |
1041 | 1009 |
1042 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1010 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1043 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1011 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1044 dataProvider.addRead("test".getBytes()); | 1012 dataProvider.addRead("test".getBytes()); |
1045 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1013 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1046 urlRequest.addHeader("Content-Type", "useless/string"); | 1014 builder.addHeader("Content-Type", "useless/string"); |
1047 urlRequest.start(); | 1015 mActivity.mCronetEngine.executeRequest(builder); |
1048 listener.blockForDone(); | 1016 listener.blockForDone(); |
1049 | 1017 |
1050 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1018 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
1051 assertEquals("POST", listener.mResponseAsString); | 1019 assertEquals("POST", listener.mResponseAsString); |
1052 } | 1020 } |
1053 | 1021 |
1054 @SmallTest | 1022 @SmallTest |
1055 @Feature({"Cronet"}) | 1023 @Feature({"Cronet"}) |
1056 public void testUploadWithSetMethod() throws Exception { | 1024 public void testUploadWithSetMethod() throws Exception { |
1057 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1025 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1058 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1026 UrlRequest.Builder builder = new UrlRequest.Builder( |
1059 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); | 1027 NativeTestServer.getEchoMethodURL(), listener, listener.getExecu tor()); |
1060 | 1028 |
1061 final String method = "PUT"; | 1029 final String method = "PUT"; |
1062 urlRequest.setHttpMethod(method); | 1030 builder.setHttpMethod(method); |
1063 | 1031 |
1064 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1032 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1065 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1033 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1066 dataProvider.addRead("test".getBytes()); | 1034 dataProvider.addRead("test".getBytes()); |
1067 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1035 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1068 urlRequest.addHeader("Content-Type", "useless/string"); | 1036 builder.addHeader("Content-Type", "useless/string"); |
1069 urlRequest.start(); | 1037 mActivity.mCronetEngine.executeRequest(builder); |
1070 listener.blockForDone(); | 1038 listener.blockForDone(); |
1071 | 1039 |
1072 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1040 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
1073 assertEquals("PUT", listener.mResponseAsString); | 1041 assertEquals("PUT", listener.mResponseAsString); |
1074 } | 1042 } |
1075 | 1043 |
1076 @SmallTest | 1044 @SmallTest |
1077 @Feature({"Cronet"}) | 1045 @Feature({"Cronet"}) |
1078 public void testUploadRedirectSync() throws Exception { | 1046 public void testUploadRedirectSync() throws Exception { |
1079 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1047 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1080 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1048 UrlRequest.Builder builder = new UrlRequest.Builder( |
1081 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); | 1049 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); |
1082 | 1050 |
1083 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1051 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1084 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1052 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1085 dataProvider.addRead("test".getBytes()); | 1053 dataProvider.addRead("test".getBytes()); |
1086 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1054 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1087 urlRequest.addHeader("Content-Type", "useless/string"); | 1055 builder.addHeader("Content-Type", "useless/string"); |
1088 urlRequest.start(); | 1056 mActivity.mCronetEngine.executeRequest(builder); |
1089 listener.blockForDone(); | 1057 listener.blockForDone(); |
1090 | 1058 |
1091 // 1 read call before the rewind, 1 after. | 1059 // 1 read call before the rewind, 1 after. |
1092 assertEquals(2, dataProvider.getNumReadCalls()); | 1060 assertEquals(2, dataProvider.getNumReadCalls()); |
1093 assertEquals(1, dataProvider.getNumRewindCalls()); | 1061 assertEquals(1, dataProvider.getNumRewindCalls()); |
1094 | 1062 |
1095 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1063 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
1096 assertEquals("test", listener.mResponseAsString); | 1064 assertEquals("test", listener.mResponseAsString); |
1097 } | 1065 } |
1098 | 1066 |
1099 @SmallTest | 1067 @SmallTest |
1100 @Feature({"Cronet"}) | 1068 @Feature({"Cronet"}) |
1101 public void testUploadRedirectAsync() throws Exception { | 1069 public void testUploadRedirectAsync() throws Exception { |
1102 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1070 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1103 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1071 UrlRequest.Builder builder = new UrlRequest.Builder( |
1104 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); | 1072 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); |
1105 | 1073 |
1106 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1074 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1107 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); | 1075 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); |
1108 dataProvider.addRead("test".getBytes()); | 1076 dataProvider.addRead("test".getBytes()); |
1109 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1077 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1110 urlRequest.addHeader("Content-Type", "useless/string"); | 1078 builder.addHeader("Content-Type", "useless/string"); |
1111 urlRequest.start(); | 1079 mActivity.mCronetEngine.executeRequest(builder); |
1112 listener.blockForDone(); | 1080 listener.blockForDone(); |
1113 | 1081 |
1114 // 1 read call before the rewind, 1 after. | 1082 // 1 read call before the rewind, 1 after. |
1115 assertEquals(2, dataProvider.getNumReadCalls()); | 1083 assertEquals(2, dataProvider.getNumReadCalls()); |
1116 assertEquals(1, dataProvider.getNumRewindCalls()); | 1084 assertEquals(1, dataProvider.getNumRewindCalls()); |
1117 | 1085 |
1118 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); | 1086 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); |
1119 assertEquals("test", listener.mResponseAsString); | 1087 assertEquals("test", listener.mResponseAsString); |
1120 } | 1088 } |
1121 | 1089 |
1122 @SmallTest | 1090 @SmallTest |
1123 @Feature({"Cronet"}) | 1091 @Feature({"Cronet"}) |
1124 public void testUploadReadFailSync() throws Exception { | 1092 public void testUploadReadFailSync() throws Exception { |
1125 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1093 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1126 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1094 UrlRequest.Builder builder = new UrlRequest.Builder( |
1127 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1095 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1128 | 1096 |
1129 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1097 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1130 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1098 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1131 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); | 1099 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); |
1132 // This will never be read, but if the length is 0, read may never be | 1100 // This will never be read, but if the length is 0, read may never be |
1133 // called. | 1101 // called. |
1134 dataProvider.addRead("test".getBytes()); | 1102 dataProvider.addRead("test".getBytes()); |
1135 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1103 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1136 urlRequest.addHeader("Content-Type", "useless/string"); | 1104 builder.addHeader("Content-Type", "useless/string"); |
1137 urlRequest.start(); | 1105 mActivity.mCronetEngine.executeRequest(builder); |
1138 listener.blockForDone(); | 1106 listener.blockForDone(); |
1139 | 1107 |
1140 assertEquals(1, dataProvider.getNumReadCalls()); | 1108 assertEquals(1, dataProvider.getNumReadCalls()); |
1141 assertEquals(0, dataProvider.getNumRewindCalls()); | 1109 assertEquals(0, dataProvider.getNumRewindCalls()); |
1142 | 1110 |
1143 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1111 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1144 assertEquals("Sync read failure", listener.mError.getCause().getMessage( )); | 1112 assertEquals("Sync read failure", listener.mError.getCause().getMessage( )); |
1145 assertEquals(null, listener.mResponseInfo); | 1113 assertEquals(null, listener.mResponseInfo); |
1146 } | 1114 } |
1147 | 1115 |
1148 @SmallTest | 1116 @SmallTest |
1149 @Feature({"Cronet"}) | 1117 @Feature({"Cronet"}) |
1150 public void testUploadReadFailAsync() throws Exception { | 1118 public void testUploadReadFailAsync() throws Exception { |
1151 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1119 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1152 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1120 UrlRequest.Builder builder = new UrlRequest.Builder( |
1153 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1121 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1154 | 1122 |
1155 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1123 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1156 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1124 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1157 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); | 1125 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); |
1158 // This will never be read, but if the length is 0, read may never be | 1126 // This will never be read, but if the length is 0, read may never be |
1159 // called. | 1127 // called. |
1160 dataProvider.addRead("test".getBytes()); | 1128 dataProvider.addRead("test".getBytes()); |
1161 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1129 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1162 urlRequest.addHeader("Content-Type", "useless/string"); | 1130 builder.addHeader("Content-Type", "useless/string"); |
1163 urlRequest.start(); | 1131 mActivity.mCronetEngine.executeRequest(builder); |
1164 listener.blockForDone(); | 1132 listener.blockForDone(); |
1165 | 1133 |
1166 assertEquals(1, dataProvider.getNumReadCalls()); | 1134 assertEquals(1, dataProvider.getNumReadCalls()); |
1167 assertEquals(0, dataProvider.getNumRewindCalls()); | 1135 assertEquals(0, dataProvider.getNumRewindCalls()); |
1168 | 1136 |
1169 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1137 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1170 assertEquals("Async read failure", listener.mError.getCause().getMessage ()); | 1138 assertEquals("Async read failure", listener.mError.getCause().getMessage ()); |
1171 assertEquals(null, listener.mResponseInfo); | 1139 assertEquals(null, listener.mResponseInfo); |
1172 } | 1140 } |
1173 | 1141 |
1174 @SmallTest | 1142 @SmallTest |
1175 @Feature({"Cronet"}) | 1143 @Feature({"Cronet"}) |
1176 public void testUploadReadFailThrown() throws Exception { | 1144 public void testUploadReadFailThrown() throws Exception { |
1177 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1145 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1178 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1146 UrlRequest.Builder builder = new UrlRequest.Builder( |
1179 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1147 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1180 | 1148 |
1181 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1149 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1182 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1150 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1183 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); | 1151 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); |
1184 // This will never be read, but if the length is 0, read may never be | 1152 // This will never be read, but if the length is 0, read may never be |
1185 // called. | 1153 // called. |
1186 dataProvider.addRead("test".getBytes()); | 1154 dataProvider.addRead("test".getBytes()); |
1187 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1155 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1188 urlRequest.addHeader("Content-Type", "useless/string"); | 1156 builder.addHeader("Content-Type", "useless/string"); |
1189 urlRequest.start(); | 1157 mActivity.mCronetEngine.executeRequest(builder); |
1190 listener.blockForDone(); | 1158 listener.blockForDone(); |
1191 | 1159 |
1192 assertEquals(1, dataProvider.getNumReadCalls()); | 1160 assertEquals(1, dataProvider.getNumReadCalls()); |
1193 assertEquals(0, dataProvider.getNumRewindCalls()); | 1161 assertEquals(0, dataProvider.getNumRewindCalls()); |
1194 | 1162 |
1195 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1163 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1196 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e()); | 1164 assertEquals("Thrown read failure", listener.mError.getCause().getMessag e()); |
1197 assertEquals(null, listener.mResponseInfo); | 1165 assertEquals(null, listener.mResponseInfo); |
1198 } | 1166 } |
1199 | 1167 |
1200 @SmallTest | 1168 @SmallTest |
1201 @Feature({"Cronet"}) | 1169 @Feature({"Cronet"}) |
1202 public void testUploadRewindFailSync() throws Exception { | 1170 public void testUploadRewindFailSync() throws Exception { |
1203 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1171 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1204 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1172 UrlRequest.Builder builder = new UrlRequest.Builder( |
1205 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); | 1173 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); |
1206 | 1174 |
1207 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1175 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1208 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1176 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1209 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); | 1177 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); |
1210 dataProvider.addRead("test".getBytes()); | 1178 dataProvider.addRead("test".getBytes()); |
1211 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1179 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1212 urlRequest.addHeader("Content-Type", "useless/string"); | 1180 builder.addHeader("Content-Type", "useless/string"); |
1213 urlRequest.start(); | 1181 mActivity.mCronetEngine.executeRequest(builder); |
1214 listener.blockForDone(); | 1182 listener.blockForDone(); |
1215 | 1183 |
1216 assertEquals(1, dataProvider.getNumReadCalls()); | 1184 assertEquals(1, dataProvider.getNumReadCalls()); |
1217 assertEquals(1, dataProvider.getNumRewindCalls()); | 1185 assertEquals(1, dataProvider.getNumRewindCalls()); |
1218 | 1186 |
1219 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1187 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1220 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e()); | 1188 assertEquals("Sync rewind failure", listener.mError.getCause().getMessag e()); |
1221 assertEquals(null, listener.mResponseInfo); | 1189 assertEquals(null, listener.mResponseInfo); |
1222 } | 1190 } |
1223 | 1191 |
1224 @SmallTest | 1192 @SmallTest |
1225 @Feature({"Cronet"}) | 1193 @Feature({"Cronet"}) |
1226 public void testUploadRewindFailAsync() throws Exception { | 1194 public void testUploadRewindFailAsync() throws Exception { |
1227 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1195 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1228 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1196 UrlRequest.Builder builder = new UrlRequest.Builder( |
1229 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); | 1197 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); |
1230 | 1198 |
1231 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1199 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1232 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); | 1200 TestUploadDataProvider.SuccessCallbackMode.ASYNC, listener.getEx ecutor()); |
1233 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); | 1201 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); |
1234 dataProvider.addRead("test".getBytes()); | 1202 dataProvider.addRead("test".getBytes()); |
1235 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1203 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1236 urlRequest.addHeader("Content-Type", "useless/string"); | 1204 builder.addHeader("Content-Type", "useless/string"); |
1237 urlRequest.start(); | 1205 mActivity.mCronetEngine.executeRequest(builder); |
1238 listener.blockForDone(); | 1206 listener.blockForDone(); |
1239 | 1207 |
1240 assertEquals(1, dataProvider.getNumReadCalls()); | 1208 assertEquals(1, dataProvider.getNumReadCalls()); |
1241 assertEquals(1, dataProvider.getNumRewindCalls()); | 1209 assertEquals(1, dataProvider.getNumRewindCalls()); |
1242 | 1210 |
1243 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1211 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1244 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge()); | 1212 assertEquals("Async rewind failure", listener.mError.getCause().getMessa ge()); |
1245 assertEquals(null, listener.mResponseInfo); | 1213 assertEquals(null, listener.mResponseInfo); |
1246 } | 1214 } |
1247 | 1215 |
1248 @SmallTest | 1216 @SmallTest |
1249 @Feature({"Cronet"}) | 1217 @Feature({"Cronet"}) |
1250 public void testUploadRewindFailThrown() throws Exception { | 1218 public void testUploadRewindFailThrown() throws Exception { |
1251 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1219 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1252 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1220 UrlRequest.Builder builder = new UrlRequest.Builder( |
1253 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); | 1221 NativeTestServer.getRedirectToEchoBody(), listener, listener.get Executor()); |
1254 | 1222 |
1255 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1223 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1256 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1224 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1257 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); | 1225 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); |
1258 dataProvider.addRead("test".getBytes()); | 1226 dataProvider.addRead("test".getBytes()); |
1259 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1227 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1260 urlRequest.addHeader("Content-Type", "useless/string"); | 1228 builder.addHeader("Content-Type", "useless/string"); |
1261 urlRequest.start(); | 1229 mActivity.mCronetEngine.executeRequest(builder); |
1262 listener.blockForDone(); | 1230 listener.blockForDone(); |
1263 | 1231 |
1264 assertEquals(1, dataProvider.getNumReadCalls()); | 1232 assertEquals(1, dataProvider.getNumReadCalls()); |
1265 assertEquals(1, dataProvider.getNumRewindCalls()); | 1233 assertEquals(1, dataProvider.getNumRewindCalls()); |
1266 | 1234 |
1267 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1235 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1268 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age()); | 1236 assertEquals("Thrown rewind failure", listener.mError.getCause().getMess age()); |
1269 assertEquals(null, listener.mResponseInfo); | 1237 assertEquals(null, listener.mResponseInfo); |
1270 } | 1238 } |
1271 | 1239 |
1272 @SmallTest | 1240 @SmallTest |
1273 @Feature({"Cronet"}) | 1241 @Feature({"Cronet"}) |
1274 public void testUploadChunked() throws Exception { | 1242 public void testUploadChunked() throws Exception { |
1275 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1243 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1276 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1244 UrlRequest.Builder builder = new UrlRequest.Builder( |
1277 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1245 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1278 | 1246 |
1279 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1247 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1280 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1248 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1281 dataProvider.addRead("test hello".getBytes()); | 1249 dataProvider.addRead("test hello".getBytes()); |
1282 dataProvider.setChunked(true); | 1250 dataProvider.setChunked(true); |
1283 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1251 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1284 urlRequest.addHeader("Content-Type", "useless/string"); | 1252 builder.addHeader("Content-Type", "useless/string"); |
1285 | 1253 |
1286 assertEquals(-1, dataProvider.getLength()); | 1254 assertEquals(-1, dataProvider.getLength()); |
1287 | 1255 |
1288 urlRequest.start(); | 1256 mActivity.mCronetEngine.executeRequest(builder); |
1289 listener.blockForDone(); | 1257 listener.blockForDone(); |
1290 | 1258 |
1291 // 1 read call for one data chunk. | 1259 // 1 read call for one data chunk. |
1292 assertEquals(1, dataProvider.getNumReadCalls()); | 1260 assertEquals(1, dataProvider.getNumReadCalls()); |
1293 assertEquals("test hello", listener.mResponseAsString); | 1261 assertEquals("test hello", listener.mResponseAsString); |
1294 } | 1262 } |
1295 | 1263 |
1296 @SmallTest | 1264 @SmallTest |
1297 @Feature({"Cronet"}) | 1265 @Feature({"Cronet"}) |
1298 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { | 1266 public void testUploadChunkedLastReadZeroLengthBody() throws Exception { |
1299 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1267 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1300 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1268 UrlRequest.Builder builder = new UrlRequest.Builder( |
1301 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1269 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1302 | 1270 |
1303 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1271 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1304 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1272 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1305 // Add 3 reads. The last read has a 0-length body. | 1273 // Add 3 reads. The last read has a 0-length body. |
1306 dataProvider.addRead("hello there".getBytes()); | 1274 dataProvider.addRead("hello there".getBytes()); |
1307 dataProvider.addRead("!".getBytes()); | 1275 dataProvider.addRead("!".getBytes()); |
1308 dataProvider.addRead("".getBytes()); | 1276 dataProvider.addRead("".getBytes()); |
1309 dataProvider.setChunked(true); | 1277 dataProvider.setChunked(true); |
1310 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1278 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1311 urlRequest.addHeader("Content-Type", "useless/string"); | 1279 builder.addHeader("Content-Type", "useless/string"); |
1312 | 1280 |
1313 assertEquals(-1, dataProvider.getLength()); | 1281 assertEquals(-1, dataProvider.getLength()); |
1314 | 1282 |
1315 urlRequest.start(); | 1283 mActivity.mCronetEngine.executeRequest(builder); |
1316 listener.blockForDone(); | 1284 listener.blockForDone(); |
1317 | 1285 |
1318 // 2 read call for the first two data chunks, and 1 for final chunk. | 1286 // 2 read call for the first two data chunks, and 1 for final chunk. |
1319 assertEquals(3, dataProvider.getNumReadCalls()); | 1287 assertEquals(3, dataProvider.getNumReadCalls()); |
1320 assertEquals("hello there!", listener.mResponseAsString); | 1288 assertEquals("hello there!", listener.mResponseAsString); |
1321 } | 1289 } |
1322 | 1290 |
1323 // Test where an upload fails without ever initializing the | 1291 // Test where an upload fails without ever initializing the |
1324 // UploadDataStream, because it can't connect to the server. | 1292 // UploadDataStream, because it can't connect to the server. |
1325 @SmallTest | 1293 @SmallTest |
1326 @Feature({"Cronet"}) | 1294 @Feature({"Cronet"}) |
1327 public void testUploadFailsWithoutInitializingStream() throws Exception { | 1295 public void testUploadFailsWithoutInitializingStream() throws Exception { |
1328 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1296 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1329 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1297 UrlRequest.Builder builder = new UrlRequest.Builder( |
1330 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1298 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1331 // Shut down the test server, so connecting to it fails. Note that | 1299 // Shut down the test server, so connecting to it fails. Note that |
1332 // calling shutdown again during teardown is safe. | 1300 // calling shutdown again during teardown is safe. |
1333 NativeTestServer.shutdownNativeTestServer(); | 1301 NativeTestServer.shutdownNativeTestServer(); |
1334 | 1302 |
1335 TestUploadDataProvider dataProvider = new TestUploadDataProvider( | 1303 TestUploadDataProvider dataProvider = new TestUploadDataProvider( |
1336 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); | 1304 TestUploadDataProvider.SuccessCallbackMode.SYNC, listener.getExe cutor()); |
1337 dataProvider.addRead("test".getBytes()); | 1305 dataProvider.addRead("test".getBytes()); |
1338 urlRequest.setUploadDataProvider(dataProvider, listener.getExecutor()); | 1306 builder.setUploadDataProvider(dataProvider, listener.getExecutor()); |
1339 urlRequest.addHeader("Content-Type", "useless/string"); | 1307 builder.addHeader("Content-Type", "useless/string"); |
1340 urlRequest.start(); | 1308 mActivity.mCronetEngine.executeRequest(builder); |
1341 listener.blockForDone(); | 1309 listener.blockForDone(); |
1342 | 1310 |
1343 assertNull(listener.mResponseInfo); | 1311 assertNull(listener.mResponseInfo); |
1344 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", | 1312 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", |
1345 listener.mError.getMessage()); | 1313 listener.mError.getMessage()); |
1346 } | 1314 } |
1347 | 1315 |
1348 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , | 1316 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , |
1349 boolean expectResponseInfo, boolean expectError) { | 1317 boolean expectResponseInfo, boolean expectError) { |
1350 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1318 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1351 listener.setFailure(failureType, failureStep); | 1319 listener.setFailure(failureType, failureStep); |
1352 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1320 UrlRequest.Builder builder = new UrlRequest.Builder( |
1353 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); | 1321 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); |
1354 urlRequest.start(); | 1322 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
1355 listener.blockForDone(); | 1323 listener.blockForDone(); |
1356 assertEquals(1, listener.mRedirectCount); | 1324 assertEquals(1, listener.mRedirectCount); |
1357 assertEquals(listener.mResponseStep, failureStep); | 1325 assertEquals(listener.mResponseStep, failureStep); |
1358 assertTrue(urlRequest.isDone()); | 1326 assertTrue(urlRequest.isDone()); |
1359 assertEquals(expectResponseInfo, listener.mResponseInfo != null); | 1327 assertEquals(expectResponseInfo, listener.mResponseInfo != null); |
1360 assertEquals(expectError, listener.mError != null); | 1328 assertEquals(expectError, listener.mError != null); |
1361 assertEquals(expectError, listener.mOnErrorCalled); | 1329 assertEquals(expectError, listener.mOnErrorCalled); |
1362 } | 1330 } |
1363 | 1331 |
1364 @SmallTest | 1332 @SmallTest |
(...skipping 25 matching lines...) Expand all Loading... | |
1390 true, false); | 1358 true, false); |
1391 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, | 1359 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, |
1392 true, true); | 1360 true, true); |
1393 } | 1361 } |
1394 | 1362 |
1395 @SmallTest | 1363 @SmallTest |
1396 @Feature({"Cronet"}) | 1364 @Feature({"Cronet"}) |
1397 public void testThrowON_SUCCEEDED() { | 1365 public void testThrowON_SUCCEEDED() { |
1398 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1366 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1399 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); | 1367 listener.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); |
1400 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1368 UrlRequest.Builder builder = new UrlRequest.Builder( |
1401 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); | 1369 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); |
1402 urlRequest.start(); | 1370 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
1403 listener.blockForDone(); | 1371 listener.blockForDone(); |
1404 assertEquals(1, listener.mRedirectCount); | 1372 assertEquals(1, listener.mRedirectCount); |
1405 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); | 1373 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); |
1406 assertTrue(urlRequest.isDone()); | 1374 assertTrue(urlRequest.isDone()); |
1407 assertNotNull(listener.mResponseInfo); | 1375 assertNotNull(listener.mResponseInfo); |
1408 assertNull(listener.mError); | 1376 assertNull(listener.mError); |
1409 assertFalse(listener.mOnErrorCalled); | 1377 assertFalse(listener.mOnErrorCalled); |
1410 } | 1378 } |
1411 | 1379 |
1412 @SmallTest | 1380 @SmallTest |
1413 @Feature({"Cronet"}) | 1381 @Feature({"Cronet"}) |
1414 public void testExecutorShutdown() { | 1382 public void testExecutorShutdown() { |
1415 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1383 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1416 | 1384 |
1417 listener.setAutoAdvance(false); | 1385 listener.setAutoAdvance(false); |
1386 UrlRequest.Builder builder = new UrlRequest.Builder( | |
1387 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | |
1418 CronetUrlRequest urlRequest = | 1388 CronetUrlRequest urlRequest = |
1419 (CronetUrlRequest) mActivity.mUrlRequestContext.createRequest( | 1389 (CronetUrlRequest) mActivity.mCronetEngine.executeRequest(builde r); |
1420 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | |
1421 urlRequest.start(); | |
1422 listener.waitForNextStep(); | 1390 listener.waitForNextStep(); |
1423 assertFalse(listener.isDone()); | 1391 assertFalse(listener.isDone()); |
1424 assertFalse(urlRequest.isDone()); | 1392 assertFalse(urlRequest.isDone()); |
1425 | 1393 |
1426 final ConditionVariable requestDestroyed = new ConditionVariable(false); | 1394 final ConditionVariable requestDestroyed = new ConditionVariable(false); |
1427 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { | 1395 urlRequest.setOnDestroyedCallbackForTests(new Runnable() { |
1428 @Override | 1396 @Override |
1429 public void run() { | 1397 public void run() { |
1430 requestDestroyed.open(); | 1398 requestDestroyed.open(); |
1431 } | 1399 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1463 mByteBuffer = byteBuffer; | 1431 mByteBuffer = byteBuffer; |
1464 mReadCalled.open(); | 1432 mReadCalled.open(); |
1465 } | 1433 } |
1466 | 1434 |
1467 @Override | 1435 @Override |
1468 public void rewind(final UploadDataSink uploadDataSink) { | 1436 public void rewind(final UploadDataSink uploadDataSink) { |
1469 } | 1437 } |
1470 } | 1438 } |
1471 | 1439 |
1472 TestUrlRequestListener listener = new TestUrlRequestListener(); | 1440 TestUrlRequestListener listener = new TestUrlRequestListener(); |
1473 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( | 1441 UrlRequest.Builder builder = new UrlRequest.Builder( |
1474 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); | 1442 NativeTestServer.getEchoBodyURL(), listener, listener.getExecuto r()); |
1475 | 1443 |
1476 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); | 1444 ExecutorService uploadExecutor = Executors.newSingleThreadExecutor(); |
1477 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ; | 1445 HangingUploadDataProvider dataProvider = new HangingUploadDataProvider() ; |
1478 urlRequest.setUploadDataProvider(dataProvider, uploadExecutor); | 1446 builder.setUploadDataProvider(dataProvider, uploadExecutor); |
1479 urlRequest.addHeader("Content-Type", "useless/string"); | 1447 builder.addHeader("Content-Type", "useless/string"); |
1480 urlRequest.start(); | 1448 UrlRequest urlRequest = mActivity.mCronetEngine.executeRequest(builder); |
1481 // Wait for read to be called on executor. | 1449 // Wait for read to be called on executor. |
1482 dataProvider.mReadCalled.block(); | 1450 dataProvider.mReadCalled.block(); |
1483 // Shutdown the executor, so posting next task will throw an exception. | 1451 // Shutdown the executor, so posting next task will throw an exception. |
1484 uploadExecutor.shutdown(); | 1452 uploadExecutor.shutdown(); |
1485 // Continue the upload. | 1453 // Continue the upload. |
1486 dataProvider.mByteBuffer.putInt(42); | 1454 dataProvider.mByteBuffer.putInt(42); |
1487 dataProvider.mUploadDataSink.onReadSucceeded(false); | 1455 dataProvider.mUploadDataSink.onReadSucceeded(false); |
1488 // Listener.onFailed will be called on request executor even though uplo ad | 1456 // Listener.onFailed will be called on request executor even though uplo ad |
1489 // executor is shutdown. | 1457 // executor is shutdown. |
1490 listener.blockForDone(); | 1458 listener.blockForDone(); |
1491 assertTrue(listener.isDone()); | 1459 assertTrue(listener.isDone()); |
1492 assertTrue(listener.mOnErrorCalled); | 1460 assertTrue(listener.mOnErrorCalled); |
1493 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); | 1461 assertEquals("Exception received from UploadDataProvider", listener.mErr or.getMessage()); |
1494 assertTrue(urlRequest.isDone()); | 1462 assertTrue(urlRequest.isDone()); |
1495 } | 1463 } |
1496 | 1464 |
1497 // Returns the contents of byteBuffer, from its position() to its limit(), | 1465 // Returns the contents of byteBuffer, from its position() to its limit(), |
1498 // as a String. Does not modify byteBuffer's position(). | 1466 // as a String. Does not modify byteBuffer's position(). |
1499 private String bufferContentsToString(ByteBuffer byteBuffer, int start, | 1467 private String bufferContentsToString(ByteBuffer byteBuffer, int start, |
1500 int end) { | 1468 int end) { |
1501 // Use a duplicate to avoid modifying byteBuffer. | 1469 // Use a duplicate to avoid modifying byteBuffer. |
1502 ByteBuffer duplicate = byteBuffer.duplicate(); | 1470 ByteBuffer duplicate = byteBuffer.duplicate(); |
1503 duplicate.position(start); | 1471 duplicate.position(start); |
1504 duplicate.limit(end); | 1472 duplicate.limit(end); |
1505 byte[] contents = new byte[duplicate.remaining()]; | 1473 byte[] contents = new byte[duplicate.remaining()]; |
1506 duplicate.get(contents); | 1474 duplicate.get(contents); |
1507 return new String(contents); | 1475 return new String(contents); |
1508 } | 1476 } |
1509 } | 1477 } |
OLD | NEW |