Chromium Code Reviews| Index: components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java |
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java |
| index f4ff70cdb0c693ecf60c9f532007ec18eb8a7ffc..b8f80bd03124d878e58f1d538a9912b5c743cb28 100644 |
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java |
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/urlconnection/CronetHttpURLConnectionTest.java |
| @@ -10,6 +10,7 @@ import android.test.suitebuilder.annotation.SmallTest; |
| import org.chromium.base.test.util.Feature; |
| import org.chromium.net.CronetTestActivity; |
| import org.chromium.net.CronetTestBase; |
| +import org.chromium.net.MockUrlRequestJobFactory; |
| import org.chromium.net.NativeTestServer; |
| import org.chromium.net.UrlRequestContextConfig; |
| import org.chromium.net.UrlRequestException; |
| @@ -478,6 +479,45 @@ public class CronetHttpURLConnectionTest extends CronetTestBase { |
| } |
| } |
| + /** |
| + * Tests batch reading on CronetInputStream when |
| + * {@link CronetHttpURLConnection#getMoreData} is called multiple times. |
| + */ |
| + @SmallTest |
| + @Feature({"Cronet"}) |
| + @OnlyRunCronetHttpURLConnection |
| + public void testBigDataRead() throws Exception { |
| + String data = "MyBigFunkyData"; |
| + int dataLength = data.length(); |
| + int repeatCount = 100000; |
| + MockUrlRequestJobFactory mMockUrlRequestJobFactory = new MockUrlRequestJobFactory( |
| + getInstrumentation().getTargetContext()); |
| + URL url = new URL(mMockUrlRequestJobFactory.getMockUrlForData(data, |
| + repeatCount)); |
| + HttpURLConnection connection = |
| + (HttpURLConnection) url.openConnection(); |
| + InputStream in = connection.getInputStream(); |
| + byte[] actualOutput = new byte[dataLength * repeatCount]; |
| + int bytesRead = 0; |
| + while (bytesRead < actualOutput.length) { |
| + // Read a random number of bytes at a time (from 0 to 999 bytes). |
| + int numBytesToRead = (int) (Math.random() * 1000); |
|
mmenke
2015/03/05 19:24:46
Rather than random, can we just read 0 bytes the f
|
| + bytesRead += in.read(actualOutput, bytesRead, numBytesToRead); |
|
mmenke
2015/03/05 19:24:46
assertLE(bytesRead, numBytesToRead);? (Know it's
xunjieli
2015/03/05 20:55:13
Hmm.. seems there's no LE or GE. So I used assertT
|
| + } |
| + |
| + // All data has been read. Try reading beyond what is available should give -1. |
| + assertEquals(-1, in.read(actualOutput, 0, 123)); |
|
mmenke
2015/03/05 19:24:46
assertEquals(0, in.read(actualOutput, 0, 0))? Spe
xunjieli
2015/03/05 20:55:13
Done.
xunjieli
2015/03/05 20:55:13
Done.
|
| + |
| + String responseData = new String(actualOutput); |
| + for (int i = 0; i < repeatCount; ++i) { |
| + assertEquals(data, responseData.substring(dataLength * i, |
| + dataLength * (i + 1))); |
| + } |
| + // TODO(xunjieli): Enable after crbug.com/463720 is fixed. |
| + // assertEquals(200, connection.getResponseCode()); |
| + // assertEquals("OK", connection.getResponseMessage()); |
| + } |
| + |
| @SmallTest |
| @Feature({"Cronet"}) |
| @CompareDefaultWithCronet |