Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 static org.chromium.base.CollectionUtil.newHashSet; | 7 import static org.chromium.base.CollectionUtil.newHashSet; |
| 8 | 8 |
| 9 import android.os.ConditionVariable; | 9 import android.os.ConditionVariable; |
| 10 import android.support.test.filters.SmallTest; | 10 import android.support.test.filters.SmallTest; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 import java.util.List; | 26 import java.util.List; |
| 27 import java.util.Map; | 27 import java.util.Map; |
| 28 import java.util.regex.Matcher; | 28 import java.util.regex.Matcher; |
| 29 import java.util.regex.Pattern; | 29 import java.util.regex.Pattern; |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * Test functionality of BidirectionalStream interface. | 32 * Test functionality of BidirectionalStream interface. |
| 33 */ | 33 */ |
| 34 public class BidirectionalStreamTest extends CronetTestBase { | 34 public class BidirectionalStreamTest extends CronetTestBase { |
| 35 private CronetTestFramework mTestFramework; | 35 private CronetTestFramework mTestFramework; |
| 36 | |
| 37 @Override | 36 @Override |
| 38 protected void setUp() throws Exception { | 37 protected void setUp() throws Exception { |
| 39 super.setUp(); | 38 super.setUp(); |
| 40 // Load library first to create MockCertVerifier. | 39 // Load library first to create MockCertVerifier. |
| 41 System.loadLibrary("cronet_tests"); | 40 System.loadLibrary("cronet_tests"); |
| 42 ExperimentalCronetEngine.Builder builder = | 41 ExperimentalCronetEngine.Builder builder = |
| 43 new ExperimentalCronetEngine.Builder(getContext()); | 42 new ExperimentalCronetEngine.Builder(getContext()); |
| 44 CronetTestUtil.setMockCertVerifierForTesting( | 43 CronetTestUtil.setMockCertVerifierForTesting( |
| 45 builder, QuicTestServer.createMockCertVerifier()); | 44 builder, QuicTestServer.createMockCertVerifier()); |
| 46 | 45 |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 393 assertEquals("123456", callback.mResponseAsString); | 392 assertEquals("123456", callback.mResponseAsString); |
| 394 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); | 393 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); |
| 395 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty" ).get(0)); | 394 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty" ).get(0)); |
| 396 assertEquals( | 395 assertEquals( |
| 397 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); | 396 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); |
| 398 } | 397 } |
| 399 | 398 |
| 400 @SmallTest | 399 @SmallTest |
| 401 @Feature({"Cronet"}) | 400 @Feature({"Cronet"}) |
| 402 @OnlyRunNativeCronet | 401 @OnlyRunNativeCronet |
| 402 // Regression test for crbug.com/692168. | |
| 403 public void testCancelWhileWriteDataPending() throws Exception { | |
| 404 String url = Http2TestServer.getEchoStreamUrl(); | |
| 405 // Use a direct executor to avoid race. | |
| 406 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback( | |
| 407 /*useDirectExecutor*/ true) { | |
| 408 @Override | |
| 409 public void onWriteCompleted(BidirectionalStream stream, UrlResponse Info info, | |
| 410 ByteBuffer buffer, boolean endOfStream) { | |
| 411 super.onWriteCompleted(stream, info, buffer, endOfStream); | |
| 412 stream.cancel(); | |
| 413 } | |
| 414 }; | |
| 415 byte[] dummyString = "dummy".getBytes(); | |
| 416 callback.addWriteData(dummyString, true); | |
| 417 callback.addWriteData(dummyString, true); | |
|
mef
2017/02/14 22:13:38
Should there be a third writeData?
First write af
| |
| 418 CronetBidirectionalStream stream = | |
| 419 (CronetBidirectionalStream) mTestFramework.mCronetEngine | |
| 420 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
| 421 .build(); | |
| 422 callback.setAutoAdvance(false); | |
| 423 stream.start(); | |
| 424 callback.waitForNextWriteStep(); // onStreamReady | |
| 425 // Flush first write. | |
| 426 callback.startNextWrite(stream); | |
| 427 // Flush second write so that second write is in the flush queue. | |
| 428 callback.startNextWrite(stream); | |
| 429 callback.setAutoAdvance(true); | |
| 430 callback.blockForDone(); | |
| 431 assertTrue(callback.mOnCanceledCalled); | |
| 432 } | |
| 433 | |
| 434 @SmallTest | |
| 435 @Feature({"Cronet"}) | |
| 436 @OnlyRunNativeCronet | |
| 403 public void testSimpleGetWithFlush() throws Exception { | 437 public void testSimpleGetWithFlush() throws Exception { |
| 404 // TODO(xunjieli): Use ParameterizedTest instead of the loop. | 438 // TODO(xunjieli): Use ParameterizedTest instead of the loop. |
| 405 for (int i = 0; i < 2; i++) { | 439 for (int i = 0; i < 2; i++) { |
| 406 String url = Http2TestServer.getEchoStreamUrl(); | 440 String url = Http2TestServer.getEchoStreamUrl(); |
| 407 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback() { | 441 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback() { |
| 408 @Override | 442 @Override |
| 409 public void onStreamReady(BidirectionalStream stream) { | 443 public void onStreamReady(BidirectionalStream stream) { |
| 410 try { | 444 try { |
| 411 // Attempt to write data for GET request. | 445 // Attempt to write data for GET request. |
| 412 stream.write(ByteBuffer.wrap("dummy".getBytes()), true); | 446 stream.write(ByteBuffer.wrap("dummy".getBytes()), true); |
| (...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1450 private static String bufferContentsToString(ByteBuffer byteBuffer, int star t, int end) { | 1484 private static String bufferContentsToString(ByteBuffer byteBuffer, int star t, int end) { |
| 1451 // Use a duplicate to avoid modifying byteBuffer. | 1485 // Use a duplicate to avoid modifying byteBuffer. |
| 1452 ByteBuffer duplicate = byteBuffer.duplicate(); | 1486 ByteBuffer duplicate = byteBuffer.duplicate(); |
| 1453 duplicate.position(start); | 1487 duplicate.position(start); |
| 1454 duplicate.limit(end); | 1488 duplicate.limit(end); |
| 1455 byte[] contents = new byte[duplicate.remaining()]; | 1489 byte[] contents = new byte[duplicate.remaining()]; |
| 1456 duplicate.get(contents); | 1490 duplicate.get(contents); |
| 1457 return new String(contents); | 1491 return new String(contents); |
| 1458 } | 1492 } |
| 1459 } | 1493 } |
| OLD | NEW |