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

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

Issue 1359343005: Update ResponseInfo to UrlResponseInfo with API review comments. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass the integration tests. Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 import android.util.Pair;
10 9
11 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
12 import org.chromium.net.TestUrlRequestListener.FailureType; 11 import org.chromium.net.TestUrlRequestListener.FailureType;
13 import org.chromium.net.TestUrlRequestListener.ResponseStep; 12 import org.chromium.net.TestUrlRequestListener.ResponseStep;
14 import org.chromium.net.test.FailurePhase; 13 import org.chromium.net.test.FailurePhase;
15 14
16 import java.nio.ByteBuffer; 15 import java.nio.ByteBuffer;
17 import java.util.ArrayList; 16 import java.util.ArrayList;
18 import java.util.List; 17 import java.util.List;
19 import java.util.Map; 18 import java.util.Map;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 urlRequest.start(); 56 urlRequest.start();
58 listener.blockForDone(); 57 listener.blockForDone();
59 assertTrue(urlRequest.isDone()); 58 assertTrue(urlRequest.isDone());
60 return listener; 59 return listener;
61 } 60 }
62 61
63 private void checkResponseInfo(ResponseInfo responseInfo, 62 private void checkResponseInfo(ResponseInfo responseInfo,
64 String expectedUrl, int expectedHttpStatusCode, 63 String expectedUrl, int expectedHttpStatusCode,
65 String expectedHttpStatusText) { 64 String expectedHttpStatusText) {
66 assertEquals(expectedUrl, responseInfo.getUrl()); 65 assertEquals(expectedUrl, responseInfo.getUrl());
67 assertEquals(expectedUrl, responseInfo.getUrlChain()[ 66 assertEquals(
68 responseInfo.getUrlChain().length - 1]); 67 expectedUrl, responseInfo.getUrlChain().get(responseInfo.getUrlC hain().size() - 1));
69 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); 68 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode());
70 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText()); 69 assertEquals(expectedHttpStatusText, responseInfo.getHttpStatusText());
71 assertFalse(responseInfo.wasCached()); 70 assertFalse(responseInfo.wasCached());
71 assertTrue(responseInfo.toString().length() > 0);
72 } 72 }
73 73
74 private void checkResponseInfoHeader(ResponseInfo responseInfo, 74 private void checkResponseInfoHeader(ResponseInfo responseInfo,
75 String headerName, String headerValue) { 75 String headerName, String headerValue) {
76 Map<String, List<String>> responseHeaders = 76 Map<String, List<String>> responseHeaders =
77 responseInfo.getAllHeaders(); 77 responseInfo.getAllHeaders();
78 List<String> header = responseHeaders.get(headerName); 78 List<String> header = responseHeaders.get(headerName);
79 assertNotNull(header); 79 assertNotNull(header);
80 assertTrue(header.contains(headerValue)); 80 assertTrue(header.contains(headerValue));
81 } 81 }
(...skipping 28 matching lines...) Expand all
110 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 110 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
111 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r()); 111 NativeTestServer.getRedirectURL(), listener, listener.getExecuto r());
112 urlRequest.start(); 112 urlRequest.start();
113 listener.waitForNextStep(); 113 listener.waitForNextStep();
114 114
115 // Check the redirect. 115 // Check the redirect.
116 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); 116 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep);
117 assertEquals(1, listener.mRedirectResponseInfoList.size()); 117 assertEquals(1, listener.mRedirectResponseInfoList.size());
118 checkResponseInfo(listener.mRedirectResponseInfoList.get(0), 118 checkResponseInfo(listener.mRedirectResponseInfoList.get(0),
119 NativeTestServer.getRedirectURL(), 302, "Found"); 119 NativeTestServer.getRedirectURL(), 302, "Found");
120 assertEquals(1, 120 assertEquals(1, listener.mRedirectResponseInfoList.get(0).getUrlChain(). size());
121 listener.mRedirectResponseInfoList.get(0).getUrlChain().length);
122 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList .get(0)); 121 assertEquals(NativeTestServer.getSuccessURL(), listener.mRedirectUrlList .get(0));
123 checkResponseInfoHeader(listener.mRedirectResponseInfoList.get(0), 122 checkResponseInfoHeader(listener.mRedirectResponseInfoList.get(0),
124 "redirect-header", "header-value"); 123 "redirect-header", "header-value");
125 124
126 // Wait for an unrelated request to finish. The request should not 125 // Wait for an unrelated request to finish. The request should not
127 // advance until followRedirect is invoked. 126 // advance until followRedirect is invoked.
128 testSimpleGet(); 127 testSimpleGet();
129 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep); 128 assertEquals(ResponseStep.ON_RECEIVED_REDIRECT, listener.mResponseStep);
130 assertEquals(1, listener.mRedirectResponseInfoList.size()); 129 assertEquals(1, listener.mRedirectResponseInfoList.size());
131 130
132 // Follow the redirect and wait for the next set of headers. 131 // Follow the redirect and wait for the next set of headers.
133 urlRequest.followRedirect(); 132 urlRequest.followRedirect();
134 listener.waitForNextStep(); 133 listener.waitForNextStep();
135 134
136 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); 135 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep);
137 assertEquals(1, listener.mRedirectResponseInfoList.size()); 136 assertEquals(1, listener.mRedirectResponseInfoList.size());
138 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 137 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
139 checkResponseInfo(listener.mResponseInfo, NativeTestServer.getSuccessURL (), 200, "OK"); 138 checkResponseInfo(listener.mResponseInfo, NativeTestServer.getSuccessURL (), 200, "OK");
140 assertEquals(2, listener.mResponseInfo.getUrlChain().length); 139 assertEquals(2, listener.mResponseInfo.getUrlChain().size());
141 assertEquals(NativeTestServer.getRedirectURL(), listener.mResponseInfo.g etUrlChain()[0]); 140 assertEquals(
142 assertEquals(NativeTestServer.getSuccessURL(), listener.mResponseInfo.ge tUrlChain()[1]); 141 NativeTestServer.getRedirectURL(), listener.mResponseInfo.getUrl Chain().get(0));
142 assertEquals(NativeTestServer.getSuccessURL(), listener.mResponseInfo.ge tUrlChain().get(1));
143 143
144 // Wait for an unrelated request to finish. The request should not 144 // Wait for an unrelated request to finish. The request should not
145 // advance until read is invoked. 145 // advance until read is invoked.
146 testSimpleGet(); 146 testSimpleGet();
147 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); 147 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep);
148 148
149 // One read should get all the characters, but best not to depend on 149 // One read should get all the characters, but best not to depend on
150 // how much is actually read from the socket at once. 150 // how much is actually read from the socket at once.
151 while (!listener.isDone()) { 151 while (!listener.isDone()) {
152 listener.startNextRead(urlRequest); 152 listener.startNextRead(urlRequest);
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 assertEquals(2, multiHeader.size()); 386 assertEquals(2, multiHeader.size());
387 assertEquals("header-value1", multiHeader.get(0)); 387 assertEquals("header-value1", multiHeader.get(0));
388 assertEquals("header-value2", multiHeader.get(1)); 388 assertEquals("header-value2", multiHeader.get(1));
389 } 389 }
390 390
391 @SmallTest 391 @SmallTest
392 @Feature({"Cronet"}) 392 @Feature({"Cronet"})
393 public void testResponseHeadersList() throws Exception { 393 public void testResponseHeadersList() throws Exception {
394 TestUrlRequestListener listener = startAndWaitForComplete(NativeTestServ er.getSuccessURL()); 394 TestUrlRequestListener listener = startAndWaitForComplete(NativeTestServ er.getSuccessURL());
395 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 395 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
396 List<Pair<String, String>> responseHeaders = 396 List<Map.Entry<String, String>> responseHeaders =
397 listener.mResponseInfo.getAllHeadersAsList(); 397 listener.mResponseInfo.getAllHeadersAsList();
398 assertEquals(5, responseHeaders.size()); 398 assertEquals(5, responseHeaders.size());
399 assertEquals("Content-Type", responseHeaders.get(0).first); 399 assertEquals("Content-Type", responseHeaders.get(0).getKey());
400 assertEquals("text/plain", responseHeaders.get(0).second); 400 assertEquals("text/plain", responseHeaders.get(0).getValue());
401 assertEquals("Access-Control-Allow-Origin", 401 assertEquals("Access-Control-Allow-Origin", responseHeaders.get(1).getKe y());
402 responseHeaders.get(1).first); 402 assertEquals("*", responseHeaders.get(1).getValue());
403 assertEquals("*", responseHeaders.get(1).second); 403 assertEquals("header-name", responseHeaders.get(2).getKey());
404 assertEquals("header-name", responseHeaders.get(2).first); 404 assertEquals("header-value", responseHeaders.get(2).getValue());
405 assertEquals("header-value", responseHeaders.get(2).second); 405 assertEquals("multi-header-name", responseHeaders.get(3).getKey());
406 assertEquals("multi-header-name", responseHeaders.get(3).first); 406 assertEquals("header-value1", responseHeaders.get(3).getValue());
407 assertEquals("header-value1", responseHeaders.get(3).second); 407 assertEquals("multi-header-name", responseHeaders.get(4).getKey());
408 assertEquals("multi-header-name", responseHeaders.get(4).first); 408 assertEquals("header-value2", responseHeaders.get(4).getValue());
409 assertEquals("header-value2", responseHeaders.get(4).second);
410 } 409 }
411 410
412 @SmallTest 411 @SmallTest
413 @Feature({"Cronet"}) 412 @Feature({"Cronet"})
414 public void testMockMultiRedirect() throws Exception { 413 public void testMockMultiRedirect() throws Exception {
415 TestUrlRequestListener listener = 414 TestUrlRequestListener listener =
416 startAndWaitForComplete(NativeTestServer.getMultiRedirectURL()); 415 startAndWaitForComplete(NativeTestServer.getMultiRedirectURL());
417 ResponseInfo mResponseInfo = listener.mResponseInfo; 416 ResponseInfo mResponseInfo = listener.mResponseInfo;
418 assertEquals(2, listener.mRedirectCount); 417 assertEquals(2, listener.mRedirectCount);
419 assertEquals(200, mResponseInfo.getHttpStatusCode()); 418 assertEquals(200, mResponseInfo.getHttpStatusCode());
420 assertEquals(2, listener.mRedirectResponseInfoList.size()); 419 assertEquals(2, listener.mRedirectResponseInfoList.size());
421 420
422 // Check first redirect (multiredirect.html -> redirect.html) 421 // Check first redirect (multiredirect.html -> redirect.html)
423 ResponseInfo firstRedirectResponseInfo = 422 ResponseInfo firstRedirectResponseInfo =
424 listener.mRedirectResponseInfoList.get(0); 423 listener.mRedirectResponseInfoList.get(0);
425 assertEquals(1, firstRedirectResponseInfo.getUrlChain().length); 424 assertEquals(1, firstRedirectResponseInfo.getUrlChain().size());
426 assertEquals( 425 assertEquals(NativeTestServer.getMultiRedirectURL(),
427 NativeTestServer.getMultiRedirectURL(), firstRedirectResponseInf o.getUrlChain()[0]); 426 firstRedirectResponseInfo.getUrlChain().get(0));
428 checkResponseInfo( 427 checkResponseInfo(
429 firstRedirectResponseInfo, NativeTestServer.getMultiRedirectURL( ), 302, "Found"); 428 firstRedirectResponseInfo, NativeTestServer.getMultiRedirectURL( ), 302, "Found");
430 checkResponseInfoHeader(firstRedirectResponseInfo, 429 checkResponseInfoHeader(firstRedirectResponseInfo,
431 "redirect-header0", "header-value"); 430 "redirect-header0", "header-value");
432 431
433 // Check second redirect (redirect.html -> success.txt) 432 // Check second redirect (redirect.html -> success.txt)
434 ResponseInfo secondRedirectResponseInfo = 433 ResponseInfo secondRedirectResponseInfo =
435 listener.mRedirectResponseInfoList.get(1); 434 listener.mRedirectResponseInfoList.get(1);
436 assertEquals(2, secondRedirectResponseInfo.getUrlChain().length); 435 assertEquals(2, secondRedirectResponseInfo.getUrlChain().size());
437 assertEquals(NativeTestServer.getMultiRedirectURL(), 436 assertEquals(NativeTestServer.getMultiRedirectURL(),
438 secondRedirectResponseInfo.getUrlChain()[0]); 437 secondRedirectResponseInfo.getUrlChain().get(0));
439 assertEquals( 438 assertEquals(
440 NativeTestServer.getRedirectURL(), secondRedirectResponseInfo.ge tUrlChain()[1]); 439 NativeTestServer.getRedirectURL(), secondRedirectResponseInfo.ge tUrlChain().get(1));
441 checkResponseInfo( 440 checkResponseInfo(
442 secondRedirectResponseInfo, NativeTestServer.getRedirectURL(), 3 02, "Found"); 441 secondRedirectResponseInfo, NativeTestServer.getRedirectURL(), 3 02, "Found");
443 checkResponseInfoHeader(secondRedirectResponseInfo, 442 checkResponseInfoHeader(secondRedirectResponseInfo,
444 "redirect-header", "header-value"); 443 "redirect-header", "header-value");
445 444
446 // Check final response (success.txt). 445 // Check final response (success.txt).
447 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrl()); 446 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrl());
448 assertEquals(3, mResponseInfo.getUrlChain().length); 447 assertEquals(3, mResponseInfo.getUrlChain().size());
449 assertEquals(NativeTestServer.getMultiRedirectURL(), mResponseInfo.getUr lChain()[0]); 448 assertEquals(NativeTestServer.getMultiRedirectURL(), mResponseInfo.getUr lChain().get(0));
450 assertEquals(NativeTestServer.getRedirectURL(), mResponseInfo.getUrlChai n()[1]); 449 assertEquals(NativeTestServer.getRedirectURL(), mResponseInfo.getUrlChai n().get(1));
451 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrlChain ()[2]); 450 assertEquals(NativeTestServer.getSuccessURL(), mResponseInfo.getUrlChain ().get(2));
452 assertTrue(listener.mHttpResponseDataLength != 0); 451 assertTrue(listener.mHttpResponseDataLength != 0);
453 assertEquals(2, listener.mRedirectCount); 452 assertEquals(2, listener.mRedirectCount);
454 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED); 453 assertEquals(listener.mResponseStep, ResponseStep.ON_SUCCEEDED);
455 } 454 }
456 455
457 @SmallTest 456 @SmallTest
458 @Feature({"Cronet"}) 457 @Feature({"Cronet"})
459 public void testMockNotFound() throws Exception { 458 public void testMockNotFound() throws Exception {
460 TestUrlRequestListener listener = 459 TestUrlRequestListener listener =
461 startAndWaitForComplete(NativeTestServer.getNotFoundURL()); 460 startAndWaitForComplete(NativeTestServer.getNotFoundURL());
(...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after
1500 int end) { 1499 int end) {
1501 // Use a duplicate to avoid modifying byteBuffer. 1500 // Use a duplicate to avoid modifying byteBuffer.
1502 ByteBuffer duplicate = byteBuffer.duplicate(); 1501 ByteBuffer duplicate = byteBuffer.duplicate();
1503 duplicate.position(start); 1502 duplicate.position(start);
1504 duplicate.limit(end); 1503 duplicate.limit(end);
1505 byte[] contents = new byte[duplicate.remaining()]; 1504 byte[] contents = new byte[duplicate.remaining()];
1506 duplicate.get(contents); 1505 duplicate.get(contents);
1507 return new String(contents); 1506 return new String(contents);
1508 } 1507 }
1509 } 1508 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698