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

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

Issue 2697833003: [Cronet] Add isDone() check in CronetBidirectionalStream#onWritevCompleted (Closed)
Patch Set: added test per suggestion Created 3 years, 10 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 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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698