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 android.os.ConditionVariable; | 7 import android.os.ConditionVariable; |
8 import android.test.suitebuilder.annotation.SmallTest; | 8 import android.test.suitebuilder.annotation.SmallTest; |
9 | 9 |
10 import org.chromium.base.test.util.DisabledTest; | 10 import org.chromium.base.test.util.DisabledTest; |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 assertEquals("Test String1234567890woot!", callback.mResponseAsString); | 229 assertEquals("Test String1234567890woot!", callback.mResponseAsString); |
230 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo
").get(0)); | 230 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo
").get(0)); |
231 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty"
).get(0)); | 231 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty"
).get(0)); |
232 assertEquals( | 232 assertEquals( |
233 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten
t-type").get(0)); | 233 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten
t-type").get(0)); |
234 } | 234 } |
235 | 235 |
236 @SmallTest | 236 @SmallTest |
237 @Feature({"Cronet"}) | 237 @Feature({"Cronet"}) |
238 @OnlyRunNativeCronet | 238 @OnlyRunNativeCronet |
| 239 public void testSimplePostWithFlush() throws Exception { |
| 240 String url = Http2TestServer.getEchoStreamUrl(); |
| 241 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); |
| 242 callback.setHandleFlush(); |
| 243 callback.addWriteData("Test String".getBytes(), false); |
| 244 callback.addWriteData("1234567890".getBytes(), false); |
| 245 callback.addWriteData("woot!".getBytes(), true); |
| 246 BidirectionalStream stream = new BidirectionalStream |
| 247 .Builder(url, callback, callback.ge
tExecutor(), |
| 248 mTestFramework.mCronetEngin
e) |
| 249 .disableAutoFlush(true) |
| 250 .addHeader("foo", "bar") |
| 251 .addHeader("empty", "") |
| 252 .addHeader("Content-Type", "zebra") |
| 253 .build(); |
| 254 stream.start(); |
| 255 callback.blockForDone(); |
| 256 assertTrue(stream.isDone()); |
| 257 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 258 assertEquals("Test String1234567890woot!", callback.mResponseAsString); |
| 259 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo
").get(0)); |
| 260 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty"
).get(0)); |
| 261 assertEquals( |
| 262 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten
t-type").get(0)); |
| 263 } |
| 264 |
| 265 @SmallTest |
| 266 @Feature({"Cronet"}) |
| 267 @OnlyRunNativeCronet |
| 268 public void testSimplePostWithFlushTwice() throws Exception { |
| 269 String url = Http2TestServer.getEchoStreamUrl(); |
| 270 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); |
| 271 callback.setHandleFlush(); |
| 272 callback.addWriteData("Test String".getBytes(), false); |
| 273 callback.addWriteData("1234567890".getBytes(), false); |
| 274 callback.addWriteData("woot!".getBytes(), true); |
| 275 callback.addWriteData("Test String".getBytes(), false); |
| 276 callback.addWriteData("1234567890".getBytes(), false); |
| 277 callback.addWriteData("woot!".getBytes(), true); |
| 278 BidirectionalStream stream = new BidirectionalStream |
| 279 .Builder(url, callback, callback.ge
tExecutor(), |
| 280 mTestFramework.mCronetEngin
e) |
| 281 .disableAutoFlush(true) |
| 282 .addHeader("foo", "bar") |
| 283 .addHeader("empty", "") |
| 284 .addHeader("Content-Type", "zebra") |
| 285 .build(); |
| 286 stream.start(); |
| 287 callback.blockForDone(); |
| 288 assertTrue(stream.isDone()); |
| 289 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 290 assertEquals( |
| 291 "Test String1234567890woot!Test String1234567890woot!", callback
.mResponseAsString); |
| 292 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo
").get(0)); |
| 293 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty"
).get(0)); |
| 294 assertEquals( |
| 295 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten
t-type").get(0)); |
| 296 } |
| 297 |
| 298 @SmallTest |
| 299 @Feature({"Cronet"}) |
| 300 @OnlyRunNativeCronet |
239 public void testSimplePut() throws Exception { | 301 public void testSimplePut() throws Exception { |
240 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); | 302 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); |
241 callback.addWriteData("Put This Data!".getBytes()); | 303 callback.addWriteData("Put This Data!".getBytes()); |
242 String methodName = "PUT"; | 304 String methodName = "PUT"; |
243 BidirectionalStream.Builder builder = | 305 BidirectionalStream.Builder builder = |
244 new BidirectionalStream.Builder(Http2TestServer.getServerUrl(),
callback, | 306 new BidirectionalStream.Builder(Http2TestServer.getServerUrl(),
callback, |
245 callback.getExecutor(), mTestFramework.mCronetEngine); | 307 callback.getExecutor(), mTestFramework.mCronetEngine); |
246 builder.setHttpMethod(methodName); | 308 builder.setHttpMethod(methodName); |
247 builder.build().start(); | 309 builder.build().start(); |
248 callback.blockForDone(); | 310 callback.blockForDone(); |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 assertEquals("", callback.mResponseAsString); | 538 assertEquals("", callback.mResponseAsString); |
477 } | 539 } |
478 | 540 |
479 @SmallTest | 541 @SmallTest |
480 @Feature({"Cronet"}) | 542 @Feature({"Cronet"}) |
481 @OnlyRunNativeCronet | 543 @OnlyRunNativeCronet |
482 public void testDoubleWrite() throws Exception { | 544 public void testDoubleWrite() throws Exception { |
483 String url = Http2TestServer.getEchoStreamUrl(); | 545 String url = Http2TestServer.getEchoStreamUrl(); |
484 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback() { | 546 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback() { |
485 @Override | 547 @Override |
486 public void onRequestHeadersSent(BidirectionalStream stream) { | 548 public void onStreamReady(BidirectionalStream stream) { |
487 startNextWrite(stream); | 549 startNextWrite(stream); |
488 try { | 550 try { |
489 // Second write from callback invoked on single-threaded exe
cutor throws | 551 // Second write from callback invoked on single-threaded exe
cutor throws |
490 // an exception because first write is still pending until i
ts completion | 552 // an exception because first write is still pending until i
ts completion |
491 // is handled on executor. | 553 // is handled on executor. |
492 ByteBuffer writeBuffer = ByteBuffer.allocateDirect(5); | 554 ByteBuffer writeBuffer = ByteBuffer.allocateDirect(5); |
493 writeBuffer.put("abc".getBytes()); | 555 writeBuffer.put("abc".getBytes()); |
494 writeBuffer.flip(); | 556 writeBuffer.flip(); |
495 stream.write(writeBuffer, false); | 557 stream.write(writeBuffer, false); |
496 fail("Exception is not thrown."); | 558 fail("Exception is not thrown."); |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); | 878 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); |
817 callback.setFailure(failureType, failureStep); | 879 callback.setFailure(failureType, failureStep); |
818 BidirectionalStream.Builder builder = | 880 BidirectionalStream.Builder builder = |
819 new BidirectionalStream.Builder(Http2TestServer.getEchoMethodUrl
(), callback, | 881 new BidirectionalStream.Builder(Http2TestServer.getEchoMethodUrl
(), callback, |
820 callback.getExecutor(), mTestFramework.mCronetEngine); | 882 callback.getExecutor(), mTestFramework.mCronetEngine); |
821 BidirectionalStream stream = builder.setHttpMethod("GET").build(); | 883 BidirectionalStream stream = builder.setHttpMethod("GET").build(); |
822 stream.start(); | 884 stream.start(); |
823 callback.blockForDone(); | 885 callback.blockForDone(); |
824 // assertEquals(callback.mResponseStep, failureStep); | 886 // assertEquals(callback.mResponseStep, failureStep); |
825 assertTrue(stream.isDone()); | 887 assertTrue(stream.isDone()); |
826 // Cancellation when request headers are sent does not guarantee that | 888 // Cancellation when stream is ready does not guarantee that |
827 // mResponseInfo is null because there might be a | 889 // mResponseInfo is null because there might be a |
828 // onResponseHeadersReceived already queued in the executor. | 890 // onResponseHeadersReceived already queued in the executor. |
829 // See crbug.com/594432. | 891 // See crbug.com/594432. |
830 if (failureStep != ResponseStep.ON_REQUEST_HEADERS_SENT) { | 892 if (failureStep != ResponseStep.ON_STREAM_READY) { |
831 assertNotNull(callback.mResponseInfo); | 893 assertNotNull(callback.mResponseInfo); |
832 } | 894 } |
833 assertEquals(expectError, callback.mError != null); | 895 assertEquals(expectError, callback.mError != null); |
834 assertEquals(expectError, callback.mOnErrorCalled); | 896 assertEquals(expectError, callback.mOnErrorCalled); |
835 assertEquals(failureType == FailureType.CANCEL_SYNC | 897 assertEquals(failureType == FailureType.CANCEL_SYNC |
836 || failureType == FailureType.CANCEL_ASYNC | 898 || failureType == FailureType.CANCEL_ASYNC |
837 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE
, | 899 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE
, |
838 callback.mOnCanceledCalled); | 900 callback.mOnCanceledCalled); |
839 } | 901 } |
840 | 902 |
841 @SmallTest | 903 @SmallTest |
842 @Feature({"Cronet"}) | 904 @Feature({"Cronet"}) |
843 @OnlyRunNativeCronet | 905 @OnlyRunNativeCronet |
844 public void testFailures() throws Exception { | 906 public void testFailures() throws Exception { |
845 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_REQUEST_HEADERS_S
ENT, false); | 907 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_STREAM_READY, fal
se); |
846 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_REQUEST_HEADERS_
SENT, false); | 908 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_STREAM_READY, fa
lse); |
847 throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_RE
QUEST_HEADERS_SENT, | 909 throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_ST
REAM_READY, false); |
848 false); | 910 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_STREAM_READY, true
); |
849 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_REQUEST_HEADERS_SE
NT, true); | |
850 | 911 |
851 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_RESPONSE_STARTED,
false); | 912 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_RESPONSE_STARTED,
false); |
852 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_RESPONSE_STARTED
, false); | 913 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_RESPONSE_STARTED
, false); |
853 throwOrCancel( | 914 throwOrCancel( |
854 FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_RESPONSE
_STARTED, false); | 915 FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_RESPONSE
_STARTED, false); |
855 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_RESPONSE_STARTED,
true); | 916 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_RESPONSE_STARTED,
true); |
856 | 917 |
857 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_READ_COMPLETED, f
alse); | 918 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_READ_COMPLETED, f
alse); |
858 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_READ_COMPLETED,
false); | 919 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_READ_COMPLETED,
false); |
859 throwOrCancel( | 920 throwOrCancel( |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 private static String bufferContentsToString(ByteBuffer byteBuffer, int star
t, int end) { | 1111 private static String bufferContentsToString(ByteBuffer byteBuffer, int star
t, int end) { |
1051 // Use a duplicate to avoid modifying byteBuffer. | 1112 // Use a duplicate to avoid modifying byteBuffer. |
1052 ByteBuffer duplicate = byteBuffer.duplicate(); | 1113 ByteBuffer duplicate = byteBuffer.duplicate(); |
1053 duplicate.position(start); | 1114 duplicate.position(start); |
1054 duplicate.limit(end); | 1115 duplicate.limit(end); |
1055 byte[] contents = new byte[duplicate.remaining()]; | 1116 byte[] contents = new byte[duplicate.remaining()]; |
1056 duplicate.get(contents); | 1117 duplicate.get(contents); |
1057 return new String(contents); | 1118 return new String(contents); |
1058 } | 1119 } |
1059 } | 1120 } |
OLD | NEW |