diff options
author | xunjieli <xunjieli@chromium.org> | 2016-03-21 17:00:40 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-22 00:01:45 +0000 |
commit | 3954c975719d59922ccc6e5935e74748bf63e8e7 (patch) | |
tree | 3cd7e04e87c98670786c5eadd7fca979560d5ca9 /components/cronet | |
parent | 899a69bc6c0a71f50e3893bd76fc29545bd3e0c6 (diff) | |
download | chromium_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.java | 42 |
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 |