| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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.test.suitebuilder.annotation.SmallTest; | 9 import android.test.suitebuilder.annotation.SmallTest; |
| 10 | 10 |
| 11 import org.json.JSONObject; |
| 12 |
| 11 import org.chromium.base.test.util.Feature; | 13 import org.chromium.base.test.util.Feature; |
| 12 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; | 14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; |
| 13 import org.chromium.net.MetricsTestUtil.TestExecutor; | |
| 14 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener; | 15 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener; |
| 15 import org.json.JSONObject; | |
| 16 | 16 |
| 17 import java.nio.ByteBuffer; | 17 import java.nio.ByteBuffer; |
| 18 import java.util.Date; |
| 18 import java.util.HashSet; | 19 import java.util.HashSet; |
| 19 | 20 |
| 20 /** | 21 /** |
| 21 * Tests functionality of BidirectionalStream's QUIC implementation. | 22 * Tests functionality of BidirectionalStream's QUIC implementation. |
| 22 */ | 23 */ |
| 23 public class BidirectionalStreamQuicTest extends CronetTestBase { | 24 public class BidirectionalStreamQuicTest extends CronetTestBase { |
| 24 private CronetTestFramework mTestFramework; | 25 private CronetTestFramework mTestFramework; |
| 25 private enum QuicBidirectionalStreams { | 26 private enum QuicBidirectionalStreams { |
| 26 ENABLED, | 27 ENABLED, |
| 27 DISABLED, | 28 DISABLED, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 public void testSimplePost() throws Exception { | 88 public void testSimplePost() throws Exception { |
| 88 setUp(QuicBidirectionalStreams.ENABLED); | 89 setUp(QuicBidirectionalStreams.ENABLED); |
| 89 String path = "/simple.txt"; | 90 String path = "/simple.txt"; |
| 90 String quicURL = QuicTestServer.getServerURL() + path; | 91 String quicURL = QuicTestServer.getServerURL() + path; |
| 91 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); | 92 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa
llback(); |
| 92 // Although we have no way to verify data sent at this point, this test | 93 // Although we have no way to verify data sent at this point, this test |
| 93 // can make sure that onWriteCompleted is invoked appropriately. | 94 // can make sure that onWriteCompleted is invoked appropriately. |
| 94 callback.addWriteData("Test String".getBytes()); | 95 callback.addWriteData("Test String".getBytes()); |
| 95 callback.addWriteData("1234567890".getBytes()); | 96 callback.addWriteData("1234567890".getBytes()); |
| 96 callback.addWriteData("woot!".getBytes()); | 97 callback.addWriteData("woot!".getBytes()); |
| 97 TestExecutor testExecutor = new TestExecutor(); | 98 TestRequestFinishedListener requestFinishedListener = new TestRequestFin
ishedListener(); |
| 98 TestRequestFinishedListener requestFinishedListener = | |
| 99 new TestRequestFinishedListener(testExecutor); | |
| 100 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 99 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
| 101 BidirectionalStream stream = new BidirectionalStream | 100 BidirectionalStream stream = new BidirectionalStream |
| 102 .Builder(quicURL, callback, callbac
k.getExecutor(), | 101 .Builder(quicURL, callback, callbac
k.getExecutor(), |
| 103 mTestFramework.mCronetEngin
e) | 102 mTestFramework.mCronetEngin
e) |
| 104 .addHeader("foo", "bar") | 103 .addHeader("foo", "bar") |
| 105 .addHeader("empty", "") | 104 .addHeader("empty", "") |
| 106 .addHeader("Content-Type", "zebra") | 105 .addHeader("Content-Type", "zebra") |
| 107 .addRequestAnnotation("request anno
tation") | 106 .addRequestAnnotation("request anno
tation") |
| 108 .addRequestAnnotation(this) | 107 .addRequestAnnotation(this) |
| 109 .build(); | 108 .build(); |
| 109 Date startTime = new Date(); |
| 110 stream.start(); | 110 stream.start(); |
| 111 callback.blockForDone(); | 111 callback.blockForDone(); |
| 112 testExecutor.runAllTasks(); | |
| 113 assertTrue(stream.isDone()); | 112 assertTrue(stream.isDone()); |
| 113 requestFinishedListener.blockUntilDone(); |
| 114 Date endTime = new Date(); |
| 114 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf
o(); | 115 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf
o(); |
| 115 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf
o); | 116 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf
o); |
| 117 RequestFinishedInfo.Metrics metrics = finishedInfo.getMetrics(); |
| 118 assertNotNull(metrics); |
| 119 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime); |
| 120 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, true)
; |
| 121 assertTrue(metrics.getSentBytesCount() > 0); |
| 122 assertTrue(metrics.getReceivedBytesCount() > 0); |
| 116 assertEquals(quicURL, finishedInfo.getUrl()); | 123 assertEquals(quicURL, finishedInfo.getUrl()); |
| 117 assertEquals(newHashSet("request annotation", this), | 124 assertEquals(newHashSet("request annotation", this), |
| 118 new HashSet<Object>(finishedInfo.getAnnotations())); | 125 new HashSet<Object>(finishedInfo.getAnnotations())); |
| 119 assertNotNull(finishedInfo.getResponseInfo()); | 126 assertNotNull(finishedInfo.getResponseInfo()); |
| 120 // TODO(xunjieli): Check other fields once metrics support is in crbug.c
om/648346. | |
| 121 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 127 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 122 assertEquals("This is a simple text file served by QUIC.\n", callback.mR
esponseAsString); | 128 assertEquals("This is a simple text file served by QUIC.\n", callback.mR
esponseAsString); |
| 123 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc
ol()); | 129 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc
ol()); |
| 124 } | 130 } |
| 125 | 131 |
| 126 @SmallTest | 132 @SmallTest |
| 127 @Feature({"Cronet"}) | 133 @Feature({"Cronet"}) |
| 128 @OnlyRunNativeCronet | 134 @OnlyRunNativeCronet |
| 129 public void testSimplePostWithFlush() throws Exception { | 135 public void testSimplePostWithFlush() throws Exception { |
| 130 setUp(QuicBidirectionalStreams.ENABLED); | 136 setUp(QuicBidirectionalStreams.ENABLED); |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 362 builder.enableQuic(true); | 368 builder.enableQuic(true); |
| 363 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif
ier()); | 369 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif
ier()); |
| 364 builder.setCertVerifierData(serialized_data); | 370 builder.setCertVerifierData(serialized_data); |
| 365 | 371 |
| 366 CronetTestFramework testFramework = | 372 CronetTestFramework testFramework = |
| 367 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil
der); | 373 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil
der); |
| 368 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa
ta(100); | 374 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa
ta(100); |
| 369 assertEquals(deserialized_data, serialized_data); | 375 assertEquals(deserialized_data, serialized_data); |
| 370 } | 376 } |
| 371 } | 377 } |
| OLD | NEW |