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 |