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

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

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

Powered by Google App Engine
This is Rietveld 408576698