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

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, 2 months 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 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf o); 117 assertNotNull("RequestFinishedInfo.Listener must be called", finishedInf o);
117 RequestFinishedInfo.Metrics metrics = finishedInfo.getMetrics(); 118 RequestFinishedInfo.Metrics metrics = finishedInfo.getMetrics();
118 assertNotNull(metrics); 119 assertNotNull(metrics);
(...skipping 18 matching lines...) Expand all
137 // TODO(xunjieli): Use ParameterizedTest instead of the loop. 138 // TODO(xunjieli): Use ParameterizedTest instead of the loop.
138 for (int i = 0; i < 2; i++) { 139 for (int i = 0; i < 2; i++) {
139 String path = "/simple.txt"; 140 String path = "/simple.txt";
140 String quicURL = QuicTestServer.getServerURL() + path; 141 String quicURL = QuicTestServer.getServerURL() + path;
141 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); 142 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback();
142 // Although we have no way to verify data sent at this point, this t est 143 // Although we have no way to verify data sent at this point, this t est
143 // can make sure that onWriteCompleted is invoked appropriately. 144 // can make sure that onWriteCompleted is invoked appropriately.
144 callback.addWriteData("Test String".getBytes(), false); 145 callback.addWriteData("Test String".getBytes(), false);
145 callback.addWriteData("1234567890".getBytes(), false); 146 callback.addWriteData("1234567890".getBytes(), false);
146 callback.addWriteData("woot!".getBytes(), true); 147 callback.addWriteData("woot!".getBytes(), true);
147 BidirectionalStream stream = new BidirectionalStream 148 BidirectionalStream stream = mTestFramework.mCronetEngine
148 .Builder(quicURL, callback, cal lback.getExecutor(), 149 .newBidirectionalStreamBuilder(
149 mTestFramework.mCronetE ngine) 150 quicURL, callback, call back.getExecutor())
150 .delayRequestHeadersUntilFirstF lush(i == 0) 151 .delayRequestHeadersUntilFirstF lush(i == 0)
151 .addHeader("foo", "bar") 152 .addHeader("foo", "bar")
152 .addHeader("empty", "") 153 .addHeader("empty", "")
153 .addHeader("Content-Type", "zeb ra") 154 .addHeader("Content-Type", "zeb ra")
154 .build(); 155 .build();
155 stream.start(); 156 stream.start();
156 callback.blockForDone(); 157 callback.blockForDone();
157 assertTrue(stream.isDone()); 158 assertTrue(stream.isDone());
158 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 159 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
159 assertEquals( 160 assertEquals(
(...skipping 13 matching lines...) Expand all
173 String quicURL = QuicTestServer.getServerURL() + path; 174 String quicURL = QuicTestServer.getServerURL() + path;
174 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); 175 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback();
175 // Although we have no way to verify data sent at this point, this t est 176 // Although we have no way to verify data sent at this point, this t est
176 // can make sure that onWriteCompleted is invoked appropriately. 177 // can make sure that onWriteCompleted is invoked appropriately.
177 callback.addWriteData("Test String".getBytes(), false); 178 callback.addWriteData("Test String".getBytes(), false);
178 callback.addWriteData("1234567890".getBytes(), false); 179 callback.addWriteData("1234567890".getBytes(), false);
179 callback.addWriteData("woot!".getBytes(), true); 180 callback.addWriteData("woot!".getBytes(), true);
180 callback.addWriteData("Test String".getBytes(), false); 181 callback.addWriteData("Test String".getBytes(), false);
181 callback.addWriteData("1234567890".getBytes(), false); 182 callback.addWriteData("1234567890".getBytes(), false);
182 callback.addWriteData("woot!".getBytes(), true); 183 callback.addWriteData("woot!".getBytes(), true);
183 BidirectionalStream stream = new BidirectionalStream 184 BidirectionalStream stream = mTestFramework.mCronetEngine
184 .Builder(quicURL, callback, cal lback.getExecutor(), 185 .newBidirectionalStreamBuilder(
185 mTestFramework.mCronetE ngine) 186 quicURL, callback, call back.getExecutor())
186 .delayRequestHeadersUntilFirstF lush(i == 0) 187 .delayRequestHeadersUntilFirstF lush(i == 0)
187 .addHeader("foo", "bar") 188 .addHeader("foo", "bar")
188 .addHeader("empty", "") 189 .addHeader("empty", "")
189 .addHeader("Content-Type", "zeb ra") 190 .addHeader("Content-Type", "zeb ra")
190 .build(); 191 .build();
191 stream.start(); 192 stream.start();
192 callback.blockForDone(); 193 callback.blockForDone();
193 assertTrue(stream.isDone()); 194 assertTrue(stream.isDone());
194 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 195 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
195 assertEquals( 196 assertEquals(
(...skipping 13 matching lines...) Expand all
209 String url = QuicTestServer.getServerURL() + path; 210 String url = QuicTestServer.getServerURL() + path;
210 211
211 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback() { 212 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback() {
212 @Override 213 @Override
213 public void onStreamReady(BidirectionalStream stream) { 214 public void onStreamReady(BidirectionalStream stream) {
214 // This flush should send the delayed headers. 215 // This flush should send the delayed headers.
215 stream.flush(); 216 stream.flush();
216 super.onStreamReady(stream); 217 super.onStreamReady(stream);
217 } 218 }
218 }; 219 };
219 BidirectionalStream stream = new BidirectionalStream 220 BidirectionalStream stream =
220 .Builder(url, callback, callbac k.getExecutor(), 221 mTestFramework.mCronetEngine
221 mTestFramework.mCronetE ngine) 222 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor())
222 .setHttpMethod("GET") 223 .setHttpMethod("GET")
223 .delayRequestHeadersUntilFirstF lush(i == 0) 224 .delayRequestHeadersUntilFirstFlush(i == 0)
224 .addHeader("foo", "bar") 225 .addHeader("foo", "bar")
225 .addHeader("empty", "") 226 .addHeader("empty", "")
226 .build(); 227 .build();
227 // Flush before stream is started should not crash. 228 // Flush before stream is started should not crash.
228 stream.flush(); 229 stream.flush();
229 230
230 stream.start(); 231 stream.start();
231 callback.blockForDone(); 232 callback.blockForDone();
232 assertTrue(stream.isDone()); 233 assertTrue(stream.isDone());
233 234
234 // Flush after stream is completed is no-op. It shouldn't call into the destroyed 235 // Flush after stream is completed is no-op. It shouldn't call into the destroyed
235 // adapter. 236 // adapter.
236 stream.flush(); 237 stream.flush();
(...skipping 10 matching lines...) Expand all
247 @OnlyRunNativeCronet 248 @OnlyRunNativeCronet
248 public void testSimplePostWithFlushAfterOneWrite() throws Exception { 249 public void testSimplePostWithFlushAfterOneWrite() throws Exception {
249 setUp(QuicBidirectionalStreams.ENABLED); 250 setUp(QuicBidirectionalStreams.ENABLED);
250 // TODO(xunjieli): Use ParameterizedTest instead of the loop. 251 // TODO(xunjieli): Use ParameterizedTest instead of the loop.
251 for (int i = 0; i < 2; i++) { 252 for (int i = 0; i < 2; i++) {
252 String path = "/simple.txt"; 253 String path = "/simple.txt";
253 String url = QuicTestServer.getServerURL() + path; 254 String url = QuicTestServer.getServerURL() + path;
254 255
255 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); 256 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback();
256 callback.addWriteData("Test String".getBytes(), true); 257 callback.addWriteData("Test String".getBytes(), true);
257 BidirectionalStream stream = new BidirectionalStream 258 BidirectionalStream stream =
258 .Builder(url, callback, callbac k.getExecutor(), 259 mTestFramework.mCronetEngine
259 mTestFramework.mCronetE ngine) 260 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor())
260 .delayRequestHeadersUntilFirstF lush(i == 0) 261 .delayRequestHeadersUntilFirstFlush(i == 0)
261 .addHeader("foo", "bar") 262 .addHeader("foo", "bar")
262 .addHeader("empty", "") 263 .addHeader("empty", "")
263 .addHeader("Content-Type", "zeb ra") 264 .addHeader("Content-Type", "zebra")
264 .build(); 265 .build();
265 stream.start(); 266 stream.start();
266 callback.blockForDone(); 267 callback.blockForDone();
267 assertTrue(stream.isDone()); 268 assertTrue(stream.isDone());
268 269
269 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 270 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
270 assertEquals( 271 assertEquals(
271 "This is a simple text file served by QUIC.\n", callback.mRe sponseAsString); 272 "This is a simple text file served by QUIC.\n", callback.mRe sponseAsString);
272 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedPr otocol()); 273 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedPr otocol());
273 } 274 }
274 } 275 }
275 276
276 @SmallTest 277 @SmallTest
277 @Feature({"Cronet"}) 278 @Feature({"Cronet"})
278 @OnlyRunNativeCronet 279 @OnlyRunNativeCronet
279 public void testQuicBidirectionalStreamDisabled() throws Exception { 280 public void testQuicBidirectionalStreamDisabled() throws Exception {
280 setUp(QuicBidirectionalStreams.DISABLED); 281 setUp(QuicBidirectionalStreams.DISABLED);
281 String path = "/simple.txt"; 282 String path = "/simple.txt";
282 String quicURL = QuicTestServer.getServerURL() + path; 283 String quicURL = QuicTestServer.getServerURL() + path;
283 284
284 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 285 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
285 BidirectionalStream stream = new BidirectionalStream 286 BidirectionalStream stream =
286 .Builder(quicURL, callback, callbac k.getExecutor(), 287 mTestFramework.mCronetEngine
287 mTestFramework.mCronetEngin e) 288 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
288 .setHttpMethod("GET") 289 .setHttpMethod("GET")
289 .build(); 290 .build();
290 stream.start(); 291 stream.start();
291 callback.blockForDone(); 292 callback.blockForDone();
292 assertTrue(stream.isDone()); 293 assertTrue(stream.isDone());
293 assertTrue(callback.mOnErrorCalled); 294 assertTrue(callback.mOnErrorCalled);
294 assertNull(callback.mResponseInfo); 295 assertNull(callback.mResponseInfo);
295 } 296 }
296 297
297 @SmallTest 298 @SmallTest
298 @Feature({"Cronet"}) 299 @Feature({"Cronet"})
299 @OnlyRunNativeCronet 300 @OnlyRunNativeCronet
(...skipping 15 matching lines...) Expand all
315 // Shut down the server, and the stream should error out. 316 // Shut down the server, and the stream should error out.
316 // The second call to shutdownQuicTestServer is no-op. 317 // The second call to shutdownQuicTestServer is no-op.
317 QuicTestServer.shutdownQuicTestServer(); 318 QuicTestServer.shutdownQuicTestServer();
318 } 319 }
319 }; 320 };
320 321
321 callback.addWriteData("Test String".getBytes()); 322 callback.addWriteData("Test String".getBytes());
322 callback.addWriteData("1234567890".getBytes()); 323 callback.addWriteData("1234567890".getBytes());
323 callback.addWriteData("woot!".getBytes()); 324 callback.addWriteData("woot!".getBytes());
324 325
325 BidirectionalStream stream = new BidirectionalStream 326 BidirectionalStream stream =
326 .Builder(quicURL, callback, callbac k.getExecutor(), 327 mTestFramework.mCronetEngine
327 mTestFramework.mCronetEngin e) 328 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
328 .addHeader("foo", "bar") 329 .addHeader("foo", "bar")
329 .addHeader("empty", "") 330 .addHeader("empty", "")
330 .addHeader("Content-Type", "zebra") 331 .addHeader("Content-Type", "zebra")
331 .build(); 332 .build();
332 stream.start(); 333 stream.start();
333 callback.blockForDone(); 334 callback.blockForDone();
334 assertTrue(stream.isDone()); 335 assertTrue(stream.isDone());
335 // Server terminated on us, so the stream must fail. 336 // Server terminated on us, so the stream must fail.
336 // QUIC reports this as ERR_QUIC_PROTOCOL_ERROR. Sometimes we get ERR_CO NNECTION_REFUSED. 337 // QUIC reports this as ERR_QUIC_PROTOCOL_ERROR. Sometimes we get ERR_CO NNECTION_REFUSED.
337 assertNotNull(callback.mError); 338 assertNotNull(callback.mError);
338 assertTrue(NetError.ERR_QUIC_PROTOCOL_ERROR == callback.mError.getCronet InternalErrorCode() 339 assertTrue(NetError.ERR_QUIC_PROTOCOL_ERROR == callback.mError.getCronet InternalErrorCode()
339 || NetError.ERR_CONNECTION_REFUSED == callback.mError.getCronetI nternalErrorCode()); 340 || NetError.ERR_CONNECTION_REFUSED == callback.mError.getCronetI nternalErrorCode());
340 } 341 }
341 342
342 @SmallTest 343 @SmallTest
343 @Feature({"Cronet"}) 344 @Feature({"Cronet"})
344 @OnlyRunNativeCronet 345 @OnlyRunNativeCronet
345 // Test that certificate verify results are serialized and deserialized corr ectly. 346 // Test that certificate verify results are serialized and deserialized corr ectly.
346 public void testSerializeDeserialize() throws Exception { 347 public void testSerializeDeserialize() throws Exception {
347 setUp(QuicBidirectionalStreams.ENABLED); 348 setUp(QuicBidirectionalStreams.ENABLED);
348 String path = "/simple.txt"; 349 String path = "/simple.txt";
349 String quicURL = QuicTestServer.getServerURL() + path; 350 String quicURL = QuicTestServer.getServerURL() + path;
350 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); 351 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback();
351 BidirectionalStream stream = new BidirectionalStream 352 BidirectionalStream stream =
352 .Builder(quicURL, callback, callbac k.getExecutor(), 353 mTestFramework.mCronetEngine
353 mTestFramework.mCronetEngin e) 354 .newBidirectionalStreamBuilder(quicURL, callback, callba ck.getExecutor())
354 .setHttpMethod("GET") 355 .setHttpMethod("GET")
355 .build(); 356 .build();
356 stream.start(); 357 stream.start();
357 callback.blockForDone(); 358 callback.blockForDone();
358 assertTrue(stream.isDone()); 359 assertTrue(stream.isDone());
359 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 360 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
360 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString); 361 assertEquals("This is a simple text file served by QUIC.\n", callback.mR esponseAsString);
361 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 362 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
362 363
363 String serialized_data = mTestFramework.mCronetEngine.getCertVerifierDat a(100); 364 String serialized_data = mTestFramework.mCronetEngine.getCertVerifierDat a(100);
364 assertFalse(serialized_data.isEmpty()); 365 assertFalse(serialized_data.isEmpty());
365 366
366 // Create a new builder and verify that the |serialized_data| is deseria lized correctly. 367 // Create a new builder and verify that the |serialized_data| is deseria lized correctly.
367 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 368 ExperimentalCronetEngine.Builder builder =
369 new ExperimentalCronetEngine.Builder(getContext());
368 builder.enableQuic(true); 370 builder.enableQuic(true);
369 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier()); 371 CronetTestUtil.setMockCertVerifierForTesting(
372 builder, QuicTestServer.createMockCertVerifier());
370 builder.setCertVerifierData(serialized_data); 373 builder.setCertVerifierData(serialized_data);
371 374
372 CronetTestFramework testFramework = 375 CronetTestFramework testFramework =
373 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil der); 376 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, buil der);
374 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa ta(100); 377 String deserialized_data = testFramework.mCronetEngine.getCertVerifierDa ta(100);
375 assertEquals(deserialized_data, serialized_data); 378 assertEquals(deserialized_data, serialized_data);
376 } 379 }
377 } 380 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698