summaryrefslogtreecommitdiffstats
path: root/components/cronet
diff options
context:
space:
mode:
authorxunjieli <xunjieli@chromium.org>2016-03-21 17:00:40 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-22 00:01:45 +0000
commit3954c975719d59922ccc6e5935e74748bf63e8e7 (patch)
tree3cd7e04e87c98670786c5eadd7fca979560d5ca9 /components/cronet
parent899a69bc6c0a71f50e3893bd76fc29545bd3e0c6 (diff)
downloadchromium_src-3954c975719d59922ccc6e5935e74748bf63e8e7.zip
chromium_src-3954c975719d59922ccc6e5935e74748bf63e8e7.tar.gz
chromium_src-3954c975719d59922ccc6e5935e74748bf63e8e7.tar.bz2
Fix BidirectionalStreamTest#testFailures flake
Cancel during ResponseStep.ON_REQEST_HEADERS_SENT does not guarantee that mResponseInfo will be null, because an onResponseHeadersReceived callback might already been queued at the executor. BUG=594432 Review URL: https://codereview.chromium.org/1815163003 Cr-Commit-Position: refs/heads/master@{#382444}
Diffstat (limited to 'components/cronet')
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java42
1 files changed, 24 insertions, 18 deletions
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 fb3b664..74c88ad 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
@@ -811,8 +811,8 @@ public class BidirectionalStreamTest extends CronetTestBase {
assertEquals("GET", callback.mResponseAsString);
}
- private void throwOrCancel(FailureType failureType, ResponseStep failureStep,
- boolean expectResponseInfo, boolean expectError) {
+ private void throwOrCancel(
+ FailureType failureType, ResponseStep failureStep, boolean expectError) {
TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCallback();
callback.setFailure(failureType, failureStep);
BidirectionalStream.Builder builder =
@@ -823,7 +823,13 @@ public class BidirectionalStreamTest extends CronetTestBase {
callback.blockForDone();
// assertEquals(callback.mResponseStep, failureStep);
assertTrue(stream.isDone());
- assertEquals(expectResponseInfo, callback.mResponseInfo != null);
+ // Cancellation when request headers are sent does not guarantee that
+ // mResponseInfo is null because there might be a
+ // onResponseHeadersReceived already queued in the executor.
+ // See crbug.com/594432.
+ if (failureStep != ResponseStep.ON_REQUEST_HEADERS_SENT) {
+ assertNotNull(callback.mResponseInfo);
+ }
assertEquals(expectError, callback.mError != null);
assertEquals(expectError, callback.mOnErrorCalled);
assertEquals(failureType == FailureType.CANCEL_SYNC
@@ -836,23 +842,23 @@ public class BidirectionalStreamTest extends CronetTestBase {
@Feature({"Cronet"})
@OnlyRunNativeCronet
public void testFailures() throws Exception {
- throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_REQUEST_HEADERS_SENT, false, false);
- throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_REQUEST_HEADERS_SENT, false, false);
+ throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_REQUEST_HEADERS_SENT, false);
+ throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_REQUEST_HEADERS_SENT, false);
throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_REQUEST_HEADERS_SENT,
- false, false);
- throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_REQUEST_HEADERS_SENT, false, true);
-
- throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_RESPONSE_STARTED, true, false);
- throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_RESPONSE_STARTED, true, false);
- throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_RESPONSE_STARTED,
- true, false);
- throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_RESPONSE_STARTED, true, true);
-
- throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_READ_COMPLETED, true, false);
- throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_READ_COMPLETED, true, false);
- throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_READ_COMPLETED, true,
false);
- throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, true, true);
+ throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_REQUEST_HEADERS_SENT, true);
+
+ throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_RESPONSE_STARTED, false);
+ throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_RESPONSE_STARTED, false);
+ throwOrCancel(
+ FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_RESPONSE_STARTED, false);
+ throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_RESPONSE_STARTED, true);
+
+ throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_READ_COMPLETED, false);
+ throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_READ_COMPLETED, false);
+ throwOrCancel(
+ FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_READ_COMPLETED, false);
+ throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, true);
}
@SmallTest