Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamQuicTest.java

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Rebase & Conflict Resolution Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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; 11 import org.json.JSONObject;
12 12
13 import org.chromium.base.test.util.Feature; 13 import org.chromium.base.test.util.Feature;
14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet;
15 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener; 14 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
16 15
17 import java.nio.ByteBuffer; 16 import java.nio.ByteBuffer;
18 import java.util.Date; 17 import java.util.Date;
19 import java.util.HashSet; 18 import java.util.HashSet;
20 19
21 /** 20 /**
22 * Tests functionality of BidirectionalStream's QUIC implementation. 21 * Tests functionality of BidirectionalStream's QUIC implementation.
23 */ 22 */
24 public class BidirectionalStreamQuicTest extends CronetTestBase { 23 public class BidirectionalStreamQuicTest extends CronetTestBase {
25 private CronetTestFramework mTestFramework; 24 private CronetTestFramework mTestFramework;
26 private enum QuicBidirectionalStreams { 25 private enum QuicBidirectionalStreams {
27 ENABLED, 26 ENABLED,
28 DISABLED, 27 DISABLED,
29 } 28 }
30 29
31 private void setUp(QuicBidirectionalStreams enabled) throws Exception { 30 private void setUp(QuicBidirectionalStreams enabled) throws Exception {
32 // Load library first to create MockCertVerifier. 31 // Load library first to create MockCertVerifier.
33 System.loadLibrary("cronet_tests"); 32 System.loadLibrary("cronet_tests");
34 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 33 ExperimentalCronetEngine.Builder builder =
34 new ExperimentalCronetEngine.Builder(getContext());
35 35
36 QuicTestServer.startQuicTestServer(getContext()); 36 QuicTestServer.startQuicTestServer(getContext());
37 37
38 builder.enableQuic(true); 38 builder.enableQuic(true);
39 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa mple.com"); 39 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa mple.com");
40 if (enabled == QuicBidirectionalStreams.DISABLED) { 40 if (enabled == QuicBidirectionalStreams.DISABLED) {
41 quicParams.put("quic_disable_bidirectional_streams", true); 41 quicParams.put("quic_disable_bidirectional_streams", true);
42 } 42 }
43 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules (); 43 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules ();
44 JSONObject experimentalOptions = new JSONObject() 44 JSONObject experimentalOptions = new JSONObject()
45 .put("QUIC", quicParams) 45 .put("QUIC", quicParams)
46 .put("HostResolverRules", hostR esolverParams); 46 .put("HostResolverRules", hostR esolverParams);
47 builder.setExperimentalOptions(experimentalOptions.toString()); 47 builder.setExperimentalOptions(experimentalOptions.toString());
48 48
49 builder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getSe rverPort(), 49 builder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getSe rverPort(),
50 QuicTestServer.getServerPort()); 50 QuicTestServer.getServerPort());
51 51
52 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier()); 52 CronetTestUtil.setMockCertVerifierForTesting(
53 builder, QuicTestServer.createMockCertVerifier());
53 54
54 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder); 55 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder);
55 } 56 }
56 57
57 @Override 58 @Override
58 protected void tearDown() throws Exception { 59 protected void tearDown() throws Exception {
59 QuicTestServer.shutdownQuicTestServer(); 60 QuicTestServer.shutdownQuicTestServer();
60 super.tearDown(); 61 super.tearDown();
61 } 62 }
62 63
63 @SmallTest 64 @SmallTest
64 @Feature({"Cronet"}) 65 @Feature({"Cronet"})
65 @OnlyRunNativeCronet 66 @OnlyRunNativeCronet
66 // Test that QUIC is negotiated. 67 // Test that QUIC is negotiated.
67 public void testSimpleGet() throws Exception { 68 public void testSimpleGet() throws Exception {
68 setUp(QuicBidirectionalStreams.ENABLED); 69 setUp(QuicBidirectionalStreams.ENABLED);
69 String path = "/simple.txt"; 70 String path = "/simple.txt";
70 String quicURL = QuicTestServer.getServerURL() + path; 71 String quicURL = QuicTestServer.getServerURL() + path;
71 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 72 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
72 BidirectionalStream stream = new BidirectionalStream 73 BidirectionalStream stream =
73 .Builder(quicURL, callback, callbac k.getExecutor(), 74 mTestFramework.mCronetEngine
74 mTestFramework.mCronetEngin e) 75 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
75 .setHttpMethod("GET") 76 .setHttpMethod("GET")
76 .build(); 77 .build();
77 stream.start(); 78 stream.start();
78 callback.blockForDone(); 79 callback.blockForDone();
79 assertTrue(stream.isDone()); 80 assertTrue(stream.isDone());
80 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 81 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
81 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString); 82 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString);
82 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 83 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
83 } 84 }
84 85
85 @SmallTest 86 @SmallTest
86 @Feature({"Cronet"}) 87 @Feature({"Cronet"})
87 @OnlyRunNativeCronet 88 @OnlyRunNativeCronet
88 public void testSimplePost() throws Exception { 89 public void testSimplePost() throws Exception {
89 setUp(QuicBidirectionalStreams.ENABLED); 90 setUp(QuicBidirectionalStreams.ENABLED);
90 String path = "/simple.txt"; 91 String path = "/simple.txt";
91 String quicURL = QuicTestServer.getServerURL() + path; 92 String quicURL = QuicTestServer.getServerURL() + path;
92 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 93 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
93 // Although we have no way to verify data sent at this point, this test 94 // Although we have no way to verify data sent at this point, this test
94 // can make sure that onWriteCompleted is invoked appropriately. 95 // can make sure that onWriteCompleted is invoked appropriately.
95 callback.addWriteData("Test String".getBytes()); 96 callback.addWriteData("Test String".getBytes());
96 callback.addWriteData("1234567890".getBytes()); 97 callback.addWriteData("1234567890".getBytes());
97 callback.addWriteData("woot!".getBytes()); 98 callback.addWriteData("woot!".getBytes());
98 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); 99 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener();
99 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 100 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
100 BidirectionalStream stream = new BidirectionalStream 101 BidirectionalStream stream =
101 .Builder(quicURL, callback, callbac k.getExecutor(), 102 mTestFramework.mCronetEngine
102 mTestFramework.mCronetEngin e) 103 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
103 .addHeader("foo", "bar") 104 .addHeader("foo", "bar")
104 .addHeader("empty", "") 105 .addHeader("empty", "")
105 .addHeader("Content-Type", "zebra") 106 .addHeader("Content-Type", "zebra")
106 .addRequestAnnotation("request anno tation") 107 .addRequestAnnotation("request annotation")
107 .addRequestAnnotation(this) 108 .addRequestAnnotation(this)
108 .build(); 109 .build();
109 Date startTime = new Date(); 110 Date startTime = new Date();
110 stream.start(); 111 stream.start();
111 callback.blockForDone(); 112 callback.blockForDone();
112 assertTrue(stream.isDone()); 113 assertTrue(stream.isDone());
113 requestFinishedListener.blockUntilDone(); 114 requestFinishedListener.blockUntilDone();
114 Date endTime = new Date(); 115 Date endTime = new Date();
115 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o(); 116 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o();
116 MetricsTestUtil.checkRequestFinishedInfo(finishedInfo, quicURL, startTim e, endTime); 117 MetricsTestUtil.checkRequestFinishedInfo(finishedInfo, quicURL, startTim e, endTime);
117 assertEquals(RequestFinishedInfo.SUCCEEDED, finishedInfo.getFinishedReas on()); 118 assertEquals(RequestFinishedInfo.SUCCEEDED, finishedInfo.getFinishedReas on());
118 MetricsTestUtil.checkHasConnectTiming(finishedInfo.getMetrics(), startTi me, endTime, true); 119 MetricsTestUtil.checkHasConnectTiming(finishedInfo.getMetrics(), startTi me, endTime, true);
(...skipping 12 matching lines...) Expand all
131 // TODO(xunjieli): Use ParameterizedTest instead of the loop. 132 // TODO(xunjieli): Use ParameterizedTest instead of the loop.
132 for (int i = 0; i < 2; i++) { 133 for (int i = 0; i < 2; i++) {
133 String path = "/simple.txt"; 134 String path = "/simple.txt";
134 String quicURL = QuicTestServer.getServerURL() + path; 135 String quicURL = QuicTestServer.getServerURL() + path;
135 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); 136 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback();
136 // Although we have no way to verify data sent at this point, this t est 137 // Although we have no way to verify data sent at this point, this t est
137 // can make sure that onWriteCompleted is invoked appropriately. 138 // can make sure that onWriteCompleted is invoked appropriately.
138 callback.addWriteData("Test String".getBytes(), false); 139 callback.addWriteData("Test String".getBytes(), false);
139 callback.addWriteData("1234567890".getBytes(), false); 140 callback.addWriteData("1234567890".getBytes(), false);
140 callback.addWriteData("woot!".getBytes(), true); 141 callback.addWriteData("woot!".getBytes(), true);
141 BidirectionalStream stream = new BidirectionalStream 142 BidirectionalStream stream = mTestFramework.mCronetEngine
142 .Builder(quicURL, callback, cal lback.getExecutor(), 143 .newBidirectionalStreamBuilder(
143 mTestFramework.mCronetE ngine) 144 quicURL, callback, call back.getExecutor())
144 .delayRequestHeadersUntilFirstF lush(i == 0) 145 .delayRequestHeadersUntilFirstF lush(i == 0)
145 .addHeader("foo", "bar") 146 .addHeader("foo", "bar")
146 .addHeader("empty", "") 147 .addHeader("empty", "")
147 .addHeader("Content-Type", "zeb ra") 148 .addHeader("Content-Type", "zeb ra")
148 .build(); 149 .build();
149 stream.start(); 150 stream.start();
150 callback.blockForDone(); 151 callback.blockForDone();
151 assertTrue(stream.isDone()); 152 assertTrue(stream.isDone());
152 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 153 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
153 assertEquals( 154 assertEquals(
(...skipping 13 matching lines...) Expand all
167 String quicURL = QuicTestServer.getServerURL() + path; 168 String quicURL = QuicTestServer.getServerURL() + path;
168 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); 169 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback();
169 // Although we have no way to verify data sent at this point, this t est 170 // Although we have no way to verify data sent at this point, this t est
170 // can make sure that onWriteCompleted is invoked appropriately. 171 // can make sure that onWriteCompleted is invoked appropriately.
171 callback.addWriteData("Test String".getBytes(), false); 172 callback.addWriteData("Test String".getBytes(), false);
172 callback.addWriteData("1234567890".getBytes(), false); 173 callback.addWriteData("1234567890".getBytes(), false);
173 callback.addWriteData("woot!".getBytes(), true); 174 callback.addWriteData("woot!".getBytes(), true);
174 callback.addWriteData("Test String".getBytes(), false); 175 callback.addWriteData("Test String".getBytes(), false);
175 callback.addWriteData("1234567890".getBytes(), false); 176 callback.addWriteData("1234567890".getBytes(), false);
176 callback.addWriteData("woot!".getBytes(), true); 177 callback.addWriteData("woot!".getBytes(), true);
177 BidirectionalStream stream = new BidirectionalStream 178 BidirectionalStream stream = mTestFramework.mCronetEngine
178 .Builder(quicURL, callback, cal lback.getExecutor(), 179 .newBidirectionalStreamBuilder(
179 mTestFramework.mCronetE ngine) 180 quicURL, callback, call back.getExecutor())
180 .delayRequestHeadersUntilFirstF lush(i == 0) 181 .delayRequestHeadersUntilFirstF lush(i == 0)
181 .addHeader("foo", "bar") 182 .addHeader("foo", "bar")
182 .addHeader("empty", "") 183 .addHeader("empty", "")
183 .addHeader("Content-Type", "zeb ra") 184 .addHeader("Content-Type", "zeb ra")
184 .build(); 185 .build();
185 stream.start(); 186 stream.start();
186 callback.blockForDone(); 187 callback.blockForDone();
187 assertTrue(stream.isDone()); 188 assertTrue(stream.isDone());
188 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 189 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
189 assertEquals( 190 assertEquals(
(...skipping 13 matching lines...) Expand all
203 String url = QuicTestServer.getServerURL() + path; 204 String url = QuicTestServer.getServerURL() + path;
204 205
205 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback() { 206 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback() {
206 @Override 207 @Override
207 public void onStreamReady(BidirectionalStream stream) { 208 public void onStreamReady(BidirectionalStream stream) {
208 // This flush should send the delayed headers. 209 // This flush should send the delayed headers.
209 stream.flush(); 210 stream.flush();
210 super.onStreamReady(stream); 211 super.onStreamReady(stream);
211 } 212 }
212 }; 213 };
213 BidirectionalStream stream = new BidirectionalStream 214 BidirectionalStream stream =
214 .Builder(url, callback, callbac k.getExecutor(), 215 mTestFramework.mCronetEngine
215 mTestFramework.mCronetE ngine) 216 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor())
216 .setHttpMethod("GET") 217 .setHttpMethod("GET")
217 .delayRequestHeadersUntilFirstF lush(i == 0) 218 .delayRequestHeadersUntilFirstFlush(i == 0)
218 .addHeader("foo", "bar") 219 .addHeader("foo", "bar")
219 .addHeader("empty", "") 220 .addHeader("empty", "")
220 .build(); 221 .build();
221 // Flush before stream is started should not crash. 222 // Flush before stream is started should not crash.
222 stream.flush(); 223 stream.flush();
223 224
224 stream.start(); 225 stream.start();
225 callback.blockForDone(); 226 callback.blockForDone();
226 assertTrue(stream.isDone()); 227 assertTrue(stream.isDone());
227 228
228 // Flush after stream is completed is no-op. It shouldn't call into the destroyed 229 // Flush after stream is completed is no-op. It shouldn't call into the destroyed
229 // adapter. 230 // adapter.
230 stream.flush(); 231 stream.flush();
(...skipping 10 matching lines...) Expand all
241 @OnlyRunNativeCronet 242 @OnlyRunNativeCronet
242 public void testSimplePostWithFlushAfterOneWrite() throws Exception { 243 public void testSimplePostWithFlushAfterOneWrite() throws Exception {
243 setUp(QuicBidirectionalStreams.ENABLED); 244 setUp(QuicBidirectionalStreams.ENABLED);
244 // TODO(xunjieli): Use ParameterizedTest instead of the loop. 245 // TODO(xunjieli): Use ParameterizedTest instead of the loop.
245 for (int i = 0; i < 2; i++) { 246 for (int i = 0; i < 2; i++) {
246 String path = "/simple.txt"; 247 String path = "/simple.txt";
247 String url = QuicTestServer.getServerURL() + path; 248 String url = QuicTestServer.getServerURL() + path;
248 249
249 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); 250 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback();
250 callback.addWriteData("Test String".getBytes(), true); 251 callback.addWriteData("Test String".getBytes(), true);
251 BidirectionalStream stream = new BidirectionalStream 252 BidirectionalStream stream =
252 .Builder(url, callback, callbac k.getExecutor(), 253 mTestFramework.mCronetEngine
253 mTestFramework.mCronetE ngine) 254 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor())
254 .delayRequestHeadersUntilFirstF lush(i == 0) 255 .delayRequestHeadersUntilFirstFlush(i == 0)
255 .addHeader("foo", "bar") 256 .addHeader("foo", "bar")
256 .addHeader("empty", "") 257 .addHeader("empty", "")
257 .addHeader("Content-Type", "zeb ra") 258 .addHeader("Content-Type", "zebra")
258 .build(); 259 .build();
259 stream.start(); 260 stream.start();
260 callback.blockForDone(); 261 callback.blockForDone();
261 assertTrue(stream.isDone()); 262 assertTrue(stream.isDone());
262 263
263 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 264 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
264 assertEquals( 265 assertEquals(
265 "This is a simple text file served by QUIC.\n", callback.mRe sponseAsString); 266 "This is a simple text file served by QUIC.\n", callback.mRe sponseAsString);
266 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedPr otocol()); 267 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedPr otocol());
267 } 268 }
268 } 269 }
269 270
270 @SmallTest 271 @SmallTest
271 @Feature({"Cronet"}) 272 @Feature({"Cronet"})
272 @OnlyRunNativeCronet 273 @OnlyRunNativeCronet
273 public void testQuicBidirectionalStreamDisabled() throws Exception { 274 public void testQuicBidirectionalStreamDisabled() throws Exception {
274 setUp(QuicBidirectionalStreams.DISABLED); 275 setUp(QuicBidirectionalStreams.DISABLED);
275 String path = "/simple.txt"; 276 String path = "/simple.txt";
276 String quicURL = QuicTestServer.getServerURL() + path; 277 String quicURL = QuicTestServer.getServerURL() + path;
277 278
278 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 279 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
279 BidirectionalStream stream = new BidirectionalStream 280 BidirectionalStream stream =
280 .Builder(quicURL, callback, callbac k.getExecutor(), 281 mTestFramework.mCronetEngine
281 mTestFramework.mCronetEngin e) 282 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
282 .setHttpMethod("GET") 283 .setHttpMethod("GET")
283 .build(); 284 .build();
284 stream.start(); 285 stream.start();
285 callback.blockForDone(); 286 callback.blockForDone();
286 assertTrue(stream.isDone()); 287 assertTrue(stream.isDone());
287 assertTrue(callback.mOnErrorCalled); 288 assertTrue(callback.mOnErrorCalled);
288 assertNull(callback.mResponseInfo); 289 assertNull(callback.mResponseInfo);
289 } 290 }
290 291
291 @SmallTest 292 @SmallTest
292 @Feature({"Cronet"}) 293 @Feature({"Cronet"})
293 @OnlyRunNativeCronet 294 @OnlyRunNativeCronet
(...skipping 15 matching lines...) Expand all
309 // Shut down the server, and the stream should error out. 310 // Shut down the server, and the stream should error out.
310 // The second call to shutdownQuicTestServer is no-op. 311 // The second call to shutdownQuicTestServer is no-op.
311 QuicTestServer.shutdownQuicTestServer(); 312 QuicTestServer.shutdownQuicTestServer();
312 } 313 }
313 }; 314 };
314 315
315 callback.addWriteData("Test String".getBytes()); 316 callback.addWriteData("Test String".getBytes());
316 callback.addWriteData("1234567890".getBytes()); 317 callback.addWriteData("1234567890".getBytes());
317 callback.addWriteData("woot!".getBytes()); 318 callback.addWriteData("woot!".getBytes());
318 319
319 BidirectionalStream stream = new BidirectionalStream 320 BidirectionalStream stream =
320 .Builder(quicURL, callback, callbac k.getExecutor(), 321 mTestFramework.mCronetEngine
321 mTestFramework.mCronetEngin e) 322 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
322 .addHeader("foo", "bar") 323 .addHeader("foo", "bar")
323 .addHeader("empty", "") 324 .addHeader("empty", "")
324 .addHeader("Content-Type", "zebra") 325 .addHeader("Content-Type", "zebra")
325 .build(); 326 .build();
326 stream.start(); 327 stream.start();
327 callback.blockForDone(); 328 callback.blockForDone();
328 assertTrue(stream.isDone()); 329 assertTrue(stream.isDone());
329 // Server terminated on us, so the stream must fail. 330 // Server terminated on us, so the stream must fail.
330 // QUIC reports this as ERR_QUIC_PROTOCOL_ERROR. Sometimes we get ERR_CO NNECTION_REFUSED. 331 // QUIC reports this as ERR_QUIC_PROTOCOL_ERROR. Sometimes we get ERR_CO NNECTION_REFUSED.
331 assertNotNull(callback.mError); 332 assertNotNull(callback.mError);
332 assertTrue(NetError.ERR_QUIC_PROTOCOL_ERROR == callback.mError.getCronet InternalErrorCode() 333 assertTrue(NetError.ERR_QUIC_PROTOCOL_ERROR == callback.mError.getCronet InternalErrorCode()
333 || NetError.ERR_CONNECTION_REFUSED == callback.mError.getCronetI nternalErrorCode()); 334 || NetError.ERR_CONNECTION_REFUSED == callback.mError.getCronetI nternalErrorCode());
334 } 335 }
335 336
336 @SmallTest 337 @SmallTest
337 @Feature({"Cronet"}) 338 @Feature({"Cronet"})
338 @OnlyRunNativeCronet 339 @OnlyRunNativeCronet
339 // Test that certificate verify results are serialized and deserialized corr ectly. 340 // Test that certificate verify results are serialized and deserialized corr ectly.
340 public void testSerializeDeserialize() throws Exception { 341 public void testSerializeDeserialize() throws Exception {
341 setUp(QuicBidirectionalStreams.ENABLED); 342 setUp(QuicBidirectionalStreams.ENABLED);
342 String path = "/simple.txt"; 343 String path = "/simple.txt";
343 String quicURL = QuicTestServer.getServerURL() + path; 344 String quicURL = QuicTestServer.getServerURL() + path;
344 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 345 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
345 BidirectionalStream stream = new BidirectionalStream 346 BidirectionalStream stream =
346 .Builder(quicURL, callback, callbac k.getExecutor(), 347 mTestFramework.mCronetEngine
347 mTestFramework.mCronetEngin e) 348 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
348 .setHttpMethod("GET") 349 .setHttpMethod("GET")
349 .build(); 350 .build();
350 stream.start(); 351 stream.start();
351 callback.blockForDone(); 352 callback.blockForDone();
352 assertTrue(stream.isDone()); 353 assertTrue(stream.isDone());
353 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 354 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
354 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString); 355 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString);
355 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 356 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
356 357
357 String serialized_data = mTestFramework.mCronetEngine.getCertVerifierDat a(100); 358 String serialized_data = mTestFramework.mCronetEngine.getCertVerifierDat a(100);
358 assertFalse(serialized_data.isEmpty()); 359 assertFalse(serialized_data.isEmpty());
359 360
360 // Create a new builder and verify that the |serialized_data| is deseria lized correctly. 361 // Create a new builder and verify that the |serialized_data| is deseria lized correctly.
361 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 362 ExperimentalCronetEngine.Builder builder =
363 new ExperimentalCronetEngine.Builder(getContext());
362 builder.enableQuic(true); 364 builder.enableQuic(true);
363 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier()); 365 CronetTestUtil.setMockCertVerifierForTesting(
366 builder, QuicTestServer.createMockCertVerifier());
364 builder.setCertVerifierData(serialized_data); 367 builder.setCertVerifierData(serialized_data);
365 368
366 CronetTestFramework testFramework = 369 CronetTestFramework testFramework =
367 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil der); 370 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil der);
368 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa ta(100); 371 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa ta(100);
369 assertEquals(deserialized_data, serialized_data); 372 assertEquals(deserialized_data, serialized_data);
370 } 373 }
371 } 374 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698