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

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

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Javadoc + rebase Created 4 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 android.content.Context; 7 import android.content.Context;
8 import android.content.ContextWrapper;
9 import android.os.ConditionVariable; 8 import android.os.ConditionVariable;
10 import android.os.Handler; 9 import android.os.Handler;
11 import android.os.Looper; 10 import android.os.Looper;
12 import android.os.StrictMode; 11 import android.os.StrictMode;
13 import android.test.suitebuilder.annotation.SmallTest; 12 import android.test.suitebuilder.annotation.SmallTest;
14 13
15 import org.chromium.base.FileUtils; 14 import org.chromium.base.FileUtils;
16 import org.chromium.base.PathUtils; 15 import org.chromium.base.PathUtils;
17 import org.chromium.base.annotations.JNINamespace; 16 import org.chromium.base.annotations.JNINamespace;
18 import org.chromium.base.test.util.Feature; 17 import org.chromium.base.test.util.Feature;
19 import org.chromium.net.TestUrlRequestCallback.ResponseStep; 18 import org.chromium.net.TestUrlRequestCallback.ResponseStep;
19 import org.chromium.net.impl.CronetEngineBase;
20 import org.chromium.net.impl.CronetEngineBuilderImpl;
20 import org.chromium.net.impl.CronetLibraryLoader; 21 import org.chromium.net.impl.CronetLibraryLoader;
21 import org.chromium.net.impl.CronetUrlRequestContext; 22 import org.chromium.net.impl.CronetUrlRequestContext;
22 import org.chromium.net.test.EmbeddedTestServer; 23 import org.chromium.net.test.EmbeddedTestServer;
23 import org.json.JSONObject; 24 import org.json.JSONObject;
24 25
25 import java.io.BufferedReader; 26 import java.io.BufferedReader;
26 import java.io.File; 27 import java.io.File;
27 import java.io.FileReader; 28 import java.io.FileReader;
28 import java.net.URL; 29 import java.net.URL;
29 import java.util.Arrays; 30 import java.util.Arrays;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 mUrl = url; 84 mUrl = url;
84 mRunBlocker = runBlocker; 85 mRunBlocker = runBlocker;
85 } 86 }
86 87
87 @Override 88 @Override
88 public void run() { 89 public void run() {
89 mRunBlocker.block(); 90 mRunBlocker.block();
90 CronetEngine cronetEngine = mTestFramework.initCronetEngine(); 91 CronetEngine cronetEngine = mTestFramework.initCronetEngine();
91 mCallback = new TestUrlRequestCallback(); 92 mCallback = new TestUrlRequestCallback();
92 UrlRequest.Builder urlRequestBuilder = 93 UrlRequest.Builder urlRequestBuilder =
93 new UrlRequest.Builder(mUrl, mCallback, mCallback.getExecuto r(), cronetEngine); 94 cronetEngine.newUrlRequestBuilder(mUrl, mCallback, mCallback .getExecutor());
94 urlRequestBuilder.build().start(); 95 urlRequestBuilder.build().start();
95 mCallback.blockForDone(); 96 mCallback.blockForDone();
96 } 97 }
97 } 98 }
98 99
99 /** 100 /**
100 * Callback that shutdowns the request context when request has succeeded 101 * Callback that shutdowns the request context when request has succeeded
101 * or failed. 102 * or failed.
102 */ 103 */
103 static class ShutdownTestUrlRequestCallback extends TestUrlRequestCallback { 104 static class ShutdownTestUrlRequestCallback extends TestUrlRequestCallback {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 return mNetworkQualityThread; 168 return mNetworkQualityThread;
168 } 169 }
169 } 170 }
170 171
171 @SmallTest 172 @SmallTest
172 @Feature({"Cronet"}) 173 @Feature({"Cronet"})
173 @SuppressWarnings("deprecation") 174 @SuppressWarnings("deprecation")
174 public void testConfigUserAgent() throws Exception { 175 public void testConfigUserAgent() throws Exception {
175 String userAgentName = "User-Agent"; 176 String userAgentName = "User-Agent";
176 String userAgentValue = "User-Agent-Value"; 177 String userAgentValue = "User-Agent-Value";
177 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC ontext()); 178 ExperimentalCronetEngine.Builder cronetEngineBuilder =
179 new ExperimentalCronetEngine.Builder(getContext());
178 if (testingJavaImpl()) { 180 if (testingJavaImpl()) {
179 cronetEngineBuilder.enableLegacyMode(true); 181 cronetEngineBuilder.enableLegacyMode(true);
180 } 182 }
181 cronetEngineBuilder.setUserAgent(userAgentValue); 183 cronetEngineBuilder.setUserAgent(userAgentValue);
182 cronetEngineBuilder.setLibraryName("cronet_tests"); 184 CronetTestUtil.setLibraryName(cronetEngineBuilder, "cronet_tests");
183 final CronetTestFramework testFramework = 185 final CronetTestFramework testFramework =
184 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(mUrl, cron etEngineBuilder); 186 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(mUrl, cron etEngineBuilder);
185 NativeTestServer.shutdownNativeTestServer(); // startNativeTestServer re turns false if it's 187 NativeTestServer.shutdownNativeTestServer(); // startNativeTestServer re turns false if it's
186 // already running 188 // already running
187 assertTrue(NativeTestServer.startNativeTestServer(getContext())); 189 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
188 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 190 TestUrlRequestCallback callback = new TestUrlRequestCallback();
189 UrlRequest.Builder urlRequestBuilder = 191 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
190 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), callback, 192 NativeTestServer.getEchoHeaderURL(userAgentName), callback, call back.getExecutor());
191 callback.getExecutor(), testFramework.mCronetEngine);
192 urlRequestBuilder.build().start(); 193 urlRequestBuilder.build().start();
193 callback.blockForDone(); 194 callback.blockForDone();
194 assertEquals(userAgentValue, callback.mResponseAsString); 195 assertEquals(userAgentValue, callback.mResponseAsString);
195 } 196 }
196 197
197 @SmallTest 198 @SmallTest
198 @Feature({"Cronet"}) 199 @Feature({"Cronet"})
199 @OnlyRunNativeCronet 200 @OnlyRunNativeCronet
200 public void testDataReductionProxyEnabled() throws Exception { 201 public void testDataReductionProxyEnabled() throws Exception {
201 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki pLibraryInit(); 202 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki pLibraryInit();
202 203
203 // Ensure native code is loaded before trying to start test server. 204 // Ensure native code is loaded before trying to start test server.
204 new CronetEngine.Builder(getContext()).setLibraryName("cronet_tests").bu ild().shutdown(); 205 ExperimentalCronetEngine.Builder engineBuilder =
206 new ExperimentalCronetEngine.Builder(getContext());
207 CronetTestUtil.setLibraryName(engineBuilder, "cronet_tests");
208 engineBuilder.build().shutdown();
205 209
206 assertTrue(NativeTestServer.startNativeTestServer(getContext())); 210 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
207 if (!NativeTestServer.isDataReductionProxySupported()) { 211 if (!NativeTestServer.isDataReductionProxySupported()) {
208 return; 212 return;
209 } 213 }
210 String serverHostPort = NativeTestServer.getHostPort(); 214 String serverHostPort = NativeTestServer.getHostPort();
211 215
212 // Enable the Data Reduction Proxy and configure it to use the test 216 // Enable the Data Reduction Proxy and configure it to use the test
213 // server as its primary proxy, and to check successfully that this 217 // server as its primary proxy, and to check successfully that this
214 // proxy is OK to use. 218 // proxy is OK to use.
215 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC ontext()); 219 ExperimentalCronetEngine.Builder cronetEngineBuilder =
220 new ExperimentalCronetEngine.Builder(getContext());
216 cronetEngineBuilder.enableDataReductionProxy("test-key"); 221 cronetEngineBuilder.enableDataReductionProxy("test-key");
217 cronetEngineBuilder.setDataReductionProxyOptions(serverHostPort, "unused .net:9999", 222 cronetEngineBuilder.setDataReductionProxyOptions(serverHostPort, "unused .net:9999",
218 NativeTestServer.getFileURL("/secureproxychecksuccess.txt")); 223 NativeTestServer.getFileURL("/secureproxychecksuccess.txt"));
219 cronetEngineBuilder.setLibraryName("cronet_tests"); 224 CronetTestUtil.setLibraryName(cronetEngineBuilder, "cronet_tests");
220 testFramework.mCronetEngine = cronetEngineBuilder.build(); 225 testFramework.mCronetEngine = (CronetEngineBase) cronetEngineBuilder.bui ld();
221 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 226 TestUrlRequestCallback callback = new TestUrlRequestCallback();
222 227
223 // Construct and start a request that can only be returned by the test 228 // Construct and start a request that can only be returned by the test
224 // server. This request will fail if the configuration logic for the 229 // server. This request will fail if the configuration logic for the
225 // Data Reduction Proxy is not used. 230 // Data Reduction Proxy is not used.
226 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 231 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
227 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt", callback, 232 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt", callback,
228 callback.getExecutor(), testFramework.mCronetEngine); 233 callback.getExecutor());
229 urlRequestBuilder.build().start(); 234 urlRequestBuilder.build().start();
230 callback.blockForDone(); 235 callback.blockForDone();
231 236
232 // Verify that the request is successful and that the Data Reduction 237 // Verify that the request is successful and that the Data Reduction
233 // Proxy logic configured to use the test server as its proxy. 238 // Proxy logic configured to use the test server as its proxy.
234 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 239 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
235 assertEquals(serverHostPort, callback.mResponseInfo.getProxyServer()); 240 assertEquals(serverHostPort, callback.mResponseInfo.getProxyServer());
236 assertEquals("http://DomainThatDoesnt.Resolve/datareductionproxysuccess. txt", 241 assertEquals("http://DomainThatDoesnt.Resolve/datareductionproxysuccess. txt",
237 callback.mResponseInfo.getUrl()); 242 callback.mResponseInfo.getUrl());
238 } 243 }
239 244
240 @SmallTest 245 @SmallTest
241 @Feature({"Cronet"}) 246 @Feature({"Cronet"})
242 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion { 247 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion {
243 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); 248 ExperimentalCronetEngine.Builder mCronetEngineBuilder =
249 new ExperimentalCronetEngine.Builder(getContext());
244 final CronetTestFramework testFramework = 250 final CronetTestFramework testFramework =
245 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); 251 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder);
246 Executor networkQualityExecutor = Executors.newSingleThreadExecutor(); 252 Executor networkQualityExecutor = Executors.newSingleThreadExecutor();
247 TestNetworkQualityRttListener rttListener = 253 TestNetworkQualityRttListener rttListener =
248 new TestNetworkQualityRttListener(networkQualityExecutor); 254 new TestNetworkQualityRttListener(networkQualityExecutor);
249 TestNetworkQualityThroughputListener throughputListener = 255 TestNetworkQualityThroughputListener throughputListener =
250 new TestNetworkQualityThroughputListener(networkQualityExecutor, null); 256 new TestNetworkQualityThroughputListener(networkQualityExecutor, null);
251 try { 257 try {
252 testFramework.mCronetEngine.addRttListener(rttListener); 258 testFramework.mCronetEngine.addRttListener(rttListener);
253 fail("Should throw an exception."); 259 fail("Should throw an exception.");
254 } catch (IllegalStateException e) { 260 } catch (IllegalStateException e) {
255 } 261 }
256 try { 262 try {
257 testFramework.mCronetEngine.addThroughputListener(throughputListener ); 263 testFramework.mCronetEngine.addThroughputListener(throughputListener );
258 fail("Should throw an exception."); 264 fail("Should throw an exception.");
259 } catch (IllegalStateException e) { 265 } catch (IllegalStateException e) {
260 } 266 }
261 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 267 TestUrlRequestCallback callback = new TestUrlRequestCallback();
262 UrlRequest.Builder builder = new UrlRequest.Builder( 268 UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBu ilder(
263 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 269 mUrl, callback, callback.getExecutor());
264 UrlRequest urlRequest = builder.build(); 270 UrlRequest urlRequest = builder.build();
265 271
266 urlRequest.start(); 272 urlRequest.start();
267 callback.blockForDone(); 273 callback.blockForDone();
268 assertEquals(0, rttListener.rttObservationCount()); 274 assertEquals(0, rttListener.rttObservationCount());
269 assertEquals(0, throughputListener.throughputObservationCount()); 275 assertEquals(0, throughputListener.throughputObservationCount());
270 testFramework.mCronetEngine.shutdown(); 276 testFramework.mCronetEngine.shutdown();
271 } 277 }
272 278
273 @SmallTest 279 @SmallTest
274 @Feature({"Cronet"}) 280 @Feature({"Cronet"})
275 public void testRealTimeNetworkQualityObservationsListenerRemoved() throws E xception { 281 public void testRealTimeNetworkQualityObservationsListenerRemoved() throws E xception {
276 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); 282 ExperimentalCronetEngine.Builder mCronetEngineBuilder =
283 new ExperimentalCronetEngine.Builder(getContext());
277 TestExecutor networkQualityExecutor = new TestExecutor(); 284 TestExecutor networkQualityExecutor = new TestExecutor();
278 TestNetworkQualityRttListener rttListener = 285 TestNetworkQualityRttListener rttListener =
279 new TestNetworkQualityRttListener(networkQualityExecutor); 286 new TestNetworkQualityRttListener(networkQualityExecutor);
280 mCronetEngineBuilder.enableNetworkQualityEstimator(true); 287 mCronetEngineBuilder.enableNetworkQualityEstimator(true);
281 final CronetTestFramework testFramework = 288 final CronetTestFramework testFramework =
282 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); 289 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder);
283 testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(t rue, true); 290 testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(t rue, true);
284 291
285 testFramework.mCronetEngine.addRttListener(rttListener); 292 testFramework.mCronetEngine.addRttListener(rttListener);
286 testFramework.mCronetEngine.removeRttListener(rttListener); 293 testFramework.mCronetEngine.removeRttListener(rttListener);
287 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 294 TestUrlRequestCallback callback = new TestUrlRequestCallback();
288 UrlRequest.Builder builder = new UrlRequest.Builder( 295 UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBu ilder(
289 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 296 mUrl, callback, callback.getExecutor());
290 UrlRequest urlRequest = builder.build(); 297 UrlRequest urlRequest = builder.build();
291 urlRequest.start(); 298 urlRequest.start();
292 callback.blockForDone(); 299 callback.blockForDone();
293 networkQualityExecutor.runAllTasks(); 300 networkQualityExecutor.runAllTasks();
294 assertEquals(0, rttListener.rttObservationCount()); 301 assertEquals(0, rttListener.rttObservationCount());
295 testFramework.mCronetEngine.shutdown(); 302 testFramework.mCronetEngine.shutdown();
296 } 303 }
297 304
298 @SmallTest 305 @SmallTest
299 @Feature({"Cronet"}) 306 @Feature({"Cronet"})
300 public void testRealTimeNetworkQualityObservationsQuicDisabled() throws Exce ption { 307 public void testRealTimeNetworkQualityObservationsQuicDisabled() throws Exce ption {
301 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); 308 ExperimentalCronetEngine.Builder mCronetEngineBuilder =
309 new ExperimentalCronetEngine.Builder(getContext());
302 Executor listenersExecutor = Executors.newSingleThreadExecutor(new Execu torThreadFactory()); 310 Executor listenersExecutor = Executors.newSingleThreadExecutor(new Execu torThreadFactory());
303 ConditionVariable waitForThroughput = new ConditionVariable(); 311 ConditionVariable waitForThroughput = new ConditionVariable();
304 TestNetworkQualityRttListener rttListener = 312 TestNetworkQualityRttListener rttListener =
305 new TestNetworkQualityRttListener(listenersExecutor); 313 new TestNetworkQualityRttListener(listenersExecutor);
306 TestNetworkQualityThroughputListener throughputListener = 314 TestNetworkQualityThroughputListener throughputListener =
307 new TestNetworkQualityThroughputListener(listenersExecutor, wait ForThroughput); 315 new TestNetworkQualityThroughputListener(listenersExecutor, wait ForThroughput);
308 mCronetEngineBuilder.enableHttp2(true).enableQuic(false).enableNetworkQu alityEstimator( 316 mCronetEngineBuilder.enableNetworkQualityEstimator(true).enableHttp2(tru e).enableQuic(
309 true); 317 false);
310 final CronetTestFramework testFramework = 318 final CronetTestFramework testFramework =
311 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); 319 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder);
312 testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(t rue, true); 320 testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(t rue, true);
313 321
314 testFramework.mCronetEngine.addRttListener(rttListener); 322 testFramework.mCronetEngine.addRttListener(rttListener);
315 testFramework.mCronetEngine.addThroughputListener(throughputListener); 323 testFramework.mCronetEngine.addThroughputListener(throughputListener);
316 324
317 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 325 TestUrlRequestCallback callback = new TestUrlRequestCallback();
318 UrlRequest.Builder builder = new UrlRequest.Builder( 326 UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBu ilder(
319 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 327 mUrl, callback, callback.getExecutor());
320 UrlRequest urlRequest = builder.build(); 328 UrlRequest urlRequest = builder.build();
321 urlRequest.start(); 329 urlRequest.start();
322 callback.blockForDone(); 330 callback.blockForDone();
323 331
324 // Throughput observation is posted to the network quality estimator on the network thread 332 // Throughput observation is posted to the network quality estimator on the network thread
325 // after the UrlRequest is completed. The observations are then eventual ly posted to 333 // after the UrlRequest is completed. The observations are then eventual ly posted to
326 // throughput listeners on the executor provided to network quality. 334 // throughput listeners on the executor provided to network quality.
327 waitForThroughput.block(); 335 waitForThroughput.block();
328 assertTrue(throughputListener.throughputObservationCount() > 0); 336 assertTrue(throughputListener.throughputObservationCount() > 0);
329 337
(...skipping 26 matching lines...) Expand all
356 @Feature({"Cronet"}) 364 @Feature({"Cronet"})
357 // TODO: Remove the annotation after fixing http://crbug.com/637979 & http:/ /crbug.com/637972 365 // TODO: Remove the annotation after fixing http://crbug.com/637979 & http:/ /crbug.com/637972
358 @OnlyRunNativeCronet 366 @OnlyRunNativeCronet
359 public void testShutdown() throws Exception { 367 public void testShutdown() throws Exception {
360 final CronetTestFramework testFramework = startCronetTestFramework(); 368 final CronetTestFramework testFramework = startCronetTestFramework();
361 ShutdownTestUrlRequestCallback callback = 369 ShutdownTestUrlRequestCallback callback =
362 new ShutdownTestUrlRequestCallback(testFramework.mCronetEngine); 370 new ShutdownTestUrlRequestCallback(testFramework.mCronetEngine);
363 // Block callback when response starts to verify that shutdown fails 371 // Block callback when response starts to verify that shutdown fails
364 // if there are active requests. 372 // if there are active requests.
365 callback.setAutoAdvance(false); 373 callback.setAutoAdvance(false);
366 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 374 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
367 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 375 mUrl, callback, callback.getExecutor());
368 UrlRequest urlRequest = urlRequestBuilder.build(); 376 UrlRequest urlRequest = urlRequestBuilder.build();
369 urlRequest.start(); 377 urlRequest.start();
370 try { 378 try {
371 testFramework.mCronetEngine.shutdown(); 379 testFramework.mCronetEngine.shutdown();
372 fail("Should throw an exception"); 380 fail("Should throw an exception");
373 } catch (Exception e) { 381 } catch (Exception e) {
374 assertEquals("Cannot shutdown with active requests.", 382 assertEquals("Cannot shutdown with active requests.",
375 e.getMessage()); 383 e.getMessage());
376 } 384 }
377 385
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 } 500 }
493 501
494 @SmallTest 502 @SmallTest
495 @Feature({"Cronet"}) 503 @Feature({"Cronet"})
496 // TODO: Remove the annotation after fixing http://crbug.com/637972 504 // TODO: Remove the annotation after fixing http://crbug.com/637972
497 @OnlyRunNativeCronet 505 @OnlyRunNativeCronet
498 public void testShutdownAfterError() throws Exception { 506 public void testShutdownAfterError() throws Exception {
499 final CronetTestFramework testFramework = startCronetTestFramework(); 507 final CronetTestFramework testFramework = startCronetTestFramework();
500 ShutdownTestUrlRequestCallback callback = 508 ShutdownTestUrlRequestCallback callback =
501 new ShutdownTestUrlRequestCallback(testFramework.mCronetEngine); 509 new ShutdownTestUrlRequestCallback(testFramework.mCronetEngine);
502 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(MOCK_CRONE T_TEST_FAILED_URL, 510 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
503 callback, callback.getExecutor(), testFramework.mCronetEngine); 511 MOCK_CRONET_TEST_FAILED_URL, callback, callback.getExecutor());
504 urlRequestBuilder.build().start(); 512 urlRequestBuilder.build().start();
505 callback.blockForDone(); 513 callback.blockForDone();
506 assertTrue(callback.mOnErrorCalled); 514 assertTrue(callback.mOnErrorCalled);
507 callback.blockForCallbackToComplete(); 515 callback.blockForCallbackToComplete();
508 callback.shutdownExecutor(); 516 callback.shutdownExecutor();
509 } 517 }
510 518
511 @SmallTest 519 @SmallTest
512 @Feature({"Cronet"}) 520 @Feature({"Cronet"})
513 public void testShutdownAfterCancel() throws Exception { 521 public void testShutdownAfterCancel() throws Exception {
514 final CronetTestFramework testFramework = startCronetTestFramework(); 522 final CronetTestFramework testFramework = startCronetTestFramework();
515 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 523 TestUrlRequestCallback callback = new TestUrlRequestCallback();
516 // Block callback when response starts to verify that shutdown fails 524 // Block callback when response starts to verify that shutdown fails
517 // if there are active requests. 525 // if there are active requests.
518 callback.setAutoAdvance(false); 526 callback.setAutoAdvance(false);
519 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 527 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
520 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 528 mUrl, callback, callback.getExecutor());
521 UrlRequest urlRequest = urlRequestBuilder.build(); 529 UrlRequest urlRequest = urlRequestBuilder.build();
522 urlRequest.start(); 530 urlRequest.start();
523 try { 531 try {
524 testFramework.mCronetEngine.shutdown(); 532 testFramework.mCronetEngine.shutdown();
525 fail("Should throw an exception"); 533 fail("Should throw an exception");
526 } catch (Exception e) { 534 } catch (Exception e) {
527 assertEquals("Cannot shutdown with active requests.", 535 assertEquals("Cannot shutdown with active requests.",
528 e.getMessage()); 536 e.getMessage());
529 } 537 }
530 callback.waitForNextStep(); 538 callback.waitForNextStep();
531 assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep); 539 assertEquals(ResponseStep.ON_RESPONSE_STARTED, callback.mResponseStep);
532 urlRequest.cancel(); 540 urlRequest.cancel();
533 testFramework.mCronetEngine.shutdown(); 541 testFramework.mCronetEngine.shutdown();
534 } 542 }
535 543
536 @SmallTest 544 @SmallTest
537 @Feature({"Cronet"}) 545 @Feature({"Cronet"})
538 @OnlyRunNativeCronet // No netlogs for pure java impl 546 @OnlyRunNativeCronet // No netlogs for pure java impl
539 public void testNetLog() throws Exception { 547 public void testNetLog() throws Exception {
540 Context context = getContext(); 548 Context context = getContext();
541 File directory = new File(PathUtils.getDataDirectory()); 549 File directory = new File(PathUtils.getDataDirectory());
542 File file = File.createTempFile("cronet", "json", directory); 550 File file = File.createTempFile("cronet", "json", directory);
543 CronetEngine cronetEngine = new CronetUrlRequestContext( 551 CronetEngine cronetEngine = new CronetUrlRequestContext(
544 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 552 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
545 // Start NetLog immediately after the request context is created to make 553 // Start NetLog immediately after the request context is created to make
546 // sure that the call won't crash the app even when the native request 554 // sure that the call won't crash the app even when the native request
547 // context is not fully initialized. See crbug.com/470196. 555 // context is not fully initialized. See crbug.com/470196.
548 cronetEngine.startNetLogToFile(file.getPath(), false); 556 cronetEngine.startNetLogToFile(file.getPath(), false);
549 557
550 // Start a request. 558 // Start a request.
551 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 559 TestUrlRequestCallback callback = new TestUrlRequestCallback();
552 UrlRequest.Builder urlRequestBuilder = 560 UrlRequest.Builder urlRequestBuilder =
553 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 561 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
554 urlRequestBuilder.build().start(); 562 urlRequestBuilder.build().start();
555 callback.blockForDone(); 563 callback.blockForDone();
556 cronetEngine.stopNetLog(); 564 cronetEngine.stopNetLog();
557 assertTrue(file.exists()); 565 assertTrue(file.exists());
558 assertTrue(file.length() != 0); 566 assertTrue(file.length() != 0);
559 assertFalse(hasBytesInNetLog(file)); 567 assertFalse(hasBytesInNetLog(file));
560 assertTrue(file.delete()); 568 assertTrue(file.delete());
561 assertTrue(!file.exists()); 569 assertTrue(!file.exists());
562 } 570 }
563 571
564 @SmallTest 572 @SmallTest
565 @Feature({"Cronet"}) 573 @Feature({"Cronet"})
566 @OnlyRunNativeCronet // No netlogs for pure java impl 574 @OnlyRunNativeCronet // No netlogs for pure java impl
567 public void testBoundedFileNetLog() throws Exception { 575 public void testBoundedFileNetLog() throws Exception {
568 Context context = getContext(); 576 Context context = getContext();
569 File directory = new File(PathUtils.getDataDirectory()); 577 File directory = new File(PathUtils.getDataDirectory());
570 File netLogDir = new File(directory, "NetLog"); 578 File netLogDir = new File(directory, "NetLog");
571 assertFalse(netLogDir.exists()); 579 assertFalse(netLogDir.exists());
572 assertTrue(netLogDir.mkdir()); 580 assertTrue(netLogDir.mkdir());
573 File eventFile = new File(netLogDir, "event_file_0.json"); 581 File eventFile = new File(netLogDir, "event_file_0.json");
574 CronetEngine cronetEngine = new CronetUrlRequestContext( 582 CronetUrlRequestContext cronetEngine = new CronetUrlRequestContext(
575 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 583 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
576 // Start NetLog immediately after the request context is created to make 584 // Start NetLog immediately after the request context is created to make
577 // sure that the call won't crash the app even when the native request 585 // sure that the call won't crash the app even when the native request
578 // context is not fully initialized. See crbug.com/470196. 586 // context is not fully initialized. See crbug.com/470196.
579 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE ); 587 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE );
580 588
581 // Start a request. 589 // Start a request.
582 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 590 TestUrlRequestCallback callback = new TestUrlRequestCallback();
583 UrlRequest.Builder urlRequestBuilder = 591 UrlRequest.Builder urlRequestBuilder =
584 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 592 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
585 urlRequestBuilder.build().start(); 593 urlRequestBuilder.build().start();
586 callback.blockForDone(); 594 callback.blockForDone();
587 cronetEngine.stopNetLog(); 595 cronetEngine.stopNetLog();
588 assertTrue(eventFile.exists()); 596 assertTrue(eventFile.exists());
589 assertTrue(eventFile.length() != 0); 597 assertTrue(eventFile.length() != 0);
590 assertFalse(hasBytesInNetLog(eventFile)); 598 assertFalse(hasBytesInNetLog(eventFile));
591 FileUtils.recursivelyDeleteFile(netLogDir); 599 FileUtils.recursivelyDeleteFile(netLogDir);
592 assertFalse(netLogDir.exists()); 600 assertFalse(netLogDir.exists());
593 } 601 }
594 602
595 @SmallTest 603 @SmallTest
596 @Feature({"Cronet"}) 604 @Feature({"Cronet"})
597 @OnlyRunNativeCronet // No netlogs for pure java impl 605 @OnlyRunNativeCronet // No netlogs for pure java impl
598 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown() 606 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown()
599 // will take care of it. crbug.com/623701. 607 // will take care of it. crbug.com/623701.
600 public void testNoStopNetLog() throws Exception { 608 public void testNoStopNetLog() throws Exception {
601 Context context = getContext(); 609 Context context = getContext();
602 File directory = new File(PathUtils.getDataDirectory()); 610 File directory = new File(PathUtils.getDataDirectory());
603 File file = File.createTempFile("cronet", "json", directory); 611 File file = File.createTempFile("cronet", "json", directory);
604 CronetEngine cronetEngine = new CronetUrlRequestContext( 612 CronetUrlRequestContext cronetEngine = new CronetUrlRequestContext(
605 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 613 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
606 cronetEngine.startNetLogToFile(file.getPath(), false); 614 cronetEngine.startNetLogToFile(file.getPath(), false);
607 615
608 // Start a request. 616 // Start a request.
609 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 617 TestUrlRequestCallback callback = new TestUrlRequestCallback();
610 UrlRequest.Builder urlRequestBuilder = 618 UrlRequest.Builder urlRequestBuilder =
611 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 619 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
612 urlRequestBuilder.build().start(); 620 urlRequestBuilder.build().start();
613 callback.blockForDone(); 621 callback.blockForDone();
614 // Shut down the engine without calling stopNetLog. 622 // Shut down the engine without calling stopNetLog.
615 cronetEngine.shutdown(); 623 cronetEngine.shutdown();
616 assertTrue(file.exists()); 624 assertTrue(file.exists());
617 assertTrue(file.length() != 0); 625 assertTrue(file.length() != 0);
618 assertFalse(hasBytesInNetLog(file)); 626 assertFalse(hasBytesInNetLog(file));
619 assertTrue(file.delete()); 627 assertTrue(file.delete());
620 assertTrue(!file.exists()); 628 assertTrue(!file.exists());
621 } 629 }
622 630
623 @SmallTest 631 @SmallTest
624 @Feature({"Cronet"}) 632 @Feature({"Cronet"})
625 @OnlyRunNativeCronet // No netlogs for pure java impl 633 @OnlyRunNativeCronet // No netlogs for pure java impl
626 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown() 634 // Tests that if stopNetLog is not explicity called, CronetEngine.shutdown()
627 // will take care of it. crbug.com/623701. 635 // will take care of it. crbug.com/623701.
628 public void testNoStopBoundedFileNetLog() throws Exception { 636 public void testNoStopBoundedFileNetLog() throws Exception {
629 Context context = getContext(); 637 Context context = getContext();
630 File directory = new File(PathUtils.getDataDirectory()); 638 File directory = new File(PathUtils.getDataDirectory());
631 File netLogDir = new File(directory, "NetLog"); 639 File netLogDir = new File(directory, "NetLog");
632 assertFalse(netLogDir.exists()); 640 assertFalse(netLogDir.exists());
633 assertTrue(netLogDir.mkdir()); 641 assertTrue(netLogDir.mkdir());
634 File eventFile = new File(netLogDir, "event_file_0.json"); 642 File eventFile = new File(netLogDir, "event_file_0.json");
635 CronetEngine cronetEngine = new CronetUrlRequestContext( 643 CronetUrlRequestContext cronetEngine = new CronetUrlRequestContext(
636 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 644 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
637 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE ); 645 cronetEngine.startNetLogToDisk(netLogDir.getPath(), false, MAX_FILE_SIZE );
638 646
639 // Start a request. 647 // Start a request.
640 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 648 TestUrlRequestCallback callback = new TestUrlRequestCallback();
641 UrlRequest.Builder urlRequestBuilder = 649 UrlRequest.Builder urlRequestBuilder =
642 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 650 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
643 urlRequestBuilder.build().start(); 651 urlRequestBuilder.build().start();
644 callback.blockForDone(); 652 callback.blockForDone();
645 // Shut down the engine without calling stopNetLog. 653 // Shut down the engine without calling stopNetLog.
646 cronetEngine.shutdown(); 654 cronetEngine.shutdown();
647 assertTrue(eventFile.exists()); 655 assertTrue(eventFile.exists());
648 assertTrue(eventFile.length() != 0); 656 assertTrue(eventFile.length() != 0);
649 657
650 FileUtils.recursivelyDeleteFile(netLogDir); 658 FileUtils.recursivelyDeleteFile(netLogDir);
651 assertFalse(netLogDir.exists()); 659 assertFalse(netLogDir.exists());
652 } 660 }
653 661
654 @SmallTest 662 @SmallTest
655 @Feature({"Cronet"}) 663 @Feature({"Cronet"})
656 @OnlyRunNativeCronet 664 @OnlyRunNativeCronet
657 // Tests that NetLog contains events emitted by all live CronetEngines. 665 // Tests that NetLog contains events emitted by all live CronetEngines.
658 public void testNetLogContainEventsFromAllLiveEngines() throws Exception { 666 public void testNetLogContainEventsFromAllLiveEngines() throws Exception {
659 Context context = getContext(); 667 Context context = getContext();
660 File directory = new File(PathUtils.getDataDirectory()); 668 File directory = new File(PathUtils.getDataDirectory());
661 File file1 = File.createTempFile("cronet1", "json", directory); 669 File file1 = File.createTempFile("cronet1", "json", directory);
662 File file2 = File.createTempFile("cronet2", "json", directory); 670 File file2 = File.createTempFile("cronet2", "json", directory);
663 CronetEngine cronetEngine1 = new CronetUrlRequestContext( 671 CronetEngine cronetEngine1 = new CronetUrlRequestContext(
664 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 672 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
665 CronetEngine cronetEngine2 = new CronetUrlRequestContext( 673 CronetEngine cronetEngine2 = new CronetUrlRequestContext(
666 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 674 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
667 675
668 cronetEngine1.startNetLogToFile(file1.getPath(), false); 676 cronetEngine1.startNetLogToFile(file1.getPath(), false);
669 cronetEngine2.startNetLogToFile(file2.getPath(), false); 677 cronetEngine2.startNetLogToFile(file2.getPath(), false);
670 678
671 // Warm CronetEngine and make sure both CronetUrlRequestContexts are 679 // Warm CronetEngine and make sure both CronetUrlRequestContexts are
672 // initialized before testing the logs. 680 // initialized before testing the logs.
673 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200); 681 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200);
674 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200); 682 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200);
675 683
676 // Use cronetEngine1 to make a request to mUrl404. 684 // Use cronetEngine1 to make a request to mUrl404.
(...skipping 26 matching lines...) Expand all
703 File netLogDir1 = new File(directory, "NetLog1"); 711 File netLogDir1 = new File(directory, "NetLog1");
704 assertFalse(netLogDir1.exists()); 712 assertFalse(netLogDir1.exists());
705 assertTrue(netLogDir1.mkdir()); 713 assertTrue(netLogDir1.mkdir());
706 File netLogDir2 = new File(directory, "NetLog2"); 714 File netLogDir2 = new File(directory, "NetLog2");
707 assertFalse(netLogDir2.exists()); 715 assertFalse(netLogDir2.exists());
708 assertTrue(netLogDir2.mkdir()); 716 assertTrue(netLogDir2.mkdir());
709 File eventFile1 = new File(netLogDir1, "event_file_0.json"); 717 File eventFile1 = new File(netLogDir1, "event_file_0.json");
710 File eventFile2 = new File(netLogDir2, "event_file_0.json"); 718 File eventFile2 = new File(netLogDir2, "event_file_0.json");
711 719
712 CronetUrlRequestContext cronetEngine1 = new CronetUrlRequestContext( 720 CronetUrlRequestContext cronetEngine1 = new CronetUrlRequestContext(
713 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 721 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
714 CronetUrlRequestContext cronetEngine2 = new CronetUrlRequestContext( 722 CronetUrlRequestContext cronetEngine2 = new CronetUrlRequestContext(
715 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 723 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
716 724
717 cronetEngine1.startNetLogToDisk(netLogDir1.getPath(), false, MAX_FILE_SI ZE); 725 cronetEngine1.startNetLogToDisk(netLogDir1.getPath(), false, MAX_FILE_SI ZE);
718 cronetEngine2.startNetLogToDisk(netLogDir2.getPath(), false, MAX_FILE_SI ZE); 726 cronetEngine2.startNetLogToDisk(netLogDir2.getPath(), false, MAX_FILE_SI ZE);
719 727
720 // Warm CronetEngine and make sure both CronetUrlRequestContexts are 728 // Warm CronetEngine and make sure both CronetUrlRequestContexts are
721 // initialized before testing the logs. 729 // initialized before testing the logs.
722 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200); 730 makeRequestAndCheckStatus(cronetEngine1, mUrl, 200);
723 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200); 731 makeRequestAndCheckStatus(cronetEngine2, mUrl, 200);
724 732
725 // Use cronetEngine1 to make a request to mUrl404. 733 // Use cronetEngine1 to make a request to mUrl404.
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 } 799 }
792 Executor directExecutor = new Executor() { 800 Executor directExecutor = new Executor() {
793 @Override 801 @Override
794 public void execute(Runnable command) { 802 public void execute(Runnable command) {
795 command.run(); 803 command.run();
796 } 804 }
797 }; 805 };
798 CancelUrlRequestCallback callback = new CancelUrlRequestCallback(); 806 CancelUrlRequestCallback callback = new CancelUrlRequestCallback();
799 callback.setAllowDirectExecutor(true); 807 callback.setAllowDirectExecutor(true);
800 UrlRequest.Builder urlRequestBuilder = 808 UrlRequest.Builder urlRequestBuilder =
801 new UrlRequest.Builder(url, callback, directExecutor, testFramew ork.mCronetEngine); 809 testFramework.mCronetEngine.newUrlRequestBuilder(url, callback, directExecutor);
802 urlRequestBuilder.allowDirectExecutor(); 810 urlRequestBuilder.allowDirectExecutor();
803 urlRequestBuilder.build().start(); 811 urlRequestBuilder.build().start();
804 callback.blockForDone(); 812 callback.blockForDone();
805 assertTrue(thrown.get() instanceof RuntimeException); 813 assertTrue(thrown.get() instanceof RuntimeException);
806 } 814 }
807 815
808 @SmallTest 816 @SmallTest
809 @Feature({"Cronet"}) 817 @Feature({"Cronet"})
810 @OnlyRunNativeCronet 818 @OnlyRunNativeCronet
811 // Tests that if CronetEngine is shut down when reading from disk cache, 819 // Tests that if CronetEngine is shut down when reading from disk cache,
(...skipping 23 matching lines...) Expand all
835 throw new RuntimeException("Unexpected"); 843 throw new RuntimeException("Unexpected");
836 } 844 }
837 845
838 @Override 846 @Override
839 public void onFailed( 847 public void onFailed(
840 UrlRequest request, UrlResponseInfo info, UrlRequestExceptio n error) { 848 UrlRequest request, UrlResponseInfo info, UrlRequestExceptio n error) {
841 throw new RuntimeException("Unexpected"); 849 throw new RuntimeException("Unexpected");
842 } 850 }
843 } 851 }
844 CancelUrlRequestCallback callback = new CancelUrlRequestCallback(); 852 CancelUrlRequestCallback callback = new CancelUrlRequestCallback();
845 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 853 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
846 url, callback, callback.getExecutor(), testFramework.mCronetEngi ne); 854 url, callback, callback.getExecutor());
847 urlRequestBuilder.build().start(); 855 urlRequestBuilder.build().start();
848 callback.blockForDone(); 856 callback.blockForDone();
849 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 857 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
850 assertTrue(callback.mResponseInfo.wasCached()); 858 assertTrue(callback.mResponseInfo.wasCached());
851 assertTrue(callback.mOnCanceledCalled); 859 assertTrue(callback.mOnCanceledCalled);
852 } 860 }
853 861
854 @SmallTest 862 @SmallTest
855 @Feature({"Cronet"}) 863 @Feature({"Cronet"})
856 @OnlyRunNativeCronet 864 @OnlyRunNativeCronet
857 public void testNetLogAfterShutdown() throws Exception { 865 public void testNetLogAfterShutdown() throws Exception {
858 final CronetTestFramework testFramework = startCronetTestFramework(); 866 final CronetTestFramework testFramework = startCronetTestFramework();
859 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 867 TestUrlRequestCallback callback = new TestUrlRequestCallback();
860 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 868 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
861 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 869 mUrl, callback, callback.getExecutor());
862 urlRequestBuilder.build().start(); 870 urlRequestBuilder.build().start();
863 callback.blockForDone(); 871 callback.blockForDone();
864 testFramework.mCronetEngine.shutdown(); 872 testFramework.mCronetEngine.shutdown();
865 873
866 File directory = new File(PathUtils.getDataDirectory()); 874 File directory = new File(PathUtils.getDataDirectory());
867 File file = File.createTempFile("cronet", "json", directory); 875 File file = File.createTempFile("cronet", "json", directory);
868 try { 876 try {
869 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false) ; 877 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false) ;
870 fail("Should throw an exception."); 878 fail("Should throw an exception.");
871 } catch (Exception e) { 879 } catch (Exception e) {
872 assertEquals("Engine is shut down.", e.getMessage()); 880 assertEquals("Engine is shut down.", e.getMessage());
873 } 881 }
874 assertFalse(hasBytesInNetLog(file)); 882 assertFalse(hasBytesInNetLog(file));
875 assertTrue(file.delete()); 883 assertTrue(file.delete());
876 assertTrue(!file.exists()); 884 assertTrue(!file.exists());
877 } 885 }
878 886
879 @SmallTest 887 @SmallTest
880 @Feature({"Cronet"}) 888 @Feature({"Cronet"})
881 @OnlyRunNativeCronet 889 @OnlyRunNativeCronet
882 public void testBoundedFileNetLogAfterShutdown() throws Exception { 890 public void testBoundedFileNetLogAfterShutdown() throws Exception {
883 final CronetTestFramework testFramework = startCronetTestFramework(); 891 final CronetTestFramework testFramework = startCronetTestFramework();
884 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 892 TestUrlRequestCallback callback = new TestUrlRequestCallback();
885 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 893 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
886 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 894 mUrl, callback, callback.getExecutor());
887 urlRequestBuilder.build().start(); 895 urlRequestBuilder.build().start();
888 callback.blockForDone(); 896 callback.blockForDone();
889 testFramework.mCronetEngine.shutdown(); 897 testFramework.mCronetEngine.shutdown();
890 898
891 File directory = new File(PathUtils.getDataDirectory()); 899 File directory = new File(PathUtils.getDataDirectory());
892 File netLogDir = new File(directory, "NetLog"); 900 File netLogDir = new File(directory, "NetLog");
893 assertFalse(netLogDir.exists()); 901 assertFalse(netLogDir.exists());
894 assertTrue(netLogDir.mkdir()); 902 assertTrue(netLogDir.mkdir());
895 File constantsFile = new File(netLogDir, "constants.json"); 903 File constantsFile = new File(netLogDir, "constants.json");
896 try { 904 try {
(...skipping 14 matching lines...) Expand all
911 final CronetTestFramework testFramework = startCronetTestFramework(); 919 final CronetTestFramework testFramework = startCronetTestFramework();
912 File directory = new File(PathUtils.getDataDirectory()); 920 File directory = new File(PathUtils.getDataDirectory());
913 File file = File.createTempFile("cronet", "json", directory); 921 File file = File.createTempFile("cronet", "json", directory);
914 // Start NetLog multiple times. 922 // Start NetLog multiple times.
915 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false); 923 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
916 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false); 924 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
917 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false); 925 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
918 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false); 926 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
919 // Start a request. 927 // Start a request.
920 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 928 TestUrlRequestCallback callback = new TestUrlRequestCallback();
921 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 929 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
922 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 930 mUrl, callback, callback.getExecutor());
923 urlRequestBuilder.build().start(); 931 urlRequestBuilder.build().start();
924 callback.blockForDone(); 932 callback.blockForDone();
925 testFramework.mCronetEngine.stopNetLog(); 933 testFramework.mCronetEngine.stopNetLog();
926 assertTrue(file.exists()); 934 assertTrue(file.exists());
927 assertTrue(file.length() != 0); 935 assertTrue(file.length() != 0);
928 assertFalse(hasBytesInNetLog(file)); 936 assertFalse(hasBytesInNetLog(file));
929 assertTrue(file.delete()); 937 assertTrue(file.delete());
930 assertTrue(!file.exists()); 938 assertTrue(!file.exists());
931 } 939 }
932 940
933 @SmallTest 941 @SmallTest
934 @Feature({"Cronet"}) 942 @Feature({"Cronet"})
935 public void testBoundedFileNetLogStartMultipleTimes() throws Exception { 943 public void testBoundedFileNetLogStartMultipleTimes() throws Exception {
936 final CronetTestFramework testFramework = startCronetTestFramework(); 944 final CronetTestFramework testFramework = startCronetTestFramework();
937 File directory = new File(PathUtils.getDataDirectory()); 945 File directory = new File(PathUtils.getDataDirectory());
938 File netLogDir = new File(directory, "NetLog"); 946 File netLogDir = new File(directory, "NetLog");
939 assertFalse(netLogDir.exists()); 947 assertFalse(netLogDir.exists());
940 assertTrue(netLogDir.mkdir()); 948 assertTrue(netLogDir.mkdir());
941 File eventFile = new File(netLogDir, "event_file_0.json"); 949 File eventFile = new File(netLogDir, "event_file_0.json");
942 // Start NetLog multiple times. This should be equivalent to starting Ne tLog 950 // Start NetLog multiple times. This should be equivalent to starting Ne tLog
943 // once. Each subsequent start (without calling stopNetLog) should be a no-op. 951 // once. Each subsequent start (without calling stopNetLog) should be a no-op.
944 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE); 952 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE);
945 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE); 953 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE);
946 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE); 954 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE);
947 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE); 955 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE);
948 // Start a request. 956 // Start a request.
949 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 957 TestUrlRequestCallback callback = new TestUrlRequestCallback();
950 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 958 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
951 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 959 mUrl, callback, callback.getExecutor());
952 urlRequestBuilder.build().start(); 960 urlRequestBuilder.build().start();
953 callback.blockForDone(); 961 callback.blockForDone();
954 testFramework.mCronetEngine.stopNetLog(); 962 testFramework.mCronetEngine.stopNetLog();
955 assertTrue(eventFile.exists()); 963 assertTrue(eventFile.exists());
956 assertTrue(eventFile.length() != 0); 964 assertTrue(eventFile.length() != 0);
957 assertFalse(hasBytesInNetLog(eventFile)); 965 assertFalse(hasBytesInNetLog(eventFile));
958 FileUtils.recursivelyDeleteFile(netLogDir); 966 FileUtils.recursivelyDeleteFile(netLogDir);
959 assertFalse(netLogDir.exists()); 967 assertFalse(netLogDir.exists());
960 } 968 }
961 969
962 @SmallTest 970 @SmallTest
963 @Feature({"Cronet"}) 971 @Feature({"Cronet"})
964 public void testNetLogStopMultipleTimes() throws Exception { 972 public void testNetLogStopMultipleTimes() throws Exception {
965 final CronetTestFramework testFramework = startCronetTestFramework(); 973 final CronetTestFramework testFramework = startCronetTestFramework();
966 File directory = new File(PathUtils.getDataDirectory()); 974 File directory = new File(PathUtils.getDataDirectory());
967 File file = File.createTempFile("cronet", "json", directory); 975 File file = File.createTempFile("cronet", "json", directory);
968 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false); 976 testFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
969 // Start a request. 977 // Start a request.
970 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 978 TestUrlRequestCallback callback = new TestUrlRequestCallback();
971 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 979 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
972 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 980 mUrl, callback, callback.getExecutor());
973 urlRequestBuilder.build().start(); 981 urlRequestBuilder.build().start();
974 callback.blockForDone(); 982 callback.blockForDone();
975 // Stop NetLog multiple times. 983 // Stop NetLog multiple times.
976 testFramework.mCronetEngine.stopNetLog(); 984 testFramework.mCronetEngine.stopNetLog();
977 testFramework.mCronetEngine.stopNetLog(); 985 testFramework.mCronetEngine.stopNetLog();
978 testFramework.mCronetEngine.stopNetLog(); 986 testFramework.mCronetEngine.stopNetLog();
979 testFramework.mCronetEngine.stopNetLog(); 987 testFramework.mCronetEngine.stopNetLog();
980 testFramework.mCronetEngine.stopNetLog(); 988 testFramework.mCronetEngine.stopNetLog();
981 assertTrue(file.exists()); 989 assertTrue(file.exists());
982 assertTrue(file.length() != 0); 990 assertTrue(file.length() != 0);
983 assertFalse(hasBytesInNetLog(file)); 991 assertFalse(hasBytesInNetLog(file));
984 assertTrue(file.delete()); 992 assertTrue(file.delete());
985 assertTrue(!file.exists()); 993 assertTrue(!file.exists());
986 } 994 }
987 995
988 @SmallTest 996 @SmallTest
989 @Feature({"Cronet"}) 997 @Feature({"Cronet"})
990 public void testBoundedFileNetLogStopMultipleTimes() throws Exception { 998 public void testBoundedFileNetLogStopMultipleTimes() throws Exception {
991 final CronetTestFramework testFramework = startCronetTestFramework(); 999 final CronetTestFramework testFramework = startCronetTestFramework();
992 File directory = new File(PathUtils.getDataDirectory()); 1000 File directory = new File(PathUtils.getDataDirectory());
993 File netLogDir = new File(directory, "NetLog"); 1001 File netLogDir = new File(directory, "NetLog");
994 assertFalse(netLogDir.exists()); 1002 assertFalse(netLogDir.exists());
995 assertTrue(netLogDir.mkdir()); 1003 assertTrue(netLogDir.mkdir());
996 File eventFile = new File(netLogDir, "event_file_0.json"); 1004 File eventFile = new File(netLogDir, "event_file_0.json");
997 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE); 1005 testFramework.mCronetEngine.startNetLogToDisk(netLogDir.getPath(), false , MAX_FILE_SIZE);
998 // Start a request. 1006 // Start a request.
999 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1007 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1000 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 1008 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
1001 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 1009 mUrl, callback, callback.getExecutor());
1002 urlRequestBuilder.build().start(); 1010 urlRequestBuilder.build().start();
1003 callback.blockForDone(); 1011 callback.blockForDone();
1004 // Stop NetLog multiple times. This should be equivalent to stopping Net Log once. 1012 // Stop NetLog multiple times. This should be equivalent to stopping Net Log once.
1005 // Each subsequent stop (without calling startNetLogToDisk first) should be a no-op. 1013 // Each subsequent stop (without calling startNetLogToDisk first) should be a no-op.
1006 testFramework.mCronetEngine.stopNetLog(); 1014 testFramework.mCronetEngine.stopNetLog();
1007 testFramework.mCronetEngine.stopNetLog(); 1015 testFramework.mCronetEngine.stopNetLog();
1008 testFramework.mCronetEngine.stopNetLog(); 1016 testFramework.mCronetEngine.stopNetLog();
1009 testFramework.mCronetEngine.stopNetLog(); 1017 testFramework.mCronetEngine.stopNetLog();
1010 testFramework.mCronetEngine.stopNetLog(); 1018 testFramework.mCronetEngine.stopNetLog();
1011 assertTrue(eventFile.exists()); 1019 assertTrue(eventFile.exists());
1012 assertTrue(eventFile.length() != 0); 1020 assertTrue(eventFile.length() != 0);
1013 assertFalse(hasBytesInNetLog(eventFile)); 1021 assertFalse(hasBytesInNetLog(eventFile));
1014 FileUtils.recursivelyDeleteFile(netLogDir); 1022 FileUtils.recursivelyDeleteFile(netLogDir);
1015 assertFalse(netLogDir.exists()); 1023 assertFalse(netLogDir.exists());
1016 } 1024 }
1017 1025
1018 @SmallTest 1026 @SmallTest
1019 @Feature({"Cronet"}) 1027 @Feature({"Cronet"})
1020 @OnlyRunNativeCronet 1028 @OnlyRunNativeCronet
1021 public void testNetLogWithBytes() throws Exception { 1029 public void testNetLogWithBytes() throws Exception {
1022 Context context = getContext(); 1030 Context context = getContext();
1023 File directory = new File(PathUtils.getDataDirectory()); 1031 File directory = new File(PathUtils.getDataDirectory());
1024 File file = File.createTempFile("cronet", "json", directory); 1032 File file = File.createTempFile("cronet", "json", directory);
1025 CronetEngine cronetEngine = new CronetUrlRequestContext( 1033 CronetEngine cronetEngine = new CronetUrlRequestContext(
1026 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 1034 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
1027 // Start NetLog with logAll as true. 1035 // Start NetLog with logAll as true.
1028 cronetEngine.startNetLogToFile(file.getPath(), true); 1036 cronetEngine.startNetLogToFile(file.getPath(), true);
1029 // Start a request. 1037 // Start a request.
1030 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1038 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1031 UrlRequest.Builder urlRequestBuilder = 1039 UrlRequest.Builder urlRequestBuilder =
1032 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 1040 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
1033 urlRequestBuilder.build().start(); 1041 urlRequestBuilder.build().start();
1034 callback.blockForDone(); 1042 callback.blockForDone();
1035 cronetEngine.stopNetLog(); 1043 cronetEngine.stopNetLog();
1036 assertTrue(file.exists()); 1044 assertTrue(file.exists());
1037 assertTrue(file.length() != 0); 1045 assertTrue(file.length() != 0);
1038 assertTrue(hasBytesInNetLog(file)); 1046 assertTrue(hasBytesInNetLog(file));
1039 assertTrue(file.delete()); 1047 assertTrue(file.delete());
1040 assertTrue(!file.exists()); 1048 assertTrue(!file.exists());
1041 } 1049 }
1042 1050
1043 @SmallTest 1051 @SmallTest
1044 @Feature({"Cronet"}) 1052 @Feature({"Cronet"})
1045 @OnlyRunNativeCronet 1053 @OnlyRunNativeCronet
1046 public void testBoundedFileNetLogWithBytes() throws Exception { 1054 public void testBoundedFileNetLogWithBytes() throws Exception {
1047 Context context = getContext(); 1055 Context context = getContext();
1048 File directory = new File(PathUtils.getDataDirectory()); 1056 File directory = new File(PathUtils.getDataDirectory());
1049 File netLogDir = new File(directory, "NetLog"); 1057 File netLogDir = new File(directory, "NetLog");
1050 assertFalse(netLogDir.exists()); 1058 assertFalse(netLogDir.exists());
1051 assertTrue(netLogDir.mkdir()); 1059 assertTrue(netLogDir.mkdir());
1052 File eventFile = new File(netLogDir, "event_file_0.json"); 1060 File eventFile = new File(netLogDir, "event_file_0.json");
1053 CronetUrlRequestContext cronetEngine = new CronetUrlRequestContext( 1061 CronetUrlRequestContext cronetEngine = new CronetUrlRequestContext(
1054 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 1062 new CronetEngineBuilderImpl(context).setLibraryName("cronet_test s"));
1055 // Start NetLog with logAll as true. 1063 // Start NetLog with logAll as true.
1056 cronetEngine.startNetLogToDisk(netLogDir.getPath(), true, MAX_FILE_SIZE) ; 1064 cronetEngine.startNetLogToDisk(netLogDir.getPath(), true, MAX_FILE_SIZE) ;
1057 // Start a request. 1065 // Start a request.
1058 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1066 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1059 UrlRequest.Builder urlRequestBuilder = 1067 UrlRequest.Builder urlRequestBuilder =
1060 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 1068 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
1061 urlRequestBuilder.build().start(); 1069 urlRequestBuilder.build().start();
1062 callback.blockForDone(); 1070 callback.blockForDone();
1063 cronetEngine.stopNetLog(); 1071 cronetEngine.stopNetLog();
1064 1072
1065 assertTrue(eventFile.exists()); 1073 assertTrue(eventFile.exists());
1066 assertTrue(eventFile.length() != 0); 1074 assertTrue(eventFile.length() != 0);
1067 assertTrue(hasBytesInNetLog(eventFile)); 1075 assertTrue(hasBytesInNetLog(eventFile));
1068 FileUtils.recursivelyDeleteFile(netLogDir); 1076 FileUtils.recursivelyDeleteFile(netLogDir);
1069 assertFalse(netLogDir.exists()); 1077 assertFalse(netLogDir.exists());
1070 } 1078 }
(...skipping 18 matching lines...) Expand all
1089 } 1097 }
1090 1098
1091 /** 1099 /**
1092 * Helper method to make a request to {@code url}, wait for it to 1100 * Helper method to make a request to {@code url}, wait for it to
1093 * complete, and check that the status code is the same as {@code expectedSt atusCode}. 1101 * complete, and check that the status code is the same as {@code expectedSt atusCode}.
1094 */ 1102 */
1095 private void makeRequestAndCheckStatus( 1103 private void makeRequestAndCheckStatus(
1096 CronetEngine engine, String url, int expectedStatusCode) { 1104 CronetEngine engine, String url, int expectedStatusCode) {
1097 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1105 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1098 UrlRequest request = 1106 UrlRequest request =
1099 new UrlRequest.Builder(url, callback, callback.getExecutor(), en gine).build(); 1107 engine.newUrlRequestBuilder(url, callback, callback.getExecutor( )).build();
1100 request.start(); 1108 request.start();
1101 callback.blockForDone(); 1109 callback.blockForDone();
1102 assertEquals(expectedStatusCode, callback.mResponseInfo.getHttpStatusCod e()); 1110 assertEquals(expectedStatusCode, callback.mResponseInfo.getHttpStatusCod e());
1103 } 1111 }
1104 1112
1105 private CronetTestFramework startCronetTestFrameworkWithCacheEnabled(int cac heType) 1113 private CronetTestFramework startCronetTestFrameworkWithCacheEnabled(int cac heType)
1106 throws Exception { 1114 throws Exception {
1107 String cacheTypeString = ""; 1115 String cacheTypeString = "";
1108 if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK) { 1116 if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK) {
1109 cacheTypeString = CronetTestFramework.CACHE_DISK; 1117 cacheTypeString = CronetTestFramework.CACHE_DISK;
(...skipping 10 matching lines...) Expand all
1120 } 1128 }
1121 1129
1122 private void checkRequestCaching(CronetEngine engine, String url, boolean ex pectCached) { 1130 private void checkRequestCaching(CronetEngine engine, String url, boolean ex pectCached) {
1123 checkRequestCaching(engine, url, expectCached, false); 1131 checkRequestCaching(engine, url, expectCached, false);
1124 } 1132 }
1125 1133
1126 private void checkRequestCaching( 1134 private void checkRequestCaching(
1127 CronetEngine engine, String url, boolean expectCached, boolean disab leCache) { 1135 CronetEngine engine, String url, boolean expectCached, boolean disab leCache) {
1128 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1136 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1129 UrlRequest.Builder urlRequestBuilder = 1137 UrlRequest.Builder urlRequestBuilder =
1130 new UrlRequest.Builder(url, callback, callback.getExecutor(), en gine); 1138 engine.newUrlRequestBuilder(url, callback, callback.getExecutor( ));
1131 if (disableCache) { 1139 if (disableCache) {
1132 urlRequestBuilder.disableCache(); 1140 urlRequestBuilder.disableCache();
1133 } 1141 }
1134 urlRequestBuilder.build().start(); 1142 urlRequestBuilder.build().start();
1135 callback.blockForDone(); 1143 callback.blockForDone();
1136 assertEquals(expectCached, callback.mResponseInfo.wasCached()); 1144 assertEquals(expectCached, callback.mResponseInfo.wasCached());
1137 assertEquals("this is a cacheable file\n", callback.mResponseAsString); 1145 assertEquals("this is a cacheable file\n", callback.mResponseAsString);
1138 } 1146 }
1139 1147
1140 @SmallTest 1148 @SmallTest
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1199 // When cache is enabled, the second request is cached. 1207 // When cache is enabled, the second request is cached.
1200 checkRequestCaching(testFramework.mCronetEngine, url, false, true /** di sable cache */); 1208 checkRequestCaching(testFramework.mCronetEngine, url, false, true /** di sable cache */);
1201 checkRequestCaching(testFramework.mCronetEngine, url, true); 1209 checkRequestCaching(testFramework.mCronetEngine, url, true);
1202 1210
1203 // Shut down the server, next request should have a cached response. 1211 // Shut down the server, next request should have a cached response.
1204 NativeTestServer.shutdownNativeTestServer(); 1212 NativeTestServer.shutdownNativeTestServer();
1205 checkRequestCaching(testFramework.mCronetEngine, url, true); 1213 checkRequestCaching(testFramework.mCronetEngine, url, true);
1206 1214
1207 // Cache is disabled after server is shut down, request should fail. 1215 // Cache is disabled after server is shut down, request should fail.
1208 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1216 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1209 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 1217 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
1210 url, callback, callback.getExecutor(), testFramework.mCronetEngi ne); 1218 url, callback, callback.getExecutor());
1211 urlRequestBuilder.disableCache(); 1219 urlRequestBuilder.disableCache();
1212 urlRequestBuilder.build().start(); 1220 urlRequestBuilder.build().start();
1213 callback.blockForDone(); 1221 callback.blockForDone();
1214 assertNotNull(callback.mError); 1222 assertNotNull(callback.mError);
1215 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", 1223 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ",
1216 callback.mError.getMessage()); 1224 callback.mError.getMessage());
1217 } 1225 }
1218 1226
1219 @SmallTest 1227 @SmallTest
1220 @Feature({"Cronet"}) 1228 @Feature({"Cronet"})
1221 public void testEnableHttpCacheDiskNewEngine() throws Exception { 1229 public void testEnableHttpCacheDiskNewEngine() throws Exception {
1222 final CronetTestFramework testFramework = 1230 final CronetTestFramework testFramework =
1223 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT TP_CACHE_DISK); 1231 startCronetTestFrameworkWithCacheEnabled(CronetEngine.Builder.HT TP_CACHE_DISK);
1224 String url = NativeTestServer.getFileURL("/cacheable.txt"); 1232 String url = NativeTestServer.getFileURL("/cacheable.txt");
1225 checkRequestCaching(testFramework.mCronetEngine, url, false); 1233 checkRequestCaching(testFramework.mCronetEngine, url, false);
1226 checkRequestCaching(testFramework.mCronetEngine, url, true); 1234 checkRequestCaching(testFramework.mCronetEngine, url, true);
1227 NativeTestServer.shutdownNativeTestServer(); 1235 NativeTestServer.shutdownNativeTestServer();
1228 checkRequestCaching(testFramework.mCronetEngine, url, true); 1236 checkRequestCaching(testFramework.mCronetEngine, url, true);
1229 1237
1230 // Shutdown original context and create another that uses the same cache . 1238 // Shutdown original context and create another that uses the same cache .
1231 testFramework.mCronetEngine.shutdown(); 1239 testFramework.mCronetEngine.shutdown();
1232 testFramework.mCronetEngine = testFramework.getCronetEngineBuilder().bui ld(); 1240 testFramework.mCronetEngine =
1241 (CronetEngineBase) testFramework.getCronetEngineBuilder().build( );
1233 checkRequestCaching(testFramework.mCronetEngine, url, true); 1242 checkRequestCaching(testFramework.mCronetEngine, url, true);
1234 } 1243 }
1235 1244
1236 @SmallTest 1245 @SmallTest
1237 @Feature({"Cronet"}) 1246 @Feature({"Cronet"})
1238 public void testInitEngineAndStartRequest() { 1247 public void testInitEngineAndStartRequest() {
1239 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra ryInit(); 1248 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra ryInit();
1240 1249
1241 // Immediately make a request after initializing the engine. 1250 // Immediately make a request after initializing the engine.
1242 CronetEngine cronetEngine = testFramework.initCronetEngine(); 1251 CronetEngine cronetEngine = testFramework.initCronetEngine();
1243 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1252 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1244 UrlRequest.Builder urlRequestBuilder = 1253 UrlRequest.Builder urlRequestBuilder =
1245 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 1254 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
1246 urlRequestBuilder.build().start(); 1255 urlRequestBuilder.build().start();
1247 callback.blockForDone(); 1256 callback.blockForDone();
1248 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1257 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1249 } 1258 }
1250 1259
1251 @SmallTest 1260 @SmallTest
1252 @Feature({"Cronet"}) 1261 @Feature({"Cronet"})
1253 public void testEmptyGetCertVerifierData() { 1262 public void testEmptyGetCertVerifierData() {
1254 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra ryInit(); 1263 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra ryInit();
1255 1264
1256 // Immediately make a request after initializing the engine. 1265 // Immediately make a request after initializing the engine.
1257 CronetEngine cronetEngine = testFramework.initCronetEngine(); 1266 CronetEngine cronetEngine = testFramework.initCronetEngine();
1258 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1267 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1259 UrlRequest.Builder urlRequestBuilder = 1268 UrlRequest.Builder urlRequestBuilder =
1260 new UrlRequest.Builder(mUrl, callback, callback.getExecutor(), c ronetEngine); 1269 cronetEngine.newUrlRequestBuilder(mUrl, callback, callback.getEx ecutor());
1261 urlRequestBuilder.build().start(); 1270 urlRequestBuilder.build().start();
1262 callback.blockForDone(); 1271 callback.blockForDone();
1263 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1272 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1264 1273
1265 try { 1274 try {
1266 cronetEngine.getCertVerifierData(-1); 1275 cronetEngine.getCertVerifierData(-1);
1267 fail("Should throw an exception"); 1276 fail("Should throw an exception");
1268 } catch (Exception e) { 1277 } catch (Exception e) {
1269 assertEquals("timeout must be a positive value", e.getMessage()); 1278 assertEquals("timeout must be a positive value", e.getMessage());
1270 } 1279 }
1271 // Because mUrl is http, getCertVerifierData() will return empty data. 1280 // Because mUrl is http, getCertVerifierData() will return empty data.
1272 String data = cronetEngine.getCertVerifierData(100); 1281 String data = cronetEngine.getCertVerifierData(100);
1273 assertTrue(data.isEmpty()); 1282 assertTrue(data.isEmpty());
1274 } 1283 }
1275 1284
1276 @SmallTest 1285 @SmallTest
1277 @Feature({"Cronet"}) 1286 @Feature({"Cronet"})
1278 public void testInitEngineStartTwoRequests() throws Exception { 1287 public void testInitEngineStartTwoRequests() throws Exception {
1279 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra ryInit(); 1288 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipLibra ryInit();
1280 1289
1281 // Make two requests after initializing the context. 1290 // Make two requests after initializing the context.
1282 CronetEngine cronetEngine = testFramework.initCronetEngine(); 1291 CronetEngine cronetEngine = testFramework.initCronetEngine();
1283 int[] statusCodes = {0, 0}; 1292 int[] statusCodes = {0, 0};
1284 String[] urls = {mUrl, mUrl404}; 1293 String[] urls = {mUrl, mUrl404};
1285 for (int i = 0; i < 2; i++) { 1294 for (int i = 0; i < 2; i++) {
1286 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1295 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1287 UrlRequest.Builder urlRequestBuilder = 1296 UrlRequest.Builder urlRequestBuilder =
1288 new UrlRequest.Builder(urls[i], callback, callback.getExecut or(), cronetEngine); 1297 cronetEngine.newUrlRequestBuilder(urls[i], callback, callbac k.getExecutor());
1289 urlRequestBuilder.build().start(); 1298 urlRequestBuilder.build().start();
1290 callback.blockForDone(); 1299 callback.blockForDone();
1291 statusCodes[i] = callback.mResponseInfo.getHttpStatusCode(); 1300 statusCodes[i] = callback.mResponseInfo.getHttpStatusCode();
1292 } 1301 }
1293 assertEquals(200, statusCodes[0]); 1302 assertEquals(200, statusCodes[0]);
1294 assertEquals(404, statusCodes[1]); 1303 assertEquals(404, statusCodes[1]);
1295 } 1304 }
1296 1305
1297 @SmallTest 1306 @SmallTest
1298 @Feature({"Cronet"}) 1307 @Feature({"Cronet"})
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1331 } 1340 }
1332 1341
1333 @SmallTest 1342 @SmallTest
1334 @Feature({"Cronet"}) 1343 @Feature({"Cronet"})
1335 public void testInitDifferentEngines() throws Exception { 1344 public void testInitDifferentEngines() throws Exception {
1336 // Test that concurrently instantiating Cronet context's upon various 1345 // Test that concurrently instantiating Cronet context's upon various
1337 // different versions of the same Android Context does not cause crashes 1346 // different versions of the same Android Context does not cause crashes
1338 // like crbug.com/453845 1347 // like crbug.com/453845
1339 final CronetTestFramework testFramework = startCronetTestFramework(); 1348 final CronetTestFramework testFramework = startCronetTestFramework();
1340 CronetEngine firstEngine = 1349 CronetEngine firstEngine =
1341 new CronetUrlRequestContext(testFramework.createCronetEngineBuil der(getContext())); 1350 new CronetUrlRequestContext(CronetTestUtil.getCronetEngineBuilde rImpl(
1351 testFramework.createCronetEngineBuilder(getContext())));
1342 CronetEngine secondEngine = new CronetUrlRequestContext( 1352 CronetEngine secondEngine = new CronetUrlRequestContext(
1343 testFramework.createCronetEngineBuilder(getContext().getApplicat ionContext())); 1353 CronetTestUtil.getCronetEngineBuilderImpl(testFramework.createCr onetEngineBuilder(
1344 CronetEngine thirdEngine = new CronetUrlRequestContext( 1354 getContext().getApplicationContext())));
1345 testFramework.createCronetEngineBuilder(new ContextWrapper(getCo ntext()))); 1355 CronetEngine thirdEngine =
1356 new CronetUrlRequestContext(CronetTestUtil.getCronetEngineBuilde rImpl(
1357 testFramework.createCronetEngineBuilder(getContext())));
1346 firstEngine.shutdown(); 1358 firstEngine.shutdown();
1347 secondEngine.shutdown(); 1359 secondEngine.shutdown();
1348 thirdEngine.shutdown(); 1360 thirdEngine.shutdown();
1349 } 1361 }
1350 1362
1351 @SmallTest 1363 @SmallTest
1352 @Feature({"Cronet"}) 1364 @Feature({"Cronet"})
1353 public void testGetGlobalMetricsDeltas() throws Exception { 1365 public void testGetGlobalMetricsDeltas() throws Exception {
1354 final CronetTestFramework testFramework = startCronetTestFramework(); 1366 final CronetTestFramework testFramework = startCronetTestFramework();
1355 1367
1356 byte delta1[] = testFramework.mCronetEngine.getGlobalMetricsDeltas(); 1368 byte delta1[] = testFramework.mCronetEngine.getGlobalMetricsDeltas();
1357 1369
1358 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1370 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1359 UrlRequest.Builder builder = new UrlRequest.Builder( 1371 UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBu ilder(
1360 mUrl, callback, callback.getExecutor(), testFramework.mCronetEng ine); 1372 mUrl, callback, callback.getExecutor());
1361 builder.build().start(); 1373 builder.build().start();
1362 callback.blockForDone(); 1374 callback.blockForDone();
1363 byte delta2[] = testFramework.mCronetEngine.getGlobalMetricsDeltas(); 1375 byte delta2[] = testFramework.mCronetEngine.getGlobalMetricsDeltas();
1364 assertTrue(delta2.length != 0); 1376 assertTrue(delta2.length != 0);
1365 assertFalse(Arrays.equals(delta1, delta2)); 1377 assertFalse(Arrays.equals(delta1, delta2));
1366 } 1378 }
1367 1379
1368 @SmallTest 1380 @SmallTest
1369 @Feature({"Cronet"}) 1381 @Feature({"Cronet"})
1370 public void testCronetEngineBuilderConfig() throws Exception { 1382 public void testCronetEngineBuilderConfig() throws Exception {
1371 // This is to prompt load of native library. 1383 // This is to prompt load of native library.
1372 startCronetTestFramework(); 1384 startCronetTestFramework();
1373 // Verify CronetEngine.Builder config is passed down accurately to nativ e code. 1385 // Verify CronetEngine.Builder config is passed down accurately to nativ e code.
1374 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 1386 CronetEngineBuilderImpl builder = new CronetEngineBuilderImpl(getContext ());
1375 builder.enableHttp2(false); 1387 builder.enableHttp2(false);
1376 builder.enableQuic(true); 1388 builder.enableQuic(true);
1377 builder.enableSdch(true); 1389 builder.enableSdch(true);
1378 builder.addQuicHint("example.com", 12, 34); 1390 builder.addQuicHint("example.com", 12, 34);
1379 builder.setCertVerifierData("test_cert_verifier_data"); 1391 builder.setCertVerifierData("test_cert_verifier_data");
1380 builder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 54321 ); 1392 builder.enableHttpCache(CronetEngineBuilderImpl.HTTP_CACHE_IN_MEMORY, 54 321);
1381 builder.enableDataReductionProxy("abcd"); 1393 builder.enableDataReductionProxy("abcd");
1382 builder.setUserAgent("efgh"); 1394 builder.setUserAgent("efgh");
1383 builder.setExperimentalOptions("ijkl"); 1395 builder.setExperimentalOptions("ijkl");
1384 builder.setDataReductionProxyOptions("mnop", "qrst", "uvwx"); 1396 builder.setDataReductionProxyOptions("mnop", "qrst", "uvwx");
1385 builder.setStoragePath(CronetTestFramework.getTestStorage(getContext())) ; 1397 builder.setStoragePath(CronetTestFramework.getTestStorage(getContext())) ;
1386 builder.enablePublicKeyPinningBypassForLocalTrustAnchors(false); 1398 builder.enablePublicKeyPinningBypassForLocalTrustAnchors(false);
1387 nativeVerifyUrlRequestContextConfig( 1399 nativeVerifyUrlRequestContextConfig(
1388 CronetUrlRequestContext.createNativeUrlRequestContextConfig(getC ontext(), builder), 1400 CronetUrlRequestContext.createNativeUrlRequestContextConfig(getC ontext(), builder),
1389 CronetTestFramework.getTestStorage(getContext())); 1401 CronetTestFramework.getTestStorage(getContext()));
1390 } 1402 }
(...skipping 12 matching lines...) Expand all
1403 1415
1404 boolean wasCalled() { 1416 boolean wasCalled() {
1405 return mWasCalled; 1417 return mWasCalled;
1406 } 1418 }
1407 } 1419 }
1408 1420
1409 @SmallTest 1421 @SmallTest
1410 @Feature({"Cronet"}) 1422 @Feature({"Cronet"})
1411 @OnlyRunNativeCronet 1423 @OnlyRunNativeCronet
1412 public void testSkipLibraryLoading() throws Exception { 1424 public void testSkipLibraryLoading() throws Exception {
1413 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 1425 CronetEngineBuilderImpl builder = new CronetEngineBuilderImpl(getContext ());
1414 TestBadLibraryLoader loader = new TestBadLibraryLoader(); 1426 TestBadLibraryLoader loader = new TestBadLibraryLoader();
1415 builder.setLibraryLoader(loader).setLibraryName("cronet_tests"); 1427 builder.setLibraryLoader(loader).setLibraryName("cronet_tests");
1416 try { 1428 try {
1417 // ensureInitialized() calls native code to check the version right after library load 1429 // ensureInitialized() calls native code to check the version right after library load
1418 // and will error with the message below if library loading was skip ped 1430 // and will error with the message below if library loading was skip ped
1419 CronetLibraryLoader.ensureInitialized(getContext(), builder); 1431 CronetLibraryLoader.ensureInitialized(getContext(), builder);
1420 fail("Native library should not be loaded"); 1432 fail("Native library should not be loaded");
1421 } catch (UnsatisfiedLinkError e) { 1433 } catch (UnsatisfiedLinkError e) {
1422 assertTrue(loader.wasCalled()); 1434 assertTrue(loader.wasCalled());
1423 } 1435 }
1424 } 1436 }
1425 1437
1426 // Creates a CronetEngine on another thread and then one on the main thread. This shouldn't 1438 // Creates a CronetEngine on another thread and then one on the main thread. This shouldn't
1427 // crash. 1439 // crash.
1428 @SmallTest 1440 @SmallTest
1429 @Feature({"Cronet"}) 1441 @Feature({"Cronet"})
1430 public void testThreadedStartup() throws Exception { 1442 public void testThreadedStartup() throws Exception {
1431 final ConditionVariable otherThreadDone = new ConditionVariable(); 1443 final ConditionVariable otherThreadDone = new ConditionVariable();
1432 final ConditionVariable uiThreadDone = new ConditionVariable(); 1444 final ConditionVariable uiThreadDone = new ConditionVariable();
1433 new Handler(Looper.getMainLooper()).post(new Runnable() { 1445 new Handler(Looper.getMainLooper()).post(new Runnable() {
1434 public void run() { 1446 public void run() {
1435 final CronetEngine.Builder builder = 1447 final CronetEngine.Builder builder =
1436 new CronetEngine.Builder(getContext()).setLibraryName("c ronet_tests"); 1448 new ExperimentalCronetEngine.Builder(getContext());
1449 CronetTestUtil.setLibraryName(builder, "cronet_tests");
1437 new Thread() { 1450 new Thread() {
1438 public void run() { 1451 public void run() {
1439 CronetEngine cronetEngine = builder.build(); 1452 CronetEngine cronetEngine = builder.build();
1440 otherThreadDone.open(); 1453 otherThreadDone.open();
1441 cronetEngine.shutdown(); 1454 cronetEngine.shutdown();
1442 } 1455 }
1443 }.start(); 1456 }.start();
1444 otherThreadDone.block(); 1457 otherThreadDone.block();
1445 builder.build().shutdown(); 1458 builder.build().shutdown();
1446 uiThreadDone.open(); 1459 uiThreadDone.open();
1447 } 1460 }
1448 }); 1461 });
1449 assertTrue(uiThreadDone.block(1000)); 1462 assertTrue(uiThreadDone.block(1000));
1450 } 1463 }
1451 1464
1452 @SmallTest 1465 @SmallTest
1453 @Feature({"Cronet"}) 1466 @Feature({"Cronet"})
1454 public void testHostResolverRules() throws Exception { 1467 public void testHostResolverRules() throws Exception {
1455 String resolverTestHostname = "some-weird-hostname"; 1468 String resolverTestHostname = "some-weird-hostname";
1456 URL testUrl = new URL(mUrl); 1469 URL testUrl = new URL(mUrl);
1457 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC ontext()); 1470 ExperimentalCronetEngine.Builder cronetEngineBuilder =
1471 new ExperimentalCronetEngine.Builder(getContext());
1458 JSONObject hostResolverRules = new JSONObject().put( 1472 JSONObject hostResolverRules = new JSONObject().put(
1459 "host_resolver_rules", "MAP " + resolverTestHostname + " " + tes tUrl.getHost()); 1473 "host_resolver_rules", "MAP " + resolverTestHostname + " " + tes tUrl.getHost());
1460 JSONObject experimentalOptions = 1474 JSONObject experimentalOptions =
1461 new JSONObject().put("HostResolverRules", hostResolverRules); 1475 new JSONObject().put("HostResolverRules", hostResolverRules);
1462 cronetEngineBuilder.setExperimentalOptions(experimentalOptions.toString( )); 1476 cronetEngineBuilder.setExperimentalOptions(experimentalOptions.toString( ));
1463 1477
1464 final CronetTestFramework testFramework = 1478 final CronetTestFramework testFramework =
1465 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, cron etEngineBuilder); 1479 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, cron etEngineBuilder);
1466 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1480 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1467 URL requestUrl = 1481 URL requestUrl =
1468 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl .getFile()); 1482 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl .getFile());
1469 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(requestUrl .toString(), 1483 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
1470 callback, callback.getExecutor(), testFramework.mCronetEngine); 1484 requestUrl.toString(), callback, callback.getExecutor());
1471 urlRequestBuilder.build().start(); 1485 urlRequestBuilder.build().start();
1472 callback.blockForDone(); 1486 callback.blockForDone();
1473 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1487 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1474 } 1488 }
1475 } 1489 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698