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 static org.chromium.base.CollectionUtil.newHashSet; | 7 import static org.chromium.base.CollectionUtil.newHashSet; |
8 | 8 |
9 import android.os.ConditionVariable; | 9 import android.os.ConditionVariable; |
10 import android.support.test.filters.SmallTest; | 10 import android.support.test.filters.SmallTest; |
(...skipping 14 matching lines...) Expand all Loading... | |
25 import java.util.HashSet; | 25 import java.util.HashSet; |
26 import java.util.List; | 26 import java.util.List; |
27 import java.util.Map; | 27 import java.util.Map; |
28 import java.util.regex.Matcher; | 28 import java.util.regex.Matcher; |
29 import java.util.regex.Pattern; | 29 import java.util.regex.Pattern; |
30 | 30 |
31 /** | 31 /** |
32 * Test functionality of BidirectionalStream interface. | 32 * Test functionality of BidirectionalStream interface. |
33 */ | 33 */ |
34 public class BidirectionalStreamTest extends CronetTestBase { | 34 public class BidirectionalStreamTest extends CronetTestBase { |
35 private CronetTestFramework mTestFramework; | 35 private ExperimentalCronetEngine mCronetEngine; |
36 | |
37 @Override | 36 @Override |
38 protected void setUp() throws Exception { | 37 protected void setUp() throws Exception { |
39 super.setUp(); | 38 super.setUp(); |
40 // Load library first to create MockCertVerifier. | 39 // Load library first to create MockCertVerifier. |
41 System.loadLibrary("cronet_tests"); | 40 System.loadLibrary("cronet_tests"); |
42 ExperimentalCronetEngine.Builder builder = | 41 ExperimentalCronetEngine.Builder builder = |
43 new ExperimentalCronetEngine.Builder(getContext()); | 42 new ExperimentalCronetEngine.Builder(getContext()); |
44 CronetTestUtil.setMockCertVerifierForTesting( | 43 CronetTestUtil.setMockCertVerifierForTesting( |
45 builder, QuicTestServer.createMockCertVerifier()); | 44 builder, QuicTestServer.createMockCertVerifier()); |
46 | 45 |
47 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder); | 46 mCronetEngine = builder.build(); |
48 assertTrue(Http2TestServer.startHttp2TestServer( | 47 assertTrue(Http2TestServer.startHttp2TestServer( |
49 getContext(), SERVER_CERT_PEM, SERVER_KEY_PKCS8_PEM)); | 48 getContext(), SERVER_CERT_PEM, SERVER_KEY_PKCS8_PEM)); |
50 } | 49 } |
51 | 50 |
52 @Override | 51 @Override |
53 protected void tearDown() throws Exception { | 52 protected void tearDown() throws Exception { |
54 assertTrue(Http2TestServer.shutdownHttp2TestServer()); | 53 assertTrue(Http2TestServer.shutdownHttp2TestServer()); |
55 if (mTestFramework.mCronetEngine != null) { | 54 if (mCronetEngine != null) { |
56 mTestFramework.mCronetEngine.shutdown(); | 55 mCronetEngine.shutdown(); |
57 } | 56 } |
58 super.tearDown(); | 57 super.tearDown(); |
59 } | 58 } |
60 | 59 |
61 private static void checkResponseInfo(UrlResponseInfo responseInfo, String e xpectedUrl, | 60 private static void checkResponseInfo(UrlResponseInfo responseInfo, String e xpectedUrl, |
62 int expectedHttpStatusCode, String expectedHttpStatusText) { | 61 int expectedHttpStatusCode, String expectedHttpStatusText) { |
63 assertEquals(expectedUrl, responseInfo.getUrl()); | 62 assertEquals(expectedUrl, responseInfo.getUrl()); |
64 assertEquals( | 63 assertEquals( |
65 expectedUrl, responseInfo.getUrlChain().get(responseInfo.getUrlC hain().size() - 1)); | 64 expectedUrl, responseInfo.getUrlChain().get(responseInfo.getUrlC hain().size() - 1)); |
66 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); | 65 assertEquals(expectedHttpStatusCode, responseInfo.getHttpStatusCode()); |
(...skipping 22 matching lines...) Expand all Loading... | |
89 Arrays.asList(urls), statusCode, message, headersList, false, "h 2", null); | 88 Arrays.asList(urls), statusCode, message, headersList, false, "h 2", null); |
90 urlResponseInfo.setReceivedByteCount(receivedBytes); | 89 urlResponseInfo.setReceivedByteCount(receivedBytes); |
91 return urlResponseInfo; | 90 return urlResponseInfo; |
92 } | 91 } |
93 | 92 |
94 private void runSimpleGetWithExpectedReceivedByteCount(int expectedReceivedB ytes) | 93 private void runSimpleGetWithExpectedReceivedByteCount(int expectedReceivedB ytes) |
95 throws Exception { | 94 throws Exception { |
96 String url = Http2TestServer.getEchoMethodUrl(); | 95 String url = Http2TestServer.getEchoMethodUrl(); |
97 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 96 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
98 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | 97 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); |
99 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | 98 mCronetEngine.addRequestFinishedListener(requestFinishedListener); |
100 // Create stream. | 99 // Create stream. |
101 BidirectionalStream stream = | 100 BidirectionalStream stream = |
102 mTestFramework.mCronetEngine | 101 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
103 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
104 .setHttpMethod("GET") | 102 .setHttpMethod("GET") |
105 .build(); | 103 .build(); |
106 stream.start(); | 104 stream.start(); |
107 callback.blockForDone(); | 105 callback.blockForDone(); |
108 assertTrue(stream.isDone()); | 106 assertTrue(stream.isDone()); |
109 requestFinishedListener.blockUntilDone(); | 107 requestFinishedListener.blockUntilDone(); |
110 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 108 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
111 // Default method is 'GET'. | 109 // Default method is 'GET'. |
112 assertEquals("GET", callback.mResponseAsString); | 110 assertEquals("GET", callback.mResponseAsString); |
113 UrlResponseInfo urlResponseInfo = createUrlResponseInfo( | 111 UrlResponseInfo urlResponseInfo = createUrlResponseInfo( |
(...skipping 10 matching lines...) Expand all Loading... | |
124 if (testingJavaImpl()) { | 122 if (testingJavaImpl()) { |
125 runBuilderCheckJavaImpl(); | 123 runBuilderCheckJavaImpl(); |
126 } else { | 124 } else { |
127 runBuilderCheckNativeImpl(); | 125 runBuilderCheckNativeImpl(); |
128 } | 126 } |
129 } | 127 } |
130 | 128 |
131 private void runBuilderCheckNativeImpl() throws Exception { | 129 private void runBuilderCheckNativeImpl() throws Exception { |
132 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 130 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
133 try { | 131 try { |
134 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 132 mCronetEngine.newBidirectionalStreamBuilder(null, callback, callback .getExecutor()); |
135 null, callback, callback.getExecutor()); | |
136 fail("URL not null-checked"); | 133 fail("URL not null-checked"); |
137 } catch (NullPointerException e) { | 134 } catch (NullPointerException e) { |
138 assertEquals("URL is required.", e.getMessage()); | 135 assertEquals("URL is required.", e.getMessage()); |
139 } | 136 } |
140 try { | 137 try { |
141 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 138 mCronetEngine.newBidirectionalStreamBuilder( |
142 Http2TestServer.getServerUrl(), null, callback.getExecutor() ); | 139 Http2TestServer.getServerUrl(), null, callback.getExecutor() ); |
143 fail("Callback not null-checked"); | 140 fail("Callback not null-checked"); |
144 } catch (NullPointerException e) { | 141 } catch (NullPointerException e) { |
145 assertEquals("Callback is required.", e.getMessage()); | 142 assertEquals("Callback is required.", e.getMessage()); |
146 } | 143 } |
147 try { | 144 try { |
148 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 145 mCronetEngine.newBidirectionalStreamBuilder( |
149 Http2TestServer.getServerUrl(), callback, null); | 146 Http2TestServer.getServerUrl(), callback, null); |
150 fail("Executor not null-checked"); | 147 fail("Executor not null-checked"); |
151 } catch (NullPointerException e) { | 148 } catch (NullPointerException e) { |
152 assertEquals("Executor is required.", e.getMessage()); | 149 assertEquals("Executor is required.", e.getMessage()); |
153 } | 150 } |
154 // Verify successful creation doesn't throw. | 151 // Verify successful creation doesn't throw. |
155 BidirectionalStream.Builder builder = | 152 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
156 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 153 Http2TestServer.getServerUrl(), callback, callback.getExecutor() ); |
157 Http2TestServer.getServerUrl(), callback, callback.getEx ecutor()); | |
158 try { | 154 try { |
159 builder.addHeader(null, "value"); | 155 builder.addHeader(null, "value"); |
160 fail("Header name is not null-checked"); | 156 fail("Header name is not null-checked"); |
161 } catch (NullPointerException e) { | 157 } catch (NullPointerException e) { |
162 assertEquals("Invalid header name.", e.getMessage()); | 158 assertEquals("Invalid header name.", e.getMessage()); |
163 } | 159 } |
164 try { | 160 try { |
165 builder.addHeader("name", null); | 161 builder.addHeader("name", null); |
166 fail("Header value is not null-checked"); | 162 fail("Header value is not null-checked"); |
167 } catch (NullPointerException e) { | 163 } catch (NullPointerException e) { |
168 assertEquals("Invalid header value.", e.getMessage()); | 164 assertEquals("Invalid header value.", e.getMessage()); |
169 } | 165 } |
170 try { | 166 try { |
171 builder.setHttpMethod(null); | 167 builder.setHttpMethod(null); |
172 fail("Method name is not null-checked"); | 168 fail("Method name is not null-checked"); |
173 } catch (NullPointerException e) { | 169 } catch (NullPointerException e) { |
174 assertEquals("Method is required.", e.getMessage()); | 170 assertEquals("Method is required.", e.getMessage()); |
175 } | 171 } |
176 } | 172 } |
177 | 173 |
178 private void runBuilderCheckJavaImpl() { | 174 private void runBuilderCheckJavaImpl() { |
179 try { | 175 try { |
180 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); | 176 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); |
181 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 177 createJavaEngineBuilder().build().newBidirectionalStreamBuilder( |
mgersh
2017/05/23 18:12:12
It looks like the point of this method is that it'
pauljensen
2017/05/25 15:15:14
Previously startCronetTestFrameworkWithUrlAndCrone
mgersh
2017/05/25 18:11:16
Acknowledged.
| |
182 Http2TestServer.getServerUrl(), callback, callback.getExecut or()); | 178 Http2TestServer.getServerUrl(), callback, callback.getExecut or()); |
183 fail("JavaCronetEngine doesn't support BidirectionalStream." | 179 fail("JavaCronetEngine doesn't support BidirectionalStream." |
184 + " Expected UnsupportedOperationException"); | 180 + " Expected UnsupportedOperationException"); |
185 } catch (UnsupportedOperationException e) { | 181 } catch (UnsupportedOperationException e) { |
186 // Expected. | 182 // Expected. |
187 } | 183 } |
188 } | 184 } |
189 | 185 |
190 @SmallTest | 186 @SmallTest |
191 @Feature({"Cronet"}) | 187 @Feature({"Cronet"}) |
192 @OnlyRunNativeCronet | 188 @OnlyRunNativeCronet |
193 public void testFailPlainHttp() throws Exception { | 189 public void testFailPlainHttp() throws Exception { |
194 String url = "http://example.com"; | 190 String url = "http://example.com"; |
195 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 191 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
196 // Create stream. | 192 // Create stream. |
197 BidirectionalStream stream = | 193 BidirectionalStream stream = |
198 mTestFramework.mCronetEngine | 194 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
199 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
200 .build(); | 195 .build(); |
201 stream.start(); | 196 stream.start(); |
202 callback.blockForDone(); | 197 callback.blockForDone(); |
203 assertTrue(stream.isDone()); | 198 assertTrue(stream.isDone()); |
204 assertContains("Exception in BidirectionalStream: net::ERR_DISALLOWED_UR L_SCHEME", | 199 assertContains("Exception in BidirectionalStream: net::ERR_DISALLOWED_UR L_SCHEME", |
205 callback.mError.getMessage()); | 200 callback.mError.getMessage()); |
206 assertEquals(-301, ((NetworkException) callback.mError).getCronetInterna lErrorCode()); | 201 assertEquals(-301, ((NetworkException) callback.mError).getCronetInterna lErrorCode()); |
207 } | 202 } |
208 | 203 |
209 @SmallTest | 204 @SmallTest |
210 @Feature({"Cronet"}) | 205 @Feature({"Cronet"}) |
211 @OnlyRunNativeCronet | 206 @OnlyRunNativeCronet |
212 public void testSimpleGet() throws Exception { | 207 public void testSimpleGet() throws Exception { |
213 // Since this is the first request on the connection, the expected recei ved bytes count | 208 // Since this is the first request on the connection, the expected recei ved bytes count |
214 // must account for an HPACK dynamic table size update. | 209 // must account for an HPACK dynamic table size update. |
215 runSimpleGetWithExpectedReceivedByteCount(31); | 210 runSimpleGetWithExpectedReceivedByteCount(31); |
216 } | 211 } |
217 | 212 |
218 @SmallTest | 213 @SmallTest |
219 @Feature({"Cronet"}) | 214 @Feature({"Cronet"}) |
220 @OnlyRunNativeCronet | 215 @OnlyRunNativeCronet |
221 public void testSimpleHead() throws Exception { | 216 public void testSimpleHead() throws Exception { |
222 String url = Http2TestServer.getEchoMethodUrl(); | 217 String url = Http2TestServer.getEchoMethodUrl(); |
223 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 218 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
224 // Create stream. | 219 // Create stream. |
225 BidirectionalStream stream = | 220 BidirectionalStream stream = |
226 mTestFramework.mCronetEngine | 221 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
227 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
228 .setHttpMethod("HEAD") | 222 .setHttpMethod("HEAD") |
229 .build(); | 223 .build(); |
230 stream.start(); | 224 stream.start(); |
231 callback.blockForDone(); | 225 callback.blockForDone(); |
232 assertTrue(stream.isDone()); | 226 assertTrue(stream.isDone()); |
233 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 227 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
234 assertEquals("HEAD", callback.mResponseAsString); | 228 assertEquals("HEAD", callback.mResponseAsString); |
235 UrlResponseInfo urlResponseInfo = | 229 UrlResponseInfo urlResponseInfo = |
236 createUrlResponseInfo(new String[] {url}, "", 200, 32, ":status" , "200"); | 230 createUrlResponseInfo(new String[] {url}, "", 200, 32, ":status" , "200"); |
237 assertResponseEquals(urlResponseInfo, callback.mResponseInfo); | 231 assertResponseEquals(urlResponseInfo, callback.mResponseInfo); |
238 checkResponseInfo(callback.mResponseInfo, Http2TestServer.getEchoMethodU rl(), 200, ""); | 232 checkResponseInfo(callback.mResponseInfo, Http2TestServer.getEchoMethodU rl(), 200, ""); |
239 } | 233 } |
240 | 234 |
241 @SmallTest | 235 @SmallTest |
242 @Feature({"Cronet"}) | 236 @Feature({"Cronet"}) |
243 @OnlyRunNativeCronet | 237 @OnlyRunNativeCronet |
244 public void testSimplePost() throws Exception { | 238 public void testSimplePost() throws Exception { |
245 String url = Http2TestServer.getEchoStreamUrl(); | 239 String url = Http2TestServer.getEchoStreamUrl(); |
246 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 240 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
247 callback.addWriteData("Test String".getBytes()); | 241 callback.addWriteData("Test String".getBytes()); |
248 callback.addWriteData("1234567890".getBytes()); | 242 callback.addWriteData("1234567890".getBytes()); |
249 callback.addWriteData("woot!".getBytes()); | 243 callback.addWriteData("woot!".getBytes()); |
250 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | 244 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); |
251 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | 245 mCronetEngine.addRequestFinishedListener(requestFinishedListener); |
252 // Create stream. | 246 // Create stream. |
253 BidirectionalStream stream = | 247 BidirectionalStream stream = |
254 mTestFramework.mCronetEngine | 248 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
255 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
256 .addHeader("foo", "bar") | 249 .addHeader("foo", "bar") |
257 .addHeader("empty", "") | 250 .addHeader("empty", "") |
258 .addHeader("Content-Type", "zebra") | 251 .addHeader("Content-Type", "zebra") |
259 .addRequestAnnotation(this) | 252 .addRequestAnnotation(this) |
260 .addRequestAnnotation("request annotation") | 253 .addRequestAnnotation("request annotation") |
261 .build(); | 254 .build(); |
262 Date startTime = new Date(); | 255 Date startTime = new Date(); |
263 stream.start(); | 256 stream.start(); |
264 callback.blockForDone(); | 257 callback.blockForDone(); |
265 assertTrue(stream.isDone()); | 258 assertTrue(stream.isDone()); |
(...skipping 16 matching lines...) Expand all Loading... | |
282 @SmallTest | 275 @SmallTest |
283 @Feature({"Cronet"}) | 276 @Feature({"Cronet"}) |
284 @OnlyRunNativeCronet | 277 @OnlyRunNativeCronet |
285 public void testSimplePostWithFlush() throws Exception { | 278 public void testSimplePostWithFlush() throws Exception { |
286 String url = Http2TestServer.getEchoStreamUrl(); | 279 String url = Http2TestServer.getEchoStreamUrl(); |
287 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 280 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
288 callback.addWriteData("Test String".getBytes(), false); | 281 callback.addWriteData("Test String".getBytes(), false); |
289 callback.addWriteData("1234567890".getBytes(), false); | 282 callback.addWriteData("1234567890".getBytes(), false); |
290 callback.addWriteData("woot!".getBytes(), true); | 283 callback.addWriteData("woot!".getBytes(), true); |
291 BidirectionalStream stream = | 284 BidirectionalStream stream = |
292 mTestFramework.mCronetEngine | 285 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
293 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
294 .addHeader("foo", "bar") | 286 .addHeader("foo", "bar") |
295 .addHeader("empty", "") | 287 .addHeader("empty", "") |
296 .addHeader("Content-Type", "zebra") | 288 .addHeader("Content-Type", "zebra") |
297 .build(); | 289 .build(); |
298 // Flush before stream is started should not crash. | 290 // Flush before stream is started should not crash. |
299 stream.flush(); | 291 stream.flush(); |
300 | 292 |
301 stream.start(); | 293 stream.start(); |
302 callback.blockForDone(); | 294 callback.blockForDone(); |
303 assertTrue(stream.isDone()); | 295 assertTrue(stream.isDone()); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
360 } | 352 } |
361 } | 353 } |
362 }; | 354 }; |
363 callback.addWriteData("1".getBytes(), false); | 355 callback.addWriteData("1".getBytes(), false); |
364 callback.addWriteData("2".getBytes(), false); | 356 callback.addWriteData("2".getBytes(), false); |
365 callback.addWriteData("3".getBytes(), true); | 357 callback.addWriteData("3".getBytes(), true); |
366 callback.addWriteData("4".getBytes(), false); | 358 callback.addWriteData("4".getBytes(), false); |
367 callback.addWriteData("5".getBytes(), true); | 359 callback.addWriteData("5".getBytes(), true); |
368 callback.addWriteData("6".getBytes(), false); | 360 callback.addWriteData("6".getBytes(), false); |
369 CronetBidirectionalStream stream = | 361 CronetBidirectionalStream stream = |
370 (CronetBidirectionalStream) mTestFramework.mCronetEngine | 362 (CronetBidirectionalStream) mCronetEngine |
371 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | 363 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) |
372 .addHeader("foo", "bar") | 364 .addHeader("foo", "bar") |
373 .addHeader("empty", "") | 365 .addHeader("empty", "") |
374 .addHeader("Content-Type", "zebra") | 366 .addHeader("Content-Type", "zebra") |
375 .build(); | 367 .build(); |
376 callback.setAutoAdvance(false); | 368 callback.setAutoAdvance(false); |
377 stream.start(); | 369 stream.start(); |
378 callback.waitForNextWriteStep(); // onStreamReady | 370 callback.waitForNextWriteStep(); // onStreamReady |
379 | 371 |
380 assertEquals(0, stream.getPendingDataForTesting().size()); | 372 assertEquals(0, stream.getPendingDataForTesting().size()); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
434 for (int i = 0; i < data.length; i++) { | 426 for (int i = 0; i < data.length; i++) { |
435 data[i] = 'x'; | 427 data[i] = 'x'; |
436 } | 428 } |
437 ByteBuffer dummyData = ByteBuffer.allocateDirect(data.length); | 429 ByteBuffer dummyData = ByteBuffer.allocateDirect(data.length); |
438 dummyData.put(data); | 430 dummyData.put(data); |
439 dummyData.flip(); | 431 dummyData.flip(); |
440 return dummyData; | 432 return dummyData; |
441 } | 433 } |
442 }; | 434 }; |
443 CronetBidirectionalStream stream = | 435 CronetBidirectionalStream stream = |
444 (CronetBidirectionalStream) mTestFramework.mCronetEngine | 436 (CronetBidirectionalStream) mCronetEngine |
445 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | 437 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) |
446 .build(); | 438 .build(); |
447 stream.start(); | 439 stream.start(); |
448 callback.blockForDone(); | 440 callback.blockForDone(); |
449 assertTrue(callback.mOnCanceledCalled); | 441 assertTrue(callback.mOnCanceledCalled); |
450 } | 442 } |
451 | 443 |
452 @SmallTest | 444 @SmallTest |
453 @Feature({"Cronet"}) | 445 @Feature({"Cronet"}) |
454 @OnlyRunNativeCronet | 446 @OnlyRunNativeCronet |
(...skipping 16 matching lines...) Expand all Loading... | |
471 super.onStreamReady(stream); | 463 super.onStreamReady(stream); |
472 try { | 464 try { |
473 // Attempt to write data for GET request. | 465 // Attempt to write data for GET request. |
474 stream.write(ByteBuffer.wrap("dummy".getBytes()), true); | 466 stream.write(ByteBuffer.wrap("dummy".getBytes()), true); |
475 } catch (IllegalArgumentException e) { | 467 } catch (IllegalArgumentException e) { |
476 // Expected. | 468 // Expected. |
477 } | 469 } |
478 } | 470 } |
479 }; | 471 }; |
480 BidirectionalStream stream = | 472 BidirectionalStream stream = |
481 mTestFramework.mCronetEngine | 473 mCronetEngine |
482 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor()) | 474 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor()) |
483 .setHttpMethod("GET") | 475 .setHttpMethod("GET") |
484 .delayRequestHeadersUntilFirstFlush(i == 0) | 476 .delayRequestHeadersUntilFirstFlush(i == 0) |
485 .addHeader("foo", "bar") | 477 .addHeader("foo", "bar") |
486 .addHeader("empty", "") | 478 .addHeader("empty", "") |
487 .build(); | 479 .build(); |
488 // Flush before stream is started should not crash. | 480 // Flush before stream is started should not crash. |
489 stream.flush(); | 481 stream.flush(); |
490 | 482 |
491 stream.start(); | 483 stream.start(); |
(...skipping 14 matching lines...) Expand all Loading... | |
506 @SmallTest | 498 @SmallTest |
507 @Feature({"Cronet"}) | 499 @Feature({"Cronet"}) |
508 @OnlyRunNativeCronet | 500 @OnlyRunNativeCronet |
509 public void testSimplePostWithFlushAfterOneWrite() throws Exception { | 501 public void testSimplePostWithFlushAfterOneWrite() throws Exception { |
510 // TODO(xunjieli): Use ParameterizedTest instead of the loop. | 502 // TODO(xunjieli): Use ParameterizedTest instead of the loop. |
511 for (int i = 0; i < 2; i++) { | 503 for (int i = 0; i < 2; i++) { |
512 String url = Http2TestServer.getEchoStreamUrl(); | 504 String url = Http2TestServer.getEchoStreamUrl(); |
513 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); | 505 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); |
514 callback.addWriteData("Test String".getBytes(), true); | 506 callback.addWriteData("Test String".getBytes(), true); |
515 BidirectionalStream stream = | 507 BidirectionalStream stream = |
516 mTestFramework.mCronetEngine | 508 mCronetEngine |
517 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor()) | 509 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor()) |
518 .delayRequestHeadersUntilFirstFlush(i == 0) | 510 .delayRequestHeadersUntilFirstFlush(i == 0) |
519 .addHeader("foo", "bar") | 511 .addHeader("foo", "bar") |
520 .addHeader("empty", "") | 512 .addHeader("empty", "") |
521 .addHeader("Content-Type", "zebra") | 513 .addHeader("Content-Type", "zebra") |
522 .build(); | 514 .build(); |
523 stream.start(); | 515 stream.start(); |
524 callback.blockForDone(); | 516 callback.blockForDone(); |
525 assertTrue(stream.isDone()); | 517 assertTrue(stream.isDone()); |
526 | 518 |
(...skipping 14 matching lines...) Expand all Loading... | |
541 for (int i = 0; i < 2; i++) { | 533 for (int i = 0; i < 2; i++) { |
542 String url = Http2TestServer.getEchoStreamUrl(); | 534 String url = Http2TestServer.getEchoStreamUrl(); |
543 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); | 535 TestBidirectionalStreamCallback callback = new TestBidirectionalStre amCallback(); |
544 callback.addWriteData("Test String".getBytes(), false); | 536 callback.addWriteData("Test String".getBytes(), false); |
545 callback.addWriteData("1234567890".getBytes(), false); | 537 callback.addWriteData("1234567890".getBytes(), false); |
546 callback.addWriteData("woot!".getBytes(), true); | 538 callback.addWriteData("woot!".getBytes(), true); |
547 callback.addWriteData("Test String".getBytes(), false); | 539 callback.addWriteData("Test String".getBytes(), false); |
548 callback.addWriteData("1234567890".getBytes(), false); | 540 callback.addWriteData("1234567890".getBytes(), false); |
549 callback.addWriteData("woot!".getBytes(), true); | 541 callback.addWriteData("woot!".getBytes(), true); |
550 BidirectionalStream stream = | 542 BidirectionalStream stream = |
551 mTestFramework.mCronetEngine | 543 mCronetEngine |
552 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor()) | 544 .newBidirectionalStreamBuilder(url, callback, callba ck.getExecutor()) |
553 .delayRequestHeadersUntilFirstFlush(i == 0) | 545 .delayRequestHeadersUntilFirstFlush(i == 0) |
554 .addHeader("foo", "bar") | 546 .addHeader("foo", "bar") |
555 .addHeader("empty", "") | 547 .addHeader("empty", "") |
556 .addHeader("Content-Type", "zebra") | 548 .addHeader("Content-Type", "zebra") |
557 .build(); | 549 .build(); |
558 stream.start(); | 550 stream.start(); |
559 callback.blockForDone(); | 551 callback.blockForDone(); |
560 assertTrue(stream.isDone()); | 552 assertTrue(stream.isDone()); |
561 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 553 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
(...skipping 21 matching lines...) Expand all Loading... | |
583 @Override | 575 @Override |
584 public void onResponseHeadersReceived( | 576 public void onResponseHeadersReceived( |
585 BidirectionalStream stream, UrlResponseInfo info) { | 577 BidirectionalStream stream, UrlResponseInfo info) { |
586 // Do nothing. Skip readng. | 578 // Do nothing. Skip readng. |
587 } | 579 } |
588 }; | 580 }; |
589 callback.addWriteData("Test String".getBytes()); | 581 callback.addWriteData("Test String".getBytes()); |
590 callback.addWriteData("1234567890".getBytes()); | 582 callback.addWriteData("1234567890".getBytes()); |
591 callback.addWriteData("woot!".getBytes()); | 583 callback.addWriteData("woot!".getBytes()); |
592 BidirectionalStream stream = | 584 BidirectionalStream stream = |
593 mTestFramework.mCronetEngine | 585 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
594 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
595 .addHeader("foo", "bar") | 586 .addHeader("foo", "bar") |
596 .addHeader("empty", "") | 587 .addHeader("empty", "") |
597 .addHeader("Content-Type", "zebra") | 588 .addHeader("Content-Type", "zebra") |
598 .build(); | 589 .build(); |
599 stream.start(); | 590 stream.start(); |
600 callback.blockForDone(); | 591 callback.blockForDone(); |
601 assertTrue(stream.isDone()); | 592 assertTrue(stream.isDone()); |
602 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 593 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
603 assertEquals("Test String1234567890woot!", callback.mResponseAsString); | 594 assertEquals("Test String1234567890woot!", callback.mResponseAsString); |
604 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); | 595 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); |
(...skipping 18 matching lines...) Expand all Loading... | |
623 assertEquals(0, numPendingWrites()); | 614 assertEquals(0, numPendingWrites()); |
624 } | 615 } |
625 }; | 616 }; |
626 callback.addWriteData("Test String".getBytes(), false); | 617 callback.addWriteData("Test String".getBytes(), false); |
627 callback.addWriteData("1234567890".getBytes(), false); | 618 callback.addWriteData("1234567890".getBytes(), false); |
628 callback.addWriteData("woot!".getBytes(), true); | 619 callback.addWriteData("woot!".getBytes(), true); |
629 callback.addWriteData("Test String".getBytes(), false); | 620 callback.addWriteData("Test String".getBytes(), false); |
630 callback.addWriteData("1234567890".getBytes(), false); | 621 callback.addWriteData("1234567890".getBytes(), false); |
631 callback.addWriteData("woot!".getBytes(), true); | 622 callback.addWriteData("woot!".getBytes(), true); |
632 BidirectionalStream stream = | 623 BidirectionalStream stream = |
633 mTestFramework.mCronetEngine | 624 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
634 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
635 .addHeader("foo", "bar") | 625 .addHeader("foo", "bar") |
636 .addHeader("empty", "") | 626 .addHeader("empty", "") |
637 .addHeader("Content-Type", "zebra") | 627 .addHeader("Content-Type", "zebra") |
638 .build(); | 628 .build(); |
639 stream.start(); | 629 stream.start(); |
640 callback.blockForDone(); | 630 callback.blockForDone(); |
641 assertTrue(stream.isDone()); | 631 assertTrue(stream.isDone()); |
642 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 632 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
643 assertEquals( | 633 assertEquals( |
644 "Test String1234567890woot!Test String1234567890woot!", callback .mResponseAsString); | 634 "Test String1234567890woot!Test String1234567890woot!", callback .mResponseAsString); |
645 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); | 635 assertEquals("bar", callback.mResponseInfo.getAllHeaders().get("echo-foo ").get(0)); |
646 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty" ).get(0)); | 636 assertEquals("", callback.mResponseInfo.getAllHeaders().get("echo-empty" ).get(0)); |
647 assertEquals( | 637 assertEquals( |
648 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); | 638 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); |
649 } | 639 } |
650 | 640 |
651 @SmallTest | 641 @SmallTest |
652 @Feature({"Cronet"}) | 642 @Feature({"Cronet"}) |
653 @OnlyRunNativeCronet | 643 @OnlyRunNativeCronet |
654 public void testSimplePut() throws Exception { | 644 public void testSimplePut() throws Exception { |
655 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 645 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
656 callback.addWriteData("Put This Data!".getBytes()); | 646 callback.addWriteData("Put This Data!".getBytes()); |
657 String methodName = "PUT"; | 647 String methodName = "PUT"; |
658 BidirectionalStream.Builder builder = | 648 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
659 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 649 Http2TestServer.getServerUrl(), callback, callback.getExecutor() ); |
660 Http2TestServer.getServerUrl(), callback, callback.getEx ecutor()); | |
661 builder.setHttpMethod(methodName); | 650 builder.setHttpMethod(methodName); |
662 builder.build().start(); | 651 builder.build().start(); |
663 callback.blockForDone(); | 652 callback.blockForDone(); |
664 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 653 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
665 assertEquals("Put This Data!", callback.mResponseAsString); | 654 assertEquals("Put This Data!", callback.mResponseAsString); |
666 assertEquals(methodName, callback.mResponseInfo.getAllHeaders().get("ech o-method").get(0)); | 655 assertEquals(methodName, callback.mResponseInfo.getAllHeaders().get("ech o-method").get(0)); |
667 } | 656 } |
668 | 657 |
669 @SmallTest | 658 @SmallTest |
670 @Feature({"Cronet"}) | 659 @Feature({"Cronet"}) |
671 @OnlyRunNativeCronet | 660 @OnlyRunNativeCronet |
672 public void testBadMethod() throws Exception { | 661 public void testBadMethod() throws Exception { |
673 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 662 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
674 BidirectionalStream.Builder builder = | 663 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
675 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 664 Http2TestServer.getServerUrl(), callback, callback.getExecutor() ); |
676 Http2TestServer.getServerUrl(), callback, callback.getEx ecutor()); | |
677 try { | 665 try { |
678 builder.setHttpMethod("bad:method!"); | 666 builder.setHttpMethod("bad:method!"); |
679 builder.build().start(); | 667 builder.build().start(); |
680 fail("IllegalArgumentException not thrown."); | 668 fail("IllegalArgumentException not thrown."); |
681 } catch (IllegalArgumentException e) { | 669 } catch (IllegalArgumentException e) { |
682 assertEquals("Invalid http method bad:method!", e.getMessage()); | 670 assertEquals("Invalid http method bad:method!", e.getMessage()); |
683 } | 671 } |
684 } | 672 } |
685 | 673 |
686 @SmallTest | 674 @SmallTest |
687 @Feature({"Cronet"}) | 675 @Feature({"Cronet"}) |
688 @OnlyRunNativeCronet | 676 @OnlyRunNativeCronet |
689 public void testBadHeaderName() throws Exception { | 677 public void testBadHeaderName() throws Exception { |
690 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 678 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
691 BidirectionalStream.Builder builder = | 679 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
692 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 680 Http2TestServer.getServerUrl(), callback, callback.getExecutor() ); |
693 Http2TestServer.getServerUrl(), callback, callback.getEx ecutor()); | |
694 try { | 681 try { |
695 builder.addHeader("goodheader1", "headervalue"); | 682 builder.addHeader("goodheader1", "headervalue"); |
696 builder.addHeader("header:name", "headervalue"); | 683 builder.addHeader("header:name", "headervalue"); |
697 builder.addHeader("goodheader2", "headervalue"); | 684 builder.addHeader("goodheader2", "headervalue"); |
698 builder.build().start(); | 685 builder.build().start(); |
699 fail("IllegalArgumentException not thrown."); | 686 fail("IllegalArgumentException not thrown."); |
700 } catch (IllegalArgumentException e) { | 687 } catch (IllegalArgumentException e) { |
701 assertEquals("Invalid header header:name=headervalue", e.getMessage( )); | 688 assertEquals("Invalid header header:name=headervalue", e.getMessage( )); |
702 } | 689 } |
703 } | 690 } |
704 | 691 |
705 @SmallTest | 692 @SmallTest |
706 @Feature({"Cronet"}) | 693 @Feature({"Cronet"}) |
707 @OnlyRunNativeCronet | 694 @OnlyRunNativeCronet |
708 public void testBadHeaderValue() throws Exception { | 695 public void testBadHeaderValue() throws Exception { |
709 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 696 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
710 BidirectionalStream.Builder builder = | 697 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
711 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 698 Http2TestServer.getServerUrl(), callback, callback.getExecutor() ); |
712 Http2TestServer.getServerUrl(), callback, callback.getEx ecutor()); | |
713 try { | 699 try { |
714 builder.addHeader("headername", "bad header\r\nvalue"); | 700 builder.addHeader("headername", "bad header\r\nvalue"); |
715 builder.build().start(); | 701 builder.build().start(); |
716 fail("IllegalArgumentException not thrown."); | 702 fail("IllegalArgumentException not thrown."); |
717 } catch (IllegalArgumentException e) { | 703 } catch (IllegalArgumentException e) { |
718 assertEquals("Invalid header headername=bad header\r\nvalue", e.getM essage()); | 704 assertEquals("Invalid header headername=bad header\r\nvalue", e.getM essage()); |
719 } | 705 } |
720 } | 706 } |
721 | 707 |
722 @SmallTest | 708 @SmallTest |
723 @Feature({"Cronet"}) | 709 @Feature({"Cronet"}) |
724 @OnlyRunNativeCronet | 710 @OnlyRunNativeCronet |
725 public void testAddHeader() throws Exception { | 711 public void testAddHeader() throws Exception { |
726 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 712 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
727 String headerName = "header-name"; | 713 String headerName = "header-name"; |
728 String headerValue = "header-value"; | 714 String headerValue = "header-value"; |
729 BidirectionalStream.Builder builder = | 715 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
730 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 716 Http2TestServer.getEchoHeaderUrl(headerName), callback, callback .getExecutor()); |
731 Http2TestServer.getEchoHeaderUrl(headerName), callback, | |
732 callback.getExecutor()); | |
733 builder.addHeader(headerName, headerValue); | 717 builder.addHeader(headerName, headerValue); |
734 builder.setHttpMethod("GET"); | 718 builder.setHttpMethod("GET"); |
735 builder.build().start(); | 719 builder.build().start(); |
736 callback.blockForDone(); | 720 callback.blockForDone(); |
737 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 721 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
738 assertEquals(headerValue, callback.mResponseAsString); | 722 assertEquals(headerValue, callback.mResponseAsString); |
739 } | 723 } |
740 | 724 |
741 @SmallTest | 725 @SmallTest |
742 @Feature({"Cronet"}) | 726 @Feature({"Cronet"}) |
743 @OnlyRunNativeCronet | 727 @OnlyRunNativeCronet |
744 public void testMultiRequestHeaders() throws Exception { | 728 public void testMultiRequestHeaders() throws Exception { |
745 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 729 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
746 String headerName = "header-name"; | 730 String headerName = "header-name"; |
747 String headerValue1 = "header-value1"; | 731 String headerValue1 = "header-value1"; |
748 String headerValue2 = "header-value2"; | 732 String headerValue2 = "header-value2"; |
749 BidirectionalStream.Builder builder = | 733 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
750 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 734 Http2TestServer.getEchoAllHeadersUrl(), callback, callback.getEx ecutor()); |
751 Http2TestServer.getEchoAllHeadersUrl(), callback, callba ck.getExecutor()); | |
752 builder.addHeader(headerName, headerValue1); | 735 builder.addHeader(headerName, headerValue1); |
753 builder.addHeader(headerName, headerValue2); | 736 builder.addHeader(headerName, headerValue2); |
754 builder.setHttpMethod("GET"); | 737 builder.setHttpMethod("GET"); |
755 builder.build().start(); | 738 builder.build().start(); |
756 callback.blockForDone(); | 739 callback.blockForDone(); |
757 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 740 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
758 String headers = callback.mResponseAsString; | 741 String headers = callback.mResponseAsString; |
759 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); | 742 Pattern pattern = Pattern.compile(headerName + ":\\s(.*)\\r\\n"); |
760 Matcher matcher = pattern.matcher(headers); | 743 Matcher matcher = pattern.matcher(headers); |
761 List<String> actualValues = new ArrayList<String>(); | 744 List<String> actualValues = new ArrayList<String>(); |
762 while (matcher.find()) { | 745 while (matcher.find()) { |
763 actualValues.add(matcher.group(1)); | 746 actualValues.add(matcher.group(1)); |
764 } | 747 } |
765 assertEquals(1, actualValues.size()); | 748 assertEquals(1, actualValues.size()); |
766 assertEquals("header-value2", actualValues.get(0)); | 749 assertEquals("header-value2", actualValues.get(0)); |
767 } | 750 } |
768 | 751 |
769 @SmallTest | 752 @SmallTest |
770 @Feature({"Cronet"}) | 753 @Feature({"Cronet"}) |
771 @OnlyRunNativeCronet | 754 @OnlyRunNativeCronet |
772 public void testEchoTrailers() throws Exception { | 755 public void testEchoTrailers() throws Exception { |
773 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 756 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
774 String headerName = "header-name"; | 757 String headerName = "header-name"; |
775 String headerValue = "header-value"; | 758 String headerValue = "header-value"; |
776 BidirectionalStream.Builder builder = | 759 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
777 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 760 Http2TestServer.getEchoTrailersUrl(), callback, callback.getExec utor()); |
778 Http2TestServer.getEchoTrailersUrl(), callback, callback .getExecutor()); | |
779 builder.addHeader(headerName, headerValue); | 761 builder.addHeader(headerName, headerValue); |
780 builder.setHttpMethod("GET"); | 762 builder.setHttpMethod("GET"); |
781 builder.build().start(); | 763 builder.build().start(); |
782 callback.blockForDone(); | 764 callback.blockForDone(); |
783 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 765 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
784 assertNotNull(callback.mTrailers); | 766 assertNotNull(callback.mTrailers); |
785 // Verify that header value is properly echoed in trailers. | 767 // Verify that header value is properly echoed in trailers. |
786 assertEquals(headerValue, callback.mTrailers.getAsMap().get("echo-" + he aderName).get(0)); | 768 assertEquals(headerValue, callback.mTrailers.getAsMap().get("echo-" + he aderName).get(0)); |
787 } | 769 } |
788 | 770 |
789 @SmallTest | 771 @SmallTest |
790 @Feature({"Cronet"}) | 772 @Feature({"Cronet"}) |
791 @OnlyRunNativeCronet | 773 @OnlyRunNativeCronet |
792 public void testCustomUserAgent() throws Exception { | 774 public void testCustomUserAgent() throws Exception { |
793 String userAgentName = "User-Agent"; | 775 String userAgentName = "User-Agent"; |
794 String userAgentValue = "User-Agent-Value"; | 776 String userAgentValue = "User-Agent-Value"; |
795 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 777 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
796 BidirectionalStream.Builder builder = | 778 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
797 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 779 Http2TestServer.getEchoHeaderUrl(userAgentName), callback, callb ack.getExecutor()); |
798 Http2TestServer.getEchoHeaderUrl(userAgentName), callbac k, | |
799 callback.getExecutor()); | |
800 builder.setHttpMethod("GET"); | 780 builder.setHttpMethod("GET"); |
801 builder.addHeader(userAgentName, userAgentValue); | 781 builder.addHeader(userAgentName, userAgentValue); |
802 builder.build().start(); | 782 builder.build().start(); |
803 callback.blockForDone(); | 783 callback.blockForDone(); |
804 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 784 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
805 assertEquals(userAgentValue, callback.mResponseAsString); | 785 assertEquals(userAgentValue, callback.mResponseAsString); |
806 } | 786 } |
807 | 787 |
808 @SmallTest | 788 @SmallTest |
809 @Feature({"Cronet"}) | 789 @Feature({"Cronet"}) |
(...skipping 16 matching lines...) Expand all Loading... | |
826 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 806 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
827 assertEquals(userAgentValue, callback.mResponseAsString); | 807 assertEquals(userAgentValue, callback.mResponseAsString); |
828 } | 808 } |
829 | 809 |
830 @SmallTest | 810 @SmallTest |
831 @Feature({"Cronet"}) | 811 @Feature({"Cronet"}) |
832 @OnlyRunNativeCronet | 812 @OnlyRunNativeCronet |
833 public void testDefaultUserAgent() throws Exception { | 813 public void testDefaultUserAgent() throws Exception { |
834 String userAgentName = "User-Agent"; | 814 String userAgentName = "User-Agent"; |
835 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 815 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
836 BidirectionalStream.Builder builder = | 816 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
837 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 817 Http2TestServer.getEchoHeaderUrl(userAgentName), callback, callb ack.getExecutor()); |
838 Http2TestServer.getEchoHeaderUrl(userAgentName), callbac k, | |
839 callback.getExecutor()); | |
840 builder.setHttpMethod("GET"); | 818 builder.setHttpMethod("GET"); |
841 builder.build().start(); | 819 builder.build().start(); |
842 callback.blockForDone(); | 820 callback.blockForDone(); |
843 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 821 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
844 assertEquals(new CronetEngine.Builder(getContext()).getDefaultUserAgent( ), | 822 assertEquals(new CronetEngine.Builder(getContext()).getDefaultUserAgent( ), |
845 callback.mResponseAsString); | 823 callback.mResponseAsString); |
846 } | 824 } |
847 | 825 |
848 @SmallTest | 826 @SmallTest |
849 @Feature({"Cronet"}) | 827 @Feature({"Cronet"}) |
850 @OnlyRunNativeCronet | 828 @OnlyRunNativeCronet |
851 public void testEchoStream() throws Exception { | 829 public void testEchoStream() throws Exception { |
852 String url = Http2TestServer.getEchoStreamUrl(); | 830 String url = Http2TestServer.getEchoStreamUrl(); |
853 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 831 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
854 String[] testData = {"Test String", createLongString("1234567890", 50000 ), "woot!"}; | 832 String[] testData = {"Test String", createLongString("1234567890", 50000 ), "woot!"}; |
855 StringBuilder stringData = new StringBuilder(); | 833 StringBuilder stringData = new StringBuilder(); |
856 for (String writeData : testData) { | 834 for (String writeData : testData) { |
857 callback.addWriteData(writeData.getBytes()); | 835 callback.addWriteData(writeData.getBytes()); |
858 stringData.append(writeData); | 836 stringData.append(writeData); |
859 } | 837 } |
860 // Create stream. | 838 // Create stream. |
861 BidirectionalStream stream = | 839 BidirectionalStream stream = |
862 mTestFramework.mCronetEngine | 840 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
863 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
864 .addHeader("foo", "Value with Spaces") | 841 .addHeader("foo", "Value with Spaces") |
865 .addHeader("Content-Type", "zebra") | 842 .addHeader("Content-Type", "zebra") |
866 .build(); | 843 .build(); |
867 stream.start(); | 844 stream.start(); |
868 callback.blockForDone(); | 845 callback.blockForDone(); |
869 assertTrue(stream.isDone()); | 846 assertTrue(stream.isDone()); |
870 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 847 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
871 assertEquals(stringData.toString(), callback.mResponseAsString); | 848 assertEquals(stringData.toString(), callback.mResponseAsString); |
872 assertEquals( | 849 assertEquals( |
873 "Value with Spaces", callback.mResponseInfo.getAllHeaders().get( "echo-foo").get(0)); | 850 "Value with Spaces", callback.mResponseInfo.getAllHeaders().get( "echo-foo").get(0)); |
874 assertEquals( | 851 assertEquals( |
875 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); | 852 "zebra", callback.mResponseInfo.getAllHeaders().get("echo-conten t-type").get(0)); |
876 } | 853 } |
877 | 854 |
878 @SmallTest | 855 @SmallTest |
879 @Feature({"Cronet"}) | 856 @Feature({"Cronet"}) |
880 @OnlyRunNativeCronet | 857 @OnlyRunNativeCronet |
881 public void testEchoStreamEmptyWrite() throws Exception { | 858 public void testEchoStreamEmptyWrite() throws Exception { |
882 String url = Http2TestServer.getEchoStreamUrl(); | 859 String url = Http2TestServer.getEchoStreamUrl(); |
883 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 860 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
884 callback.addWriteData(new byte[0]); | 861 callback.addWriteData(new byte[0]); |
885 // Create stream. | 862 // Create stream. |
886 BidirectionalStream stream = | 863 BidirectionalStream stream = |
887 mTestFramework.mCronetEngine | 864 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
888 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
889 .build(); | 865 .build(); |
890 stream.start(); | 866 stream.start(); |
891 callback.blockForDone(); | 867 callback.blockForDone(); |
892 assertTrue(stream.isDone()); | 868 assertTrue(stream.isDone()); |
893 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 869 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
894 assertEquals("", callback.mResponseAsString); | 870 assertEquals("", callback.mResponseAsString); |
895 } | 871 } |
896 | 872 |
897 @SmallTest | 873 @SmallTest |
898 @Feature({"Cronet"}) | 874 @Feature({"Cronet"}) |
899 @OnlyRunNativeCronet | 875 @OnlyRunNativeCronet |
900 public void testDoubleWrite() throws Exception { | 876 public void testDoubleWrite() throws Exception { |
901 String url = Http2TestServer.getEchoStreamUrl(); | 877 String url = Http2TestServer.getEchoStreamUrl(); |
902 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback() { | 878 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback() { |
903 @Override | 879 @Override |
904 public void onStreamReady(BidirectionalStream stream) { | 880 public void onStreamReady(BidirectionalStream stream) { |
905 // super class will call Write() once. | 881 // super class will call Write() once. |
906 super.onStreamReady(stream); | 882 super.onStreamReady(stream); |
907 // Call Write() again. | 883 // Call Write() again. |
908 startNextWrite(stream); | 884 startNextWrite(stream); |
909 // Make sure there is no pending write. | 885 // Make sure there is no pending write. |
910 assertEquals(0, numPendingWrites()); | 886 assertEquals(0, numPendingWrites()); |
911 } | 887 } |
912 }; | 888 }; |
913 callback.addWriteData("1".getBytes()); | 889 callback.addWriteData("1".getBytes()); |
914 callback.addWriteData("2".getBytes()); | 890 callback.addWriteData("2".getBytes()); |
915 // Create stream. | 891 // Create stream. |
916 BidirectionalStream stream = | 892 BidirectionalStream stream = |
917 mTestFramework.mCronetEngine | 893 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
918 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
919 .build(); | 894 .build(); |
920 stream.start(); | 895 stream.start(); |
921 callback.blockForDone(); | 896 callback.blockForDone(); |
922 assertTrue(stream.isDone()); | 897 assertTrue(stream.isDone()); |
923 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 898 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
924 assertEquals("12", callback.mResponseAsString); | 899 assertEquals("12", callback.mResponseAsString); |
925 } | 900 } |
926 | 901 |
927 @SmallTest | 902 @SmallTest |
928 @Feature({"Cronet"}) | 903 @Feature({"Cronet"}) |
(...skipping 13 matching lines...) Expand all Loading... | |
942 fail("Exception is not thrown."); | 917 fail("Exception is not thrown."); |
943 } catch (Exception e) { | 918 } catch (Exception e) { |
944 assertEquals("Unexpected read attempt.", e.getMessage()); | 919 assertEquals("Unexpected read attempt.", e.getMessage()); |
945 } | 920 } |
946 } | 921 } |
947 }; | 922 }; |
948 callback.addWriteData("1".getBytes()); | 923 callback.addWriteData("1".getBytes()); |
949 callback.addWriteData("2".getBytes()); | 924 callback.addWriteData("2".getBytes()); |
950 // Create stream. | 925 // Create stream. |
951 BidirectionalStream stream = | 926 BidirectionalStream stream = |
952 mTestFramework.mCronetEngine | 927 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
953 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
954 .build(); | 928 .build(); |
955 stream.start(); | 929 stream.start(); |
956 callback.blockForDone(); | 930 callback.blockForDone(); |
957 assertTrue(stream.isDone()); | 931 assertTrue(stream.isDone()); |
958 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 932 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
959 assertEquals("12", callback.mResponseAsString); | 933 assertEquals("12", callback.mResponseAsString); |
960 } | 934 } |
961 | 935 |
962 @SmallTest | 936 @SmallTest |
963 @Feature({"Cronet"}) | 937 @Feature({"Cronet"}) |
964 @OnlyRunNativeCronet | 938 @OnlyRunNativeCronet |
965 @DisabledTest(message = "Disabled due to timeout. See crbug.com/591112") | 939 @DisabledTest(message = "Disabled due to timeout. See crbug.com/591112") |
966 public void testReadAndWrite() throws Exception { | 940 public void testReadAndWrite() throws Exception { |
967 String url = Http2TestServer.getEchoStreamUrl(); | 941 String url = Http2TestServer.getEchoStreamUrl(); |
968 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback() { | 942 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback() { |
969 @Override | 943 @Override |
970 public void onResponseHeadersReceived( | 944 public void onResponseHeadersReceived( |
971 BidirectionalStream stream, UrlResponseInfo info) { | 945 BidirectionalStream stream, UrlResponseInfo info) { |
972 // Start the write, that will not complete until callback comple tion. | 946 // Start the write, that will not complete until callback comple tion. |
973 startNextWrite(stream); | 947 startNextWrite(stream); |
974 // Start the read. It is allowed with write in flight. | 948 // Start the read. It is allowed with write in flight. |
975 super.onResponseHeadersReceived(stream, info); | 949 super.onResponseHeadersReceived(stream, info); |
976 } | 950 } |
977 }; | 951 }; |
978 callback.setAutoAdvance(false); | 952 callback.setAutoAdvance(false); |
979 callback.addWriteData("1".getBytes()); | 953 callback.addWriteData("1".getBytes()); |
980 callback.addWriteData("2".getBytes()); | 954 callback.addWriteData("2".getBytes()); |
981 // Create stream. | 955 // Create stream. |
982 BidirectionalStream stream = | 956 BidirectionalStream stream = |
983 mTestFramework.mCronetEngine | 957 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
984 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
985 .build(); | 958 .build(); |
986 stream.start(); | 959 stream.start(); |
987 callback.waitForNextWriteStep(); | 960 callback.waitForNextWriteStep(); |
988 callback.waitForNextReadStep(); | 961 callback.waitForNextReadStep(); |
989 callback.startNextRead(stream); | 962 callback.startNextRead(stream); |
990 callback.setAutoAdvance(true); | 963 callback.setAutoAdvance(true); |
991 callback.blockForDone(); | 964 callback.blockForDone(); |
992 assertTrue(stream.isDone()); | 965 assertTrue(stream.isDone()); |
993 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 966 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
994 assertEquals("12", callback.mResponseAsString); | 967 assertEquals("12", callback.mResponseAsString); |
995 } | 968 } |
996 | 969 |
997 @SmallTest | 970 @SmallTest |
998 @Feature({"Cronet"}) | 971 @Feature({"Cronet"}) |
999 @OnlyRunNativeCronet | 972 @OnlyRunNativeCronet |
1000 public void testEchoStreamWriteFirst() throws Exception { | 973 public void testEchoStreamWriteFirst() throws Exception { |
1001 String url = Http2TestServer.getEchoStreamUrl(); | 974 String url = Http2TestServer.getEchoStreamUrl(); |
1002 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 975 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1003 callback.setAutoAdvance(false); | 976 callback.setAutoAdvance(false); |
1004 String[] testData = {"a", "bb", "ccc", "Test String", "1234567890", "woo t!"}; | 977 String[] testData = {"a", "bb", "ccc", "Test String", "1234567890", "woo t!"}; |
1005 StringBuilder stringData = new StringBuilder(); | 978 StringBuilder stringData = new StringBuilder(); |
1006 for (String writeData : testData) { | 979 for (String writeData : testData) { |
1007 callback.addWriteData(writeData.getBytes()); | 980 callback.addWriteData(writeData.getBytes()); |
1008 stringData.append(writeData); | 981 stringData.append(writeData); |
1009 } | 982 } |
1010 // Create stream. | 983 // Create stream. |
1011 BidirectionalStream stream = | 984 BidirectionalStream stream = |
1012 mTestFramework.mCronetEngine | 985 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
1013 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
1014 .build(); | 986 .build(); |
1015 stream.start(); | 987 stream.start(); |
1016 // Write first. | 988 // Write first. |
1017 callback.waitForNextWriteStep(); // onStreamReady | 989 callback.waitForNextWriteStep(); // onStreamReady |
1018 for (String expected : testData) { | 990 for (String expected : testData) { |
1019 // Write next chunk of test data. | 991 // Write next chunk of test data. |
1020 callback.startNextWrite(stream); | 992 callback.startNextWrite(stream); |
1021 callback.waitForNextWriteStep(); // onWriteCompleted | 993 callback.waitForNextWriteStep(); // onWriteCompleted |
1022 } | 994 } |
1023 | 995 |
(...skipping 23 matching lines...) Expand all Loading... | |
1047 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 1019 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1048 callback.setAutoAdvance(false); | 1020 callback.setAutoAdvance(false); |
1049 String[] testData = {"a", "bb", "ccc", "Test String", "1234567890", "woo t!"}; | 1021 String[] testData = {"a", "bb", "ccc", "Test String", "1234567890", "woo t!"}; |
1050 StringBuilder stringData = new StringBuilder(); | 1022 StringBuilder stringData = new StringBuilder(); |
1051 for (String writeData : testData) { | 1023 for (String writeData : testData) { |
1052 callback.addWriteData(writeData.getBytes()); | 1024 callback.addWriteData(writeData.getBytes()); |
1053 stringData.append(writeData); | 1025 stringData.append(writeData); |
1054 } | 1026 } |
1055 // Create stream. | 1027 // Create stream. |
1056 BidirectionalStream stream = | 1028 BidirectionalStream stream = |
1057 mTestFramework.mCronetEngine | 1029 mCronetEngine.newBidirectionalStreamBuilder(url, callback, callb ack.getExecutor()) |
1058 .newBidirectionalStreamBuilder(url, callback, callback.g etExecutor()) | |
1059 .build(); | 1030 .build(); |
1060 stream.start(); | 1031 stream.start(); |
1061 callback.waitForNextWriteStep(); | 1032 callback.waitForNextWriteStep(); |
1062 callback.waitForNextReadStep(); | 1033 callback.waitForNextReadStep(); |
1063 | 1034 |
1064 for (String expected : testData) { | 1035 for (String expected : testData) { |
1065 // Write next chunk of test data. | 1036 // Write next chunk of test data. |
1066 callback.startNextWrite(stream); | 1037 callback.startNextWrite(stream); |
1067 callback.waitForNextWriteStep(); | 1038 callback.waitForNextWriteStep(); |
1068 | 1039 |
(...skipping 16 matching lines...) Expand all Loading... | |
1085 /** | 1056 /** |
1086 * Checks that the buffer is updated correctly, when starting at an offset. | 1057 * Checks that the buffer is updated correctly, when starting at an offset. |
1087 */ | 1058 */ |
1088 @SmallTest | 1059 @SmallTest |
1089 @Feature({"Cronet"}) | 1060 @Feature({"Cronet"}) |
1090 @OnlyRunNativeCronet | 1061 @OnlyRunNativeCronet |
1091 public void testSimpleGetBufferUpdates() throws Exception { | 1062 public void testSimpleGetBufferUpdates() throws Exception { |
1092 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 1063 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1093 callback.setAutoAdvance(false); | 1064 callback.setAutoAdvance(false); |
1094 // Since the method is "GET", the expected response body is also "GET". | 1065 // Since the method is "GET", the expected response body is also "GET". |
1095 BidirectionalStream.Builder builder = | 1066 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1096 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1067 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1097 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1098 BidirectionalStream stream = builder.setHttpMethod("GET").build(); | 1068 BidirectionalStream stream = builder.setHttpMethod("GET").build(); |
1099 stream.start(); | 1069 stream.start(); |
1100 callback.waitForNextReadStep(); | 1070 callback.waitForNextReadStep(); |
1101 | 1071 |
1102 assertEquals(null, callback.mError); | 1072 assertEquals(null, callback.mError); |
1103 assertFalse(callback.isDone()); | 1073 assertFalse(callback.isDone()); |
1104 assertEquals(TestBidirectionalStreamCallback.ResponseStep.ON_RESPONSE_ST ARTED, | 1074 assertEquals(TestBidirectionalStreamCallback.ResponseStep.ON_RESPONSE_ST ARTED, |
1105 callback.mResponseStep); | 1075 callback.mResponseStep); |
1106 | 1076 |
1107 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); | 1077 ByteBuffer readBuffer = ByteBuffer.allocateDirect(5); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1178 // first response HEADERS frame. | 1148 // first response HEADERS frame. |
1179 runSimpleGetWithExpectedReceivedByteCount(27); | 1149 runSimpleGetWithExpectedReceivedByteCount(27); |
1180 } | 1150 } |
1181 | 1151 |
1182 @SmallTest | 1152 @SmallTest |
1183 @Feature({"Cronet"}) | 1153 @Feature({"Cronet"}) |
1184 @OnlyRunNativeCronet | 1154 @OnlyRunNativeCronet |
1185 public void testBadBuffers() throws Exception { | 1155 public void testBadBuffers() throws Exception { |
1186 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 1156 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1187 callback.setAutoAdvance(false); | 1157 callback.setAutoAdvance(false); |
1188 BidirectionalStream.Builder builder = | 1158 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1189 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1159 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1190 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1191 BidirectionalStream stream = builder.setHttpMethod("GET").build(); | 1160 BidirectionalStream stream = builder.setHttpMethod("GET").build(); |
1192 stream.start(); | 1161 stream.start(); |
1193 callback.waitForNextReadStep(); | 1162 callback.waitForNextReadStep(); |
1194 | 1163 |
1195 assertEquals(null, callback.mError); | 1164 assertEquals(null, callback.mError); |
1196 assertFalse(callback.isDone()); | 1165 assertFalse(callback.isDone()); |
1197 assertEquals(TestBidirectionalStreamCallback.ResponseStep.ON_RESPONSE_ST ARTED, | 1166 assertEquals(TestBidirectionalStreamCallback.ResponseStep.ON_RESPONSE_ST ARTED, |
1198 callback.mResponseStep); | 1167 callback.mResponseStep); |
1199 | 1168 |
1200 // Try to read using a full buffer. | 1169 // Try to read using a full buffer. |
(...skipping 24 matching lines...) Expand all Loading... | |
1225 assertEquals("GET", callback.mResponseAsString); | 1194 assertEquals("GET", callback.mResponseAsString); |
1226 } | 1195 } |
1227 | 1196 |
1228 private void throwOrCancel( | 1197 private void throwOrCancel( |
1229 FailureType failureType, ResponseStep failureStep, boolean expectErr or) { | 1198 FailureType failureType, ResponseStep failureStep, boolean expectErr or) { |
1230 // Use a fresh CronetEngine each time so Http2 session is not reused. | 1199 // Use a fresh CronetEngine each time so Http2 session is not reused. |
1231 ExperimentalCronetEngine.Builder builder = | 1200 ExperimentalCronetEngine.Builder builder = |
1232 new ExperimentalCronetEngine.Builder(getContext()); | 1201 new ExperimentalCronetEngine.Builder(getContext()); |
1233 CronetTestUtil.setMockCertVerifierForTesting( | 1202 CronetTestUtil.setMockCertVerifierForTesting( |
1234 builder, QuicTestServer.createMockCertVerifier()); | 1203 builder, QuicTestServer.createMockCertVerifier()); |
1235 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder); | 1204 mCronetEngine = builder.build(); |
1236 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 1205 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1237 callback.setFailure(failureType, failureStep); | 1206 callback.setFailure(failureType, failureStep); |
1238 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | 1207 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); |
1239 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | 1208 mCronetEngine.addRequestFinishedListener(requestFinishedListener); |
1240 BidirectionalStream.Builder streamBuilder = | 1209 BidirectionalStream.Builder streamBuilder = mCronetEngine.newBidirection alStreamBuilder( |
1241 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1210 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1242 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1243 BidirectionalStream stream = streamBuilder.setHttpMethod("GET").build(); | 1211 BidirectionalStream stream = streamBuilder.setHttpMethod("GET").build(); |
1244 Date startTime = new Date(); | 1212 Date startTime = new Date(); |
1245 stream.start(); | 1213 stream.start(); |
1246 callback.blockForDone(); | 1214 callback.blockForDone(); |
1247 assertTrue(stream.isDone()); | 1215 assertTrue(stream.isDone()); |
1248 requestFinishedListener.blockUntilDone(); | 1216 requestFinishedListener.blockUntilDone(); |
1249 Date endTime = new Date(); | 1217 Date endTime = new Date(); |
1250 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o(); | 1218 RequestFinishedInfo finishedInfo = requestFinishedListener.getRequestInf o(); |
1251 RequestFinishedInfo.Metrics metrics = finishedInfo.getMetrics(); | 1219 RequestFinishedInfo.Metrics metrics = finishedInfo.getMetrics(); |
1252 assertNotNull(metrics); | 1220 assertNotNull(metrics); |
(...skipping 28 matching lines...) Expand all Loading... | |
1281 assertNotNull(finishedInfo.getException()); | 1249 assertNotNull(finishedInfo.getException()); |
1282 assertEquals(RequestFinishedInfo.FAILED, finishedInfo.getFinishedRea son()); | 1250 assertEquals(RequestFinishedInfo.FAILED, finishedInfo.getFinishedRea son()); |
1283 } else { | 1251 } else { |
1284 assertNull(finishedInfo.getException()); | 1252 assertNull(finishedInfo.getException()); |
1285 assertEquals(RequestFinishedInfo.CANCELED, finishedInfo.getFinishedR eason()); | 1253 assertEquals(RequestFinishedInfo.CANCELED, finishedInfo.getFinishedR eason()); |
1286 } | 1254 } |
1287 assertEquals(failureType == FailureType.CANCEL_SYNC | 1255 assertEquals(failureType == FailureType.CANCEL_SYNC |
1288 || failureType == FailureType.CANCEL_ASYNC | 1256 || failureType == FailureType.CANCEL_ASYNC |
1289 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE , | 1257 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE , |
1290 callback.mOnCanceledCalled); | 1258 callback.mOnCanceledCalled); |
1291 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener); | 1259 mCronetEngine.removeRequestFinishedListener(requestFinishedListener); |
1292 } | 1260 } |
1293 | 1261 |
1294 @SmallTest | 1262 @SmallTest |
1295 @Feature({"Cronet"}) | 1263 @Feature({"Cronet"}) |
1296 @OnlyRunNativeCronet | 1264 @OnlyRunNativeCronet |
1297 public void testFailures() throws Exception { | 1265 public void testFailures() throws Exception { |
1298 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_STREAM_READY, fal se); | 1266 throwOrCancel(FailureType.CANCEL_SYNC, ResponseStep.ON_STREAM_READY, fal se); |
1299 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_STREAM_READY, fa lse); | 1267 throwOrCancel(FailureType.CANCEL_ASYNC, ResponseStep.ON_STREAM_READY, fa lse); |
1300 throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_ST REAM_READY, false); | 1268 throwOrCancel(FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_ST REAM_READY, false); |
1301 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_STREAM_READY, true ); | 1269 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_STREAM_READY, true ); |
(...skipping 10 matching lines...) Expand all Loading... | |
1312 FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_READ_COM PLETED, false); | 1280 FailureType.CANCEL_ASYNC_WITHOUT_PAUSE, ResponseStep.ON_READ_COM PLETED, false); |
1313 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, tr ue); | 1281 throwOrCancel(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLETED, tr ue); |
1314 } | 1282 } |
1315 | 1283 |
1316 @SmallTest | 1284 @SmallTest |
1317 @Feature({"Cronet"}) | 1285 @Feature({"Cronet"}) |
1318 @OnlyRunNativeCronet | 1286 @OnlyRunNativeCronet |
1319 public void testThrowOnSucceeded() { | 1287 public void testThrowOnSucceeded() { |
1320 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 1288 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1321 callback.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); | 1289 callback.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_SUCCEEDED); |
1322 BidirectionalStream.Builder builder = | 1290 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1323 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1291 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1324 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1325 BidirectionalStream stream = builder.setHttpMethod("GET").build(); | 1292 BidirectionalStream stream = builder.setHttpMethod("GET").build(); |
1326 stream.start(); | 1293 stream.start(); |
1327 callback.blockForDone(); | 1294 callback.blockForDone(); |
1328 assertEquals(callback.mResponseStep, ResponseStep.ON_SUCCEEDED); | 1295 assertEquals(callback.mResponseStep, ResponseStep.ON_SUCCEEDED); |
1329 assertTrue(stream.isDone()); | 1296 assertTrue(stream.isDone()); |
1330 assertNotNull(callback.mResponseInfo); | 1297 assertNotNull(callback.mResponseInfo); |
1331 // Check that error thrown from 'onSucceeded' callback is not reported. | 1298 // Check that error thrown from 'onSucceeded' callback is not reported. |
1332 assertNull(callback.mError); | 1299 assertNull(callback.mError); |
1333 assertFalse(callback.mOnErrorCalled); | 1300 assertFalse(callback.mOnErrorCalled); |
1334 } | 1301 } |
1335 | 1302 |
1336 @SmallTest | 1303 @SmallTest |
1337 @Feature({"Cronet"}) | 1304 @Feature({"Cronet"}) |
1338 @OnlyRunNativeCronet | 1305 @OnlyRunNativeCronet |
1339 public void testExecutorShutdownBeforeStreamIsDone() { | 1306 public void testExecutorShutdownBeforeStreamIsDone() { |
1340 // Test that stream is destroyed even if executor is shut down and rejec ts posting tasks. | 1307 // Test that stream is destroyed even if executor is shut down and rejec ts posting tasks. |
1341 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); | 1308 TestBidirectionalStreamCallback callback = new TestBidirectionalStreamCa llback(); |
1342 callback.setAutoAdvance(false); | 1309 callback.setAutoAdvance(false); |
1343 BidirectionalStream.Builder builder = | 1310 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1344 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1311 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1345 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1346 CronetBidirectionalStream stream = | 1312 CronetBidirectionalStream stream = |
1347 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; | 1313 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; |
1348 stream.start(); | 1314 stream.start(); |
1349 callback.waitForNextReadStep(); | 1315 callback.waitForNextReadStep(); |
1350 assertFalse(callback.isDone()); | 1316 assertFalse(callback.isDone()); |
1351 assertFalse(stream.isDone()); | 1317 assertFalse(stream.isDone()); |
1352 | 1318 |
1353 final ConditionVariable streamDestroyed = new ConditionVariable(false); | 1319 final ConditionVariable streamDestroyed = new ConditionVariable(false); |
1354 stream.setOnDestroyedCallbackForTesting(new Runnable() { | 1320 stream.setOnDestroyedCallbackForTesting(new Runnable() { |
1355 @Override | 1321 @Override |
(...skipping 14 matching lines...) Expand all Loading... | |
1370 assertTrue(stream.isDone()); | 1336 assertTrue(stream.isDone()); |
1371 } | 1337 } |
1372 | 1338 |
1373 /** | 1339 /** |
1374 * Callback that shuts down the engine when the stream has succeeded | 1340 * Callback that shuts down the engine when the stream has succeeded |
1375 * or failed. | 1341 * or failed. |
1376 */ | 1342 */ |
1377 private class ShutdownTestBidirectionalStreamCallback extends TestBidirectio nalStreamCallback { | 1343 private class ShutdownTestBidirectionalStreamCallback extends TestBidirectio nalStreamCallback { |
1378 @Override | 1344 @Override |
1379 public void onSucceeded(BidirectionalStream stream, UrlResponseInfo info ) { | 1345 public void onSucceeded(BidirectionalStream stream, UrlResponseInfo info ) { |
1380 mTestFramework.mCronetEngine.shutdown(); | 1346 mCronetEngine.shutdown(); |
1381 // Clear mCronetEngine so it doesn't get shut down second time in te arDown(). | 1347 // Clear mCronetEngine so it doesn't get shut down second time in te arDown(). |
1382 mTestFramework.mCronetEngine = null; | 1348 mCronetEngine = null; |
1383 super.onSucceeded(stream, info); | 1349 super.onSucceeded(stream, info); |
1384 } | 1350 } |
1385 | 1351 |
1386 @Override | 1352 @Override |
1387 public void onFailed( | 1353 public void onFailed( |
1388 BidirectionalStream stream, UrlResponseInfo info, CronetExceptio n error) { | 1354 BidirectionalStream stream, UrlResponseInfo info, CronetExceptio n error) { |
1389 mTestFramework.mCronetEngine.shutdown(); | 1355 mCronetEngine.shutdown(); |
1390 // Clear mCronetEngine so it doesn't get shut down second time in te arDown(). | 1356 // Clear mCronetEngine so it doesn't get shut down second time in te arDown(). |
1391 mTestFramework.mCronetEngine = null; | 1357 mCronetEngine = null; |
1392 super.onFailed(stream, info, error); | 1358 super.onFailed(stream, info, error); |
1393 } | 1359 } |
1394 | 1360 |
1395 @Override | 1361 @Override |
1396 public void onCanceled(BidirectionalStream stream, UrlResponseInfo info) { | 1362 public void onCanceled(BidirectionalStream stream, UrlResponseInfo info) { |
1397 mTestFramework.mCronetEngine.shutdown(); | 1363 mCronetEngine.shutdown(); |
1398 // Clear mCronetEngine so it doesn't get shut down second time in te arDown(). | 1364 // Clear mCronetEngine so it doesn't get shut down second time in te arDown(). |
1399 mTestFramework.mCronetEngine = null; | 1365 mCronetEngine = null; |
1400 super.onCanceled(stream, info); | 1366 super.onCanceled(stream, info); |
1401 } | 1367 } |
1402 } | 1368 } |
1403 | 1369 |
1404 @SmallTest | 1370 @SmallTest |
1405 @Feature({"Cronet"}) | 1371 @Feature({"Cronet"}) |
1406 @OnlyRunNativeCronet | 1372 @OnlyRunNativeCronet |
1407 public void testCronetEngineShutdown() throws Exception { | 1373 public void testCronetEngineShutdown() throws Exception { |
1408 // Test that CronetEngine cannot be shut down if there are any active st reams. | 1374 // Test that CronetEngine cannot be shut down if there are any active st reams. |
1409 TestBidirectionalStreamCallback callback = new ShutdownTestBidirectional StreamCallback(); | 1375 TestBidirectionalStreamCallback callback = new ShutdownTestBidirectional StreamCallback(); |
1410 // Block callback when response starts to verify that shutdown fails | 1376 // Block callback when response starts to verify that shutdown fails |
1411 // if there are active streams. | 1377 // if there are active streams. |
1412 callback.setAutoAdvance(false); | 1378 callback.setAutoAdvance(false); |
1413 BidirectionalStream.Builder builder = | 1379 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1414 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1380 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1415 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1416 CronetBidirectionalStream stream = | 1381 CronetBidirectionalStream stream = |
1417 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; | 1382 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; |
1418 stream.start(); | 1383 stream.start(); |
1419 try { | 1384 try { |
1420 mTestFramework.mCronetEngine.shutdown(); | 1385 mCronetEngine.shutdown(); |
1421 fail("Should throw an exception"); | 1386 fail("Should throw an exception"); |
1422 } catch (Exception e) { | 1387 } catch (Exception e) { |
1423 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); | 1388 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); |
1424 } | 1389 } |
1425 | 1390 |
1426 callback.waitForNextReadStep(); | 1391 callback.waitForNextReadStep(); |
1427 assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); | 1392 assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); |
1428 try { | 1393 try { |
1429 mTestFramework.mCronetEngine.shutdown(); | 1394 mCronetEngine.shutdown(); |
1430 fail("Should throw an exception"); | 1395 fail("Should throw an exception"); |
1431 } catch (Exception e) { | 1396 } catch (Exception e) { |
1432 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); | 1397 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); |
1433 } | 1398 } |
1434 callback.startNextRead(stream); | 1399 callback.startNextRead(stream); |
1435 | 1400 |
1436 callback.waitForNextReadStep(); | 1401 callback.waitForNextReadStep(); |
1437 assertEquals(ResponseStep.ON_READ_COMPLETED, callback.mResponseStep); | 1402 assertEquals(ResponseStep.ON_READ_COMPLETED, callback.mResponseStep); |
1438 try { | 1403 try { |
1439 mTestFramework.mCronetEngine.shutdown(); | 1404 mCronetEngine.shutdown(); |
1440 fail("Should throw an exception"); | 1405 fail("Should throw an exception"); |
1441 } catch (Exception e) { | 1406 } catch (Exception e) { |
1442 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); | 1407 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); |
1443 } | 1408 } |
1444 | 1409 |
1445 // May not have read all the data, in theory. Just enable auto-advance | 1410 // May not have read all the data, in theory. Just enable auto-advance |
1446 // and finish the request. | 1411 // and finish the request. |
1447 callback.setAutoAdvance(true); | 1412 callback.setAutoAdvance(true); |
1448 callback.startNextRead(stream); | 1413 callback.startNextRead(stream); |
1449 callback.blockForDone(); | 1414 callback.blockForDone(); |
1450 } | 1415 } |
1451 | 1416 |
1452 @SmallTest | 1417 @SmallTest |
1453 @Feature({"Cronet"}) | 1418 @Feature({"Cronet"}) |
1454 @OnlyRunNativeCronet | 1419 @OnlyRunNativeCronet |
1455 public void testCronetEngineShutdownAfterStreamFailure() throws Exception { | 1420 public void testCronetEngineShutdownAfterStreamFailure() throws Exception { |
1456 // Test that CronetEngine can be shut down after stream reports a failur e. | 1421 // Test that CronetEngine can be shut down after stream reports a failur e. |
1457 TestBidirectionalStreamCallback callback = new ShutdownTestBidirectional StreamCallback(); | 1422 TestBidirectionalStreamCallback callback = new ShutdownTestBidirectional StreamCallback(); |
1458 BidirectionalStream.Builder builder = | 1423 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1459 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1424 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1460 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1461 CronetBidirectionalStream stream = | 1425 CronetBidirectionalStream stream = |
1462 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; | 1426 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; |
1463 stream.start(); | 1427 stream.start(); |
1464 callback.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLET ED); | 1428 callback.setFailure(FailureType.THROW_SYNC, ResponseStep.ON_READ_COMPLET ED); |
1465 callback.blockForDone(); | 1429 callback.blockForDone(); |
1466 assertTrue(callback.mOnErrorCalled); | 1430 assertTrue(callback.mOnErrorCalled); |
1467 assertNull(mTestFramework.mCronetEngine); | 1431 assertNull(mCronetEngine); |
1468 } | 1432 } |
1469 | 1433 |
1470 @SmallTest | 1434 @SmallTest |
1471 @Feature({"Cronet"}) | 1435 @Feature({"Cronet"}) |
1472 @OnlyRunNativeCronet | 1436 @OnlyRunNativeCronet |
1473 public void testCronetEngineShutdownAfterStreamCancel() throws Exception { | 1437 public void testCronetEngineShutdownAfterStreamCancel() throws Exception { |
1474 // Test that CronetEngine can be shut down after stream is canceled. | 1438 // Test that CronetEngine can be shut down after stream is canceled. |
1475 TestBidirectionalStreamCallback callback = new ShutdownTestBidirectional StreamCallback(); | 1439 TestBidirectionalStreamCallback callback = new ShutdownTestBidirectional StreamCallback(); |
1476 BidirectionalStream.Builder builder = | 1440 BidirectionalStream.Builder builder = mCronetEngine.newBidirectionalStre amBuilder( |
1477 mTestFramework.mCronetEngine.newBidirectionalStreamBuilder( | 1441 Http2TestServer.getEchoMethodUrl(), callback, callback.getExecut or()); |
1478 Http2TestServer.getEchoMethodUrl(), callback, callback.g etExecutor()); | |
1479 CronetBidirectionalStream stream = | 1442 CronetBidirectionalStream stream = |
1480 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; | 1443 (CronetBidirectionalStream) builder.setHttpMethod("GET").build() ; |
1481 | 1444 |
1482 // Block callback when response starts to verify that shutdown fails | 1445 // Block callback when response starts to verify that shutdown fails |
1483 // if there are active requests. | 1446 // if there are active requests. |
1484 callback.setAutoAdvance(false); | 1447 callback.setAutoAdvance(false); |
1485 stream.start(); | 1448 stream.start(); |
1486 try { | 1449 try { |
1487 mTestFramework.mCronetEngine.shutdown(); | 1450 mCronetEngine.shutdown(); |
1488 fail("Should throw an exception"); | 1451 fail("Should throw an exception"); |
1489 } catch (Exception e) { | 1452 } catch (Exception e) { |
1490 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); | 1453 assertEquals("Cannot shutdown with active requests.", e.getMessage() ); |
1491 } | 1454 } |
1492 callback.waitForNextReadStep(); | 1455 callback.waitForNextReadStep(); |
1493 assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); | 1456 assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); |
1494 stream.cancel(); | 1457 stream.cancel(); |
1495 callback.blockForDone(); | 1458 callback.blockForDone(); |
1496 assertTrue(callback.mOnCanceledCalled); | 1459 assertTrue(callback.mOnCanceledCalled); |
1497 assertNull(mTestFramework.mCronetEngine); | 1460 assertNull(mCronetEngine); |
1498 } | 1461 } |
1499 | 1462 |
1500 // Returns the contents of byteBuffer, from its position() to its limit(), | 1463 // Returns the contents of byteBuffer, from its position() to its limit(), |
1501 // as a String. Does not modify byteBuffer's position(). | 1464 // as a String. Does not modify byteBuffer's position(). |
1502 private static String bufferContentsToString(ByteBuffer byteBuffer, int star t, int end) { | 1465 private static String bufferContentsToString(ByteBuffer byteBuffer, int star t, int end) { |
1503 // Use a duplicate to avoid modifying byteBuffer. | 1466 // Use a duplicate to avoid modifying byteBuffer. |
1504 ByteBuffer duplicate = byteBuffer.duplicate(); | 1467 ByteBuffer duplicate = byteBuffer.duplicate(); |
1505 duplicate.position(start); | 1468 duplicate.position(start); |
1506 duplicate.limit(end); | 1469 duplicate.limit(end); |
1507 byte[] contents = new byte[duplicate.remaining()]; | 1470 byte[] contents = new byte[duplicate.remaining()]; |
1508 duplicate.get(contents); | 1471 duplicate.get(contents); |
1509 return new String(contents); | 1472 return new String(contents); |
1510 } | 1473 } |
1511 } | 1474 } |
OLD | NEW |