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

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

Issue 1992953004: [Cronet] Make delaying sending request headers explicit in bidirectional stream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: correct a typo Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
index 550a6f6ef5386a6850f88b8321de74695d13dc7c..96f4fbb7293eed732f0a716a0a9d0a845974beff 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java
@@ -250,6 +250,9 @@ public class BidirectionalStreamTest extends CronetTestBase {
.addHeader("empty", "")
.addHeader("Content-Type", "zebra")
.build();
+ // Flush before stream is started should not crash.
+ stream.flush();
+
stream.start();
callback.blockForDone();
assertTrue(stream.isDone());
@@ -268,33 +271,123 @@ public class BidirectionalStreamTest extends CronetTestBase {
@SmallTest
@Feature({"Cronet"})
@OnlyRunNativeCronet
+ public void testSimpleGetWithFlush() throws Exception {
+ // TODO(xunjieli): Use ParameterizedTest instead of the loop.
+ for (int i = 0; i < 2; i++) {
+ String url = Http2TestServer.getEchoStreamUrl();
+ TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback() {
+ @Override
+ public void onStreamReady(BidirectionalStream stream) {
+ try {
+ // Attempt to write data for GET request.
+ stream.write(ByteBuffer.wrap("dummy".getBytes()), true);
+ } catch (IllegalArgumentException e) {
+ // Expected.
+ }
+ // If there are delayed headers, this flush should try to send them.
+ // If nothing to flush, it should not crash.
+ stream.flush();
+ super.onStreamReady(stream);
+ try {
+ // Attempt to write data for GET request.
+ stream.write(ByteBuffer.wrap("dummy".getBytes()), true);
+ } catch (IllegalArgumentException e) {
+ // Expected.
+ }
+ }
+ };
+ BidirectionalStream stream = new BidirectionalStream
+ .Builder(url, callback, callback.getExecutor(),
+ mTestFramework.mCronetEngine)
+ .setHttpMethod("GET")
+ .disableAutoFlush(true)
+ .delayRequestHeadersUntilFirstFlush(i == 0)
+ .addHeader("foo", "bar")
+ .addHeader("empty", "")
+ .build();
+ // Flush before stream is started should not crash.
+ stream.flush();
+
+ stream.start();
+ callback.blockForDone();
+ assertTrue(stream.isDone());
+
+ // Flush after stream is completed is no-op. It shouldn't call into the destroyed
+ // adapter.
+ stream.flush();
+
+ assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
+ assertEquals("", callback.mResponseAsString);
+ assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo").get(0));
+ assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty").get(0));
+ }
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ @OnlyRunNativeCronet
+ public void testSimplePostWithFlushAfterOneWrite() throws Exception {
+ // TODO(xunjieli): Use ParameterizedTest instead of the loop.
+ for (int i = 0; i < 2; i++) {
+ String url = Http2TestServer.getEchoStreamUrl();
+ TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback();
+ callback.addWriteData("Test String".getBytes(), true);
+ BidirectionalStream stream = new BidirectionalStream
+ .Builder(url, callback, callback.getExecutor(),
+ mTestFramework.mCronetEngine)
+ .disableAutoFlush(true)
+ .delayRequestHeadersUntilFirstFlush(i == 0)
+ .addHeader("foo", "bar")
+ .addHeader("empty", "")
+ .addHeader("Content-Type", "zebra")
+ .build();
+ stream.start();
+ callback.blockForDone();
+ assertTrue(stream.isDone());
+
+ assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
+ assertEquals("Test String", callback.mResponseAsString);
+ assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo").get(0));
+ assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty").get(0));
+ assertEquals("zebra",
+ callback.mResponseInfo.getAllHeaders().get("echo-content-type").get(0));
+ }
+ }
+
+ @SmallTest
+ @Feature({"Cronet"})
+ @OnlyRunNativeCronet
public void testSimplePostWithFlushTwice() throws Exception {
- String url = Http2TestServer.getEchoStreamUrl();
- TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback();
- callback.addWriteData("Test String".getBytes(), false);
- callback.addWriteData("1234567890".getBytes(), false);
- callback.addWriteData("woot!".getBytes(), true);
- callback.addWriteData("Test String".getBytes(), false);
- callback.addWriteData("1234567890".getBytes(), false);
- callback.addWriteData("woot!".getBytes(), true);
- BidirectionalStream stream = new BidirectionalStream
- .Builder(url, callback, callback.getExecutor(),
- mTestFramework.mCronetEngine)
- .disableAutoFlush(true)
- .addHeader("foo", "bar")
- .addHeader("empty", "")
- .addHeader("Content-Type", "zebra")
- .build();
- stream.start();
- callback.blockForDone();
- assertTrue(stream.isDone());
- assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
- assertEquals(
- "Test String1234567890woot!Test String1234567890woot!", callback.mResponseAsString);
- assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo").get(0));
- assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty").get(0));
- assertEquals(
- "zebra", callback.mResponseInfo.getAllHeaders().get("echo-content-type").get(0));
+ // TODO(xunjieli): Use ParameterizedTest instead of the loop.
+ for (int i = 0; i < 2; i++) {
+ String url = Http2TestServer.getEchoStreamUrl();
+ TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback();
+ callback.addWriteData("Test String".getBytes(), false);
+ callback.addWriteData("1234567890".getBytes(), false);
+ callback.addWriteData("woot!".getBytes(), true);
+ callback.addWriteData("Test String".getBytes(), false);
+ callback.addWriteData("1234567890".getBytes(), false);
+ callback.addWriteData("woot!".getBytes(), true);
+ BidirectionalStream stream = new BidirectionalStream
+ .Builder(url, callback, callback.getExecutor(),
+ mTestFramework.mCronetEngine)
+ .disableAutoFlush(true)
+ .delayRequestHeadersUntilFirstFlush(i == 0)
+ .addHeader("foo", "bar")
+ .addHeader("empty", "")
+ .addHeader("Content-Type", "zebra")
+ .build();
+ stream.start();
+ callback.blockForDone();
+ assertTrue(stream.isDone());
+ assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
+ assertEquals("Test String1234567890woot!Test String1234567890woot!",
+ callback.mResponseAsString);
+ assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo").get(0));
+ assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty").get(0));
+ assertEquals("zebra",
+ callback.mResponseInfo.getAllHeaders().get("echo-content-type").get(0));
+ }
}
@SmallTest

Powered by Google App Engine
This is Rietveld 408576698