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

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

Issue 1417973002: [Cronet] Switch from InstrumentationTest to junit (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address Helen's comments Created 5 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; 8 import android.content.ContextWrapper;
9 import android.os.ConditionVariable; 9 import android.os.ConditionVariable;
10 import android.os.Handler; 10 import android.os.Handler;
(...skipping 16 matching lines...) Expand all
27 */ 27 */
28 public class CronetUrlRequestContextTest extends CronetTestBase { 28 public class CronetUrlRequestContextTest extends CronetTestBase {
29 // URLs used for tests. 29 // URLs used for tests.
30 private static final String TEST_URL = "http://127.0.0.1:8000"; 30 private static final String TEST_URL = "http://127.0.0.1:8000";
31 private static final String URL_404 = "http://127.0.0.1:8000/notfound404"; 31 private static final String URL_404 = "http://127.0.0.1:8000/notfound404";
32 private static final String MOCK_CRONET_TEST_FAILED_URL = 32 private static final String MOCK_CRONET_TEST_FAILED_URL =
33 "http://mock.failed.request/-2"; 33 "http://mock.failed.request/-2";
34 private static final String MOCK_CRONET_TEST_SUCCESS_URL = 34 private static final String MOCK_CRONET_TEST_SUCCESS_URL =
35 "http://mock.http/success.txt"; 35 "http://mock.http/success.txt";
36 36
37 CronetTestActivity mActivity; 37 CronetTestFramework mTestFramework;
38 38
39 static class RequestThread extends Thread { 39 static class RequestThread extends Thread {
40 public TestUrlRequestListener mListener; 40 public TestUrlRequestListener mListener;
41 41
42 final CronetTestActivity mActivity; 42 final CronetTestFramework mTestFramework;
43 final String mUrl; 43 final String mUrl;
44 final ConditionVariable mRunBlocker; 44 final ConditionVariable mRunBlocker;
45 45
46 public RequestThread(CronetTestActivity activity, String url, 46 public RequestThread(
47 ConditionVariable runBlocker) { 47 CronetTestFramework testFramework, String url, ConditionVariable runBlocker) {
48 mActivity = activity; 48 mTestFramework = testFramework;
49 mUrl = url; 49 mUrl = url;
50 mRunBlocker = runBlocker; 50 mRunBlocker = runBlocker;
51 } 51 }
52 52
53 @Override 53 @Override
54 public void run() { 54 public void run() {
55 mRunBlocker.block(); 55 mRunBlocker.block();
56 CronetEngine cronetEngine = mActivity.initCronetEngine(); 56 CronetEngine cronetEngine = mTestFramework.initCronetEngine();
57 mListener = new TestUrlRequestListener(); 57 mListener = new TestUrlRequestListener();
58 UrlRequest.Builder urlRequestBuilder = 58 UrlRequest.Builder urlRequestBuilder =
59 new UrlRequest.Builder(mUrl, mListener, mListener.getExecuto r(), cronetEngine); 59 new UrlRequest.Builder(mUrl, mListener, mListener.getExecuto r(), cronetEngine);
60 urlRequestBuilder.build().start(); 60 urlRequestBuilder.build().start();
61 mListener.blockForDone(); 61 mListener.blockForDone();
62 } 62 }
63 } 63 }
64 64
65 /** 65 /**
66 * Listener that shutdowns the request context when request has succeeded 66 * Listener that shutdowns the request context when request has succeeded
67 * or failed. 67 * or failed.
68 */ 68 */
69 class ShutdownTestUrlRequestListener extends TestUrlRequestListener { 69 class ShutdownTestUrlRequestListener extends TestUrlRequestListener {
70 @Override 70 @Override
71 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { 71 public void onSucceeded(UrlRequest request, UrlResponseInfo info) {
72 super.onSucceeded(request, info); 72 super.onSucceeded(request, info);
73 mActivity.mCronetEngine.shutdown(); 73 mTestFramework.mCronetEngine.shutdown();
74 } 74 }
75 75
76 @Override 76 @Override
77 public void onFailed(UrlRequest request, UrlResponseInfo info, UrlReques tException error) { 77 public void onFailed(UrlRequest request, UrlResponseInfo info, UrlReques tException error) {
78 super.onFailed(request, info, error); 78 super.onFailed(request, info, error);
79 mActivity.mCronetEngine.shutdown(); 79 mTestFramework.mCronetEngine.shutdown();
80 } 80 }
81 } 81 }
82 82
83 static class TestExecutor implements Executor { 83 static class TestExecutor implements Executor {
84 private final LinkedList<Runnable> mTaskQueue = new LinkedList<Runnable> (); 84 private final LinkedList<Runnable> mTaskQueue = new LinkedList<Runnable> ();
85 85
86 @Override 86 @Override
87 public void execute(Runnable task) { 87 public void execute(Runnable task) {
88 mTaskQueue.add(task); 88 mTaskQueue.add(task);
89 } 89 }
(...skipping 28 matching lines...) Expand all
118 public int throughputObservationCount() { 118 public int throughputObservationCount() {
119 return mThroughputObservationCount; 119 return mThroughputObservationCount;
120 } 120 }
121 } 121 }
122 122
123 @SmallTest 123 @SmallTest
124 @Feature({"Cronet"}) 124 @Feature({"Cronet"})
125 public void testConfigUserAgent() throws Exception { 125 public void testConfigUserAgent() throws Exception {
126 String userAgentName = "User-Agent"; 126 String userAgentName = "User-Agent";
127 String userAgentValue = "User-Agent-Value"; 127 String userAgentValue = "User-Agent-Value";
128 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(mAct ivity); 128 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC ontext());
129 cronetEngineBuilder.setUserAgent(userAgentValue); 129 cronetEngineBuilder.setUserAgent(userAgentValue);
130 cronetEngineBuilder.setLibraryName("cronet_tests"); 130 cronetEngineBuilder.setLibraryName("cronet_tests");
131 String[] commandLineArgs = {CronetTestActivity.CONFIG_KEY, cronetEngineB uilder.toString()}; 131 String[] commandLineArgs = {CronetTestFramework.CONFIG_KEY, cronetEngine Builder.toString()};
132 mActivity = launchCronetTestAppWithUrlAndCommandLineArgs(TEST_URL, 132 mTestFramework =
133 commandLineArgs); 133 startCronetTestFrameworkWithUrlAndCommandLineArgs(TEST_URL, comm andLineArgs);
134 assertTrue(NativeTestServer.startNativeTestServer( 134 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
135 getInstrumentation().getTargetContext()));
136 TestUrlRequestListener listener = new TestUrlRequestListener(); 135 TestUrlRequestListener listener = new TestUrlRequestListener();
137 UrlRequest.Builder urlRequestBuilder = 136 UrlRequest.Builder urlRequestBuilder =
138 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), listener, 137 new UrlRequest.Builder(NativeTestServer.getEchoHeaderURL(userAge ntName), listener,
139 listener.getExecutor(), mActivity.mCronetEngine); 138 listener.getExecutor(), mTestFramework.mCronetEngine);
140 urlRequestBuilder.build().start(); 139 urlRequestBuilder.build().start();
141 listener.blockForDone(); 140 listener.blockForDone();
142 assertEquals(userAgentValue, listener.mResponseAsString); 141 assertEquals(userAgentValue, listener.mResponseAsString);
143 } 142 }
144 143
145 @SmallTest 144 @SmallTest
146 @Feature({"Cronet"}) 145 @Feature({"Cronet"})
147 public void testDataReductionProxyEnabled() throws Exception { 146 public void testDataReductionProxyEnabled() throws Exception {
148 mActivity = launchCronetTestAppAndSkipFactoryInit(); 147 mTestFramework = startCronetTestFrameworkAndSkipFactoryInit();
149 148
150 // Ensure native code is loaded before trying to start test server. 149 // Ensure native code is loaded before trying to start test server.
151 new CronetEngine.Builder(getInstrumentation().getTargetContext()) 150 new CronetEngine.Builder(getContext()).setLibraryName("cronet_tests").bu ild().shutdown();
152 .setLibraryName("cronet_tests")
153 .build()
154 .shutdown();
155 151
156 assertTrue(NativeTestServer.startNativeTestServer( 152 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
157 getInstrumentation().getTargetContext()));
158 if (!NativeTestServer.isDataReductionProxySupported()) { 153 if (!NativeTestServer.isDataReductionProxySupported()) {
159 return; 154 return;
160 } 155 }
161 String serverHostPort = NativeTestServer.getHostPort(); 156 String serverHostPort = NativeTestServer.getHostPort();
162 157
163 // Enable the Data Reduction Proxy and configure it to use the test 158 // Enable the Data Reduction Proxy and configure it to use the test
164 // server as its primary proxy, and to check successfully that this 159 // server as its primary proxy, and to check successfully that this
165 // proxy is OK to use. 160 // proxy is OK to use.
166 CronetEngine.Builder cronetEngineBuilder = 161 CronetEngine.Builder cronetEngineBuilder = new CronetEngine.Builder(getC ontext());
167 new CronetEngine.Builder(getInstrumentation().getTargetContext() );
168 cronetEngineBuilder.enableDataReductionProxy("test-key"); 162 cronetEngineBuilder.enableDataReductionProxy("test-key");
169 cronetEngineBuilder.setDataReductionProxyOptions(serverHostPort, "unused .net:9999", 163 cronetEngineBuilder.setDataReductionProxyOptions(serverHostPort, "unused .net:9999",
170 NativeTestServer.getFileURL("/secureproxychecksuccess.txt")); 164 NativeTestServer.getFileURL("/secureproxychecksuccess.txt"));
171 cronetEngineBuilder.setLibraryName("cronet_tests"); 165 cronetEngineBuilder.setLibraryName("cronet_tests");
172 mActivity.mCronetEngine = cronetEngineBuilder.build(); 166 mTestFramework.mCronetEngine = cronetEngineBuilder.build();
173 TestUrlRequestListener listener = new TestUrlRequestListener(); 167 TestUrlRequestListener listener = new TestUrlRequestListener();
174 168
175 // Construct and start a request that can only be returned by the test 169 // Construct and start a request that can only be returned by the test
176 // server. This request will fail if the configuration logic for the 170 // server. This request will fail if the configuration logic for the
177 // Data Reduction Proxy is not used. 171 // Data Reduction Proxy is not used.
178 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 172 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
179 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt", listener, 173 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt", listener,
180 listener.getExecutor(), mActivity.mCronetEngine); 174 listener.getExecutor(), mTestFramework.mCronetEngine);
181 urlRequestBuilder.build().start(); 175 urlRequestBuilder.build().start();
182 listener.blockForDone(); 176 listener.blockForDone();
183 177
184 // Verify that the request is successful and that the Data Reduction 178 // Verify that the request is successful and that the Data Reduction
185 // Proxy logic configured to use the test server as its proxy. 179 // Proxy logic configured to use the test server as its proxy.
186 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 180 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
187 assertEquals(serverHostPort, listener.mResponseInfo.getProxyServer()); 181 assertEquals(serverHostPort, listener.mResponseInfo.getProxyServer());
188 assertEquals( 182 assertEquals(
189 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt", 183 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt",
190 listener.mResponseInfo.getUrl()); 184 listener.mResponseInfo.getUrl());
191 } 185 }
192 186
193 @SmallTest 187 @SmallTest
194 @Feature({"Cronet"}) 188 @Feature({"Cronet"})
195 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion { 189 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion {
196 mActivity = launchCronetTestApp(); 190 mTestFramework = startCronetTestFramework();
197 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(); 191 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener();
198 try { 192 try {
199 mActivity.mCronetEngine.addRttListener(networkQualityListener); 193 mTestFramework.mCronetEngine.addRttListener(networkQualityListener);
200 fail("Should throw an exception."); 194 fail("Should throw an exception.");
201 } catch (IllegalStateException e) { 195 } catch (IllegalStateException e) {
202 } 196 }
203 try { 197 try {
204 mActivity.mCronetEngine.addThroughputListener(networkQualityListener ); 198 mTestFramework.mCronetEngine.addThroughputListener(networkQualityLis tener);
205 fail("Should throw an exception."); 199 fail("Should throw an exception.");
206 } catch (IllegalStateException e) { 200 } catch (IllegalStateException e) {
207 } 201 }
208 TestUrlRequestListener listener = new TestUrlRequestListener(); 202 TestUrlRequestListener listener = new TestUrlRequestListener();
209 UrlRequest urlRequest = 203 UrlRequest urlRequest = mTestFramework.mCronetEngine.createRequest(
210 mActivity.mCronetEngine.createRequest(TEST_URL, listener, listen er.getExecutor()); 204 TEST_URL, listener, listener.getExecutor());
211 urlRequest.start(); 205 urlRequest.start();
212 listener.blockForDone(); 206 listener.blockForDone();
213 assertEquals(0, networkQualityListener.rttObservationCount()); 207 assertEquals(0, networkQualityListener.rttObservationCount());
214 assertEquals(0, networkQualityListener.throughputObservationCount()); 208 assertEquals(0, networkQualityListener.throughputObservationCount());
215 mActivity.mCronetEngine.shutdown(); 209 mTestFramework.mCronetEngine.shutdown();
216 } 210 }
217 211
218 @SmallTest 212 @SmallTest
219 @Feature({"Cronet"}) 213 @Feature({"Cronet"})
220 public void testRealTimeNetworkQualityObservationsListenerRemoved() throws E xception { 214 public void testRealTimeNetworkQualityObservationsListenerRemoved() throws E xception {
221 mActivity = launchCronetTestApp(); 215 mTestFramework = startCronetTestFramework();
222 TestExecutor testExecutor = new TestExecutor(); 216 TestExecutor testExecutor = new TestExecutor();
223 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(); 217 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener();
224 mActivity.mCronetEngine.enableNetworkQualityEstimatorForTesting(true, tr ue, testExecutor); 218 mTestFramework.mCronetEngine.enableNetworkQualityEstimatorForTesting(
225 mActivity.mCronetEngine.addRttListener(networkQualityListener); 219 true, true, testExecutor);
226 mActivity.mCronetEngine.addThroughputListener(networkQualityListener); 220 mTestFramework.mCronetEngine.addRttListener(networkQualityListener);
227 mActivity.mCronetEngine.removeRttListener(networkQualityListener); 221 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r);
228 mActivity.mCronetEngine.removeThroughputListener(networkQualityListener) ; 222 mTestFramework.mCronetEngine.removeRttListener(networkQualityListener);
223 mTestFramework.mCronetEngine.removeThroughputListener(networkQualityList ener);
229 TestUrlRequestListener listener = new TestUrlRequestListener(); 224 TestUrlRequestListener listener = new TestUrlRequestListener();
230 UrlRequest urlRequest = 225 UrlRequest urlRequest = mTestFramework.mCronetEngine.createRequest(
231 mActivity.mCronetEngine.createRequest(TEST_URL, listener, listen er.getExecutor()); 226 TEST_URL, listener, listener.getExecutor());
232 urlRequest.start(); 227 urlRequest.start();
233 listener.blockForDone(); 228 listener.blockForDone();
234 testExecutor.runAllTasks(); 229 testExecutor.runAllTasks();
235 assertEquals(0, networkQualityListener.rttObservationCount()); 230 assertEquals(0, networkQualityListener.rttObservationCount());
236 assertEquals(0, networkQualityListener.throughputObservationCount()); 231 assertEquals(0, networkQualityListener.throughputObservationCount());
237 mActivity.mCronetEngine.shutdown(); 232 mTestFramework.mCronetEngine.shutdown();
238 } 233 }
239 234
240 @SmallTest 235 @SmallTest
241 @Feature({"Cronet"}) 236 @Feature({"Cronet"})
242 public void testRealTimeNetworkQualityObservations() throws Exception { 237 public void testRealTimeNetworkQualityObservations() throws Exception {
243 mActivity = launchCronetTestApp(); 238 mTestFramework = startCronetTestFramework();
244 TestExecutor testExecutor = new TestExecutor(); 239 TestExecutor testExecutor = new TestExecutor();
245 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(); 240 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener();
246 mActivity.mCronetEngine.enableNetworkQualityEstimatorForTesting(true, tr ue, testExecutor); 241 mTestFramework.mCronetEngine.enableNetworkQualityEstimatorForTesting(
247 mActivity.mCronetEngine.addRttListener(networkQualityListener); 242 true, true, testExecutor);
248 mActivity.mCronetEngine.addThroughputListener(networkQualityListener); 243 mTestFramework.mCronetEngine.addRttListener(networkQualityListener);
244 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r);
249 TestUrlRequestListener listener = new TestUrlRequestListener(); 245 TestUrlRequestListener listener = new TestUrlRequestListener();
250 UrlRequest urlRequest = 246 UrlRequest urlRequest = mTestFramework.mCronetEngine.createRequest(
251 mActivity.mCronetEngine.createRequest(TEST_URL, listener, listen er.getExecutor()); 247 TEST_URL, listener, listener.getExecutor());
252 urlRequest.start(); 248 urlRequest.start();
253 listener.blockForDone(); 249 listener.blockForDone();
254 testExecutor.runAllTasks(); 250 testExecutor.runAllTasks();
255 assertTrue(networkQualityListener.rttObservationCount() > 0); 251 assertTrue(networkQualityListener.rttObservationCount() > 0);
256 assertTrue(networkQualityListener.throughputObservationCount() > 0); 252 assertTrue(networkQualityListener.throughputObservationCount() > 0);
257 mActivity.mCronetEngine.shutdown(); 253 mTestFramework.mCronetEngine.shutdown();
258 } 254 }
259 255
260 @SmallTest 256 @SmallTest
261 @Feature({"Cronet"}) 257 @Feature({"Cronet"})
262 public void testShutdown() throws Exception { 258 public void testShutdown() throws Exception {
263 mActivity = launchCronetTestApp(); 259 mTestFramework = startCronetTestFramework();
264 TestUrlRequestListener listener = new ShutdownTestUrlRequestListener(); 260 TestUrlRequestListener listener = new ShutdownTestUrlRequestListener();
265 // Block listener when response starts to verify that shutdown fails 261 // Block listener when response starts to verify that shutdown fails
266 // if there are active requests. 262 // if there are active requests.
267 listener.setAutoAdvance(false); 263 listener.setAutoAdvance(false);
268 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 264 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
269 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 265 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
270 UrlRequest urlRequest = urlRequestBuilder.build(); 266 UrlRequest urlRequest = urlRequestBuilder.build();
271 urlRequest.start(); 267 urlRequest.start();
272 try { 268 try {
273 mActivity.mCronetEngine.shutdown(); 269 mTestFramework.mCronetEngine.shutdown();
274 fail("Should throw an exception"); 270 fail("Should throw an exception");
275 } catch (Exception e) { 271 } catch (Exception e) {
276 assertEquals("Cannot shutdown with active requests.", 272 assertEquals("Cannot shutdown with active requests.",
277 e.getMessage()); 273 e.getMessage());
278 } 274 }
279 275
280 listener.waitForNextStep(); 276 listener.waitForNextStep();
281 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); 277 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep);
282 try { 278 try {
283 mActivity.mCronetEngine.shutdown(); 279 mTestFramework.mCronetEngine.shutdown();
284 fail("Should throw an exception"); 280 fail("Should throw an exception");
285 } catch (Exception e) { 281 } catch (Exception e) {
286 assertEquals("Cannot shutdown with active requests.", 282 assertEquals("Cannot shutdown with active requests.",
287 e.getMessage()); 283 e.getMessage());
288 } 284 }
289 listener.startNextRead(urlRequest); 285 listener.startNextRead(urlRequest);
290 286
291 listener.waitForNextStep(); 287 listener.waitForNextStep();
292 assertEquals(ResponseStep.ON_READ_COMPLETED, listener.mResponseStep); 288 assertEquals(ResponseStep.ON_READ_COMPLETED, listener.mResponseStep);
293 try { 289 try {
294 mActivity.mCronetEngine.shutdown(); 290 mTestFramework.mCronetEngine.shutdown();
295 fail("Should throw an exception"); 291 fail("Should throw an exception");
296 } catch (Exception e) { 292 } catch (Exception e) {
297 assertEquals("Cannot shutdown with active requests.", 293 assertEquals("Cannot shutdown with active requests.",
298 e.getMessage()); 294 e.getMessage());
299 } 295 }
300 296
301 // May not have read all the data, in theory. Just enable auto-advance 297 // May not have read all the data, in theory. Just enable auto-advance
302 // and finish the request. 298 // and finish the request.
303 listener.setAutoAdvance(true); 299 listener.setAutoAdvance(true);
304 listener.startNextRead(urlRequest); 300 listener.startNextRead(urlRequest);
305 listener.blockForDone(); 301 listener.blockForDone();
306 } 302 }
307 303
308 @SmallTest 304 @SmallTest
309 @Feature({"Cronet"}) 305 @Feature({"Cronet"})
310 public void testShutdownDuringInit() throws Exception { 306 public void testShutdownDuringInit() throws Exception {
311 final CronetTestActivity activity = launchCronetTestAppAndSkipFactoryIni t(); 307 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki pFactoryInit();
312 final ConditionVariable block = new ConditionVariable(false); 308 final ConditionVariable block = new ConditionVariable(false);
313 309
314 // Post a task to main thread to block until shutdown is called to test 310 // Post a task to main thread to block until shutdown is called to test
315 // scenario when shutdown is called right after construction before 311 // scenario when shutdown is called right after construction before
316 // context is fully initialized on the main thread. 312 // context is fully initialized on the main thread.
317 Runnable blockingTask = new Runnable() { 313 Runnable blockingTask = new Runnable() {
318 public void run() { 314 public void run() {
319 try { 315 try {
320 block.block(); 316 block.block();
321 } catch (Exception e) { 317 } catch (Exception e) {
322 fail("Caught " + e.getMessage()); 318 fail("Caught " + e.getMessage());
323 } 319 }
324 } 320 }
325 }; 321 };
326 // Ensure that test is not running on the main thread. 322 // Ensure that test is not running on the main thread.
327 assertTrue(Looper.getMainLooper() != Looper.myLooper()); 323 assertTrue(Looper.getMainLooper() != Looper.myLooper());
328 new Handler(Looper.getMainLooper()).post(blockingTask); 324 new Handler(Looper.getMainLooper()).post(blockingTask);
329 325
330 // Create new request context, but its initialization on the main thread 326 // Create new request context, but its initialization on the main thread
331 // will be stuck behind blockingTask. 327 // will be stuck behind blockingTask.
332 final CronetEngine cronetEngine = activity.initCronetEngine(); 328 final CronetEngine cronetEngine = testFramework.initCronetEngine();
333 // Unblock the main thread, so context gets initialized and shutdown on 329 // Unblock the main thread, so context gets initialized and shutdown on
334 // it. 330 // it.
335 block.open(); 331 block.open();
336 // Shutdown will wait for init to complete on main thread. 332 // Shutdown will wait for init to complete on main thread.
337 cronetEngine.shutdown(); 333 cronetEngine.shutdown();
338 // Verify that context is shutdown. 334 // Verify that context is shutdown.
339 try { 335 try {
340 cronetEngine.stopNetLog(); 336 cronetEngine.stopNetLog();
341 fail("Should throw an exception."); 337 fail("Should throw an exception.");
342 } catch (Exception e) { 338 } catch (Exception e) {
343 assertEquals("Engine is shut down.", e.getMessage()); 339 assertEquals("Engine is shut down.", e.getMessage());
344 } 340 }
345 } 341 }
346 342
347 @SmallTest 343 @SmallTest
348 @Feature({"Cronet"}) 344 @Feature({"Cronet"})
349 public void testInitAndShutdownOnMainThread() throws Exception { 345 public void testInitAndShutdownOnMainThread() throws Exception {
350 final CronetTestActivity activity = launchCronetTestAppAndSkipFactoryIni t(); 346 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki pFactoryInit();
351 final ConditionVariable block = new ConditionVariable(false); 347 final ConditionVariable block = new ConditionVariable(false);
352 348
353 // Post a task to main thread to init and shutdown on the main thread. 349 // Post a task to main thread to init and shutdown on the main thread.
354 Runnable blockingTask = new Runnable() { 350 Runnable blockingTask = new Runnable() {
355 public void run() { 351 public void run() {
356 // Create new request context, loading the library. 352 // Create new request context, loading the library.
357 final CronetEngine cronetEngine = activity.initCronetEngine(); 353 final CronetEngine cronetEngine = testFramework.initCronetEngine ();
358 // Shutdown right after init. 354 // Shutdown right after init.
359 cronetEngine.shutdown(); 355 cronetEngine.shutdown();
360 // Verify that context is shutdown. 356 // Verify that context is shutdown.
361 try { 357 try {
362 cronetEngine.stopNetLog(); 358 cronetEngine.stopNetLog();
363 fail("Should throw an exception."); 359 fail("Should throw an exception.");
364 } catch (Exception e) { 360 } catch (Exception e) {
365 assertEquals("Engine is shut down.", e.getMessage()); 361 assertEquals("Engine is shut down.", e.getMessage());
366 } 362 }
367 block.open(); 363 block.open();
368 } 364 }
369 }; 365 };
370 new Handler(Looper.getMainLooper()).post(blockingTask); 366 new Handler(Looper.getMainLooper()).post(blockingTask);
371 // Wait for shutdown to complete on main thread. 367 // Wait for shutdown to complete on main thread.
372 block.block(); 368 block.block();
373 } 369 }
374 370
375 @SmallTest 371 @SmallTest
376 @Feature({"Cronet"}) 372 @Feature({"Cronet"})
377 public void testMultipleShutdown() throws Exception { 373 public void testMultipleShutdown() throws Exception {
378 mActivity = launchCronetTestApp(); 374 mTestFramework = startCronetTestFramework();
379 try { 375 try {
380 mActivity.mCronetEngine.shutdown(); 376 mTestFramework.mCronetEngine.shutdown();
381 mActivity.mCronetEngine.shutdown(); 377 mTestFramework.mCronetEngine.shutdown();
382 fail("Should throw an exception"); 378 fail("Should throw an exception");
383 } catch (Exception e) { 379 } catch (Exception e) {
384 assertEquals("Engine is shut down.", e.getMessage()); 380 assertEquals("Engine is shut down.", e.getMessage());
385 } 381 }
386 } 382 }
387 383
388 @SmallTest 384 @SmallTest
389 @Feature({"Cronet"}) 385 @Feature({"Cronet"})
390 public void testShutdownAfterError() throws Exception { 386 public void testShutdownAfterError() throws Exception {
391 mActivity = launchCronetTestApp(); 387 mTestFramework = startCronetTestFramework();
392 TestUrlRequestListener listener = new ShutdownTestUrlRequestListener(); 388 TestUrlRequestListener listener = new ShutdownTestUrlRequestListener();
393 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(MOCK_CRONE T_TEST_FAILED_URL, 389 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(MOCK_CRONE T_TEST_FAILED_URL,
394 listener, listener.getExecutor(), mActivity.mCronetEngine); 390 listener, listener.getExecutor(), mTestFramework.mCronetEngine);
395 urlRequestBuilder.build().start(); 391 urlRequestBuilder.build().start();
396 listener.blockForDone(); 392 listener.blockForDone();
397 assertTrue(listener.mOnErrorCalled); 393 assertTrue(listener.mOnErrorCalled);
398 } 394 }
399 395
400 @SmallTest 396 @SmallTest
401 @Feature({"Cronet"}) 397 @Feature({"Cronet"})
402 public void testShutdownAfterCancel() throws Exception { 398 public void testShutdownAfterCancel() throws Exception {
403 mActivity = launchCronetTestApp(); 399 mTestFramework = startCronetTestFramework();
404 TestUrlRequestListener listener = new TestUrlRequestListener(); 400 TestUrlRequestListener listener = new TestUrlRequestListener();
405 // Block listener when response starts to verify that shutdown fails 401 // Block listener when response starts to verify that shutdown fails
406 // if there are active requests. 402 // if there are active requests.
407 listener.setAutoAdvance(false); 403 listener.setAutoAdvance(false);
408 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 404 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
409 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 405 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
410 UrlRequest urlRequest = urlRequestBuilder.build(); 406 UrlRequest urlRequest = urlRequestBuilder.build();
411 urlRequest.start(); 407 urlRequest.start();
412 try { 408 try {
413 mActivity.mCronetEngine.shutdown(); 409 mTestFramework.mCronetEngine.shutdown();
414 fail("Should throw an exception"); 410 fail("Should throw an exception");
415 } catch (Exception e) { 411 } catch (Exception e) {
416 assertEquals("Cannot shutdown with active requests.", 412 assertEquals("Cannot shutdown with active requests.",
417 e.getMessage()); 413 e.getMessage());
418 } 414 }
419 listener.waitForNextStep(); 415 listener.waitForNextStep();
420 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep); 416 assertEquals(ResponseStep.ON_RESPONSE_STARTED, listener.mResponseStep);
421 urlRequest.cancel(); 417 urlRequest.cancel();
422 mActivity.mCronetEngine.shutdown(); 418 mTestFramework.mCronetEngine.shutdown();
423 } 419 }
424 420
425 @SmallTest 421 @SmallTest
426 @Feature({"Cronet"}) 422 @Feature({"Cronet"})
427 public void testNetLog() throws Exception { 423 public void testNetLog() throws Exception {
428 Context context = getInstrumentation().getTargetContext(); 424 Context context = getContext();
429 File directory = new File(PathUtils.getDataDirectory(context)); 425 File directory = new File(PathUtils.getDataDirectory(context));
430 File file = File.createTempFile("cronet", "json", directory); 426 File file = File.createTempFile("cronet", "json", directory);
431 CronetEngine cronetEngine = new CronetUrlRequestContext( 427 CronetEngine cronetEngine = new CronetUrlRequestContext(
432 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 428 new CronetEngine.Builder(context).setLibraryName("cronet_tests") );
433 // Start NetLog immediately after the request context is created to make 429 // Start NetLog immediately after the request context is created to make
434 // sure that the call won't crash the app even when the native request 430 // sure that the call won't crash the app even when the native request
435 // context is not fully initialized. See crbug.com/470196. 431 // context is not fully initialized. See crbug.com/470196.
436 cronetEngine.startNetLogToFile(file.getPath(), false); 432 cronetEngine.startNetLogToFile(file.getPath(), false);
437 433
438 // Start a request. 434 // Start a request.
439 TestUrlRequestListener listener = new TestUrlRequestListener(); 435 TestUrlRequestListener listener = new TestUrlRequestListener();
440 UrlRequest.Builder urlRequestBuilder = 436 UrlRequest.Builder urlRequestBuilder =
441 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ), cronetEngine); 437 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ), cronetEngine);
442 urlRequestBuilder.build().start(); 438 urlRequestBuilder.build().start();
443 listener.blockForDone(); 439 listener.blockForDone();
444 cronetEngine.stopNetLog(); 440 cronetEngine.stopNetLog();
445 assertTrue(file.exists()); 441 assertTrue(file.exists());
446 assertTrue(file.length() != 0); 442 assertTrue(file.length() != 0);
447 assertFalse(hasBytesInNetLog(file)); 443 assertFalse(hasBytesInNetLog(file));
448 assertTrue(file.delete()); 444 assertTrue(file.delete());
449 assertTrue(!file.exists()); 445 assertTrue(!file.exists());
450 } 446 }
451 447
452 @SmallTest 448 @SmallTest
453 @Feature({"Cronet"}) 449 @Feature({"Cronet"})
454 public void testNetLogAfterShutdown() throws Exception { 450 public void testNetLogAfterShutdown() throws Exception {
455 mActivity = launchCronetTestApp(); 451 mTestFramework = startCronetTestFramework();
456 TestUrlRequestListener listener = new TestUrlRequestListener(); 452 TestUrlRequestListener listener = new TestUrlRequestListener();
457 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 453 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
458 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 454 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
459 urlRequestBuilder.build().start(); 455 urlRequestBuilder.build().start();
460 listener.blockForDone(); 456 listener.blockForDone();
461 mActivity.mCronetEngine.shutdown(); 457 mTestFramework.mCronetEngine.shutdown();
462 458
463 File directory = new File(PathUtils.getDataDirectory( 459 File directory = new File(PathUtils.getDataDirectory(getContext()));
464 getInstrumentation().getTargetContext()));
465 File file = File.createTempFile("cronet", "json", directory); 460 File file = File.createTempFile("cronet", "json", directory);
466 try { 461 try {
467 mActivity.mCronetEngine.startNetLogToFile(file.getPath(), false); 462 mTestFramework.mCronetEngine.startNetLogToFile(file.getPath(), false );
468 fail("Should throw an exception."); 463 fail("Should throw an exception.");
469 } catch (Exception e) { 464 } catch (Exception e) {
470 assertEquals("Engine is shut down.", e.getMessage()); 465 assertEquals("Engine is shut down.", e.getMessage());
471 } 466 }
472 assertFalse(hasBytesInNetLog(file)); 467 assertFalse(hasBytesInNetLog(file));
473 assertTrue(file.delete()); 468 assertTrue(file.delete());
474 assertTrue(!file.exists()); 469 assertTrue(!file.exists());
475 } 470 }
476 471
477 @SmallTest 472 @SmallTest
478 @Feature({"Cronet"}) 473 @Feature({"Cronet"})
479 public void testNetLogStartMultipleTimes() throws Exception { 474 public void testNetLogStartMultipleTimes() throws Exception {
480 mActivity = launchCronetTestApp(); 475 mTestFramework = startCronetTestFramework();
481 File directory = new File(PathUtils.getDataDirectory( 476 File directory = new File(PathUtils.getDataDirectory(getContext()));
482 getInstrumentation().getTargetContext()));
483 File file = File.createTempFile("cronet", "json", directory); 477 File file = File.createTempFile("cronet", "json", directory);
484 // Start NetLog multiple times. 478 // Start NetLog multiple times.
485 mActivity.mCronetEngine.startNetLogToFile(file.getPath(), false); 479 mTestFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
486 mActivity.mCronetEngine.startNetLogToFile(file.getPath(), false); 480 mTestFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
487 mActivity.mCronetEngine.startNetLogToFile(file.getPath(), false); 481 mTestFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
488 mActivity.mCronetEngine.startNetLogToFile(file.getPath(), false); 482 mTestFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
489 // Start a request. 483 // Start a request.
490 TestUrlRequestListener listener = new TestUrlRequestListener(); 484 TestUrlRequestListener listener = new TestUrlRequestListener();
491 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 485 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
492 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 486 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
493 urlRequestBuilder.build().start(); 487 urlRequestBuilder.build().start();
494 listener.blockForDone(); 488 listener.blockForDone();
495 mActivity.mCronetEngine.stopNetLog(); 489 mTestFramework.mCronetEngine.stopNetLog();
496 assertTrue(file.exists()); 490 assertTrue(file.exists());
497 assertTrue(file.length() != 0); 491 assertTrue(file.length() != 0);
498 assertFalse(hasBytesInNetLog(file)); 492 assertFalse(hasBytesInNetLog(file));
499 assertTrue(file.delete()); 493 assertTrue(file.delete());
500 assertTrue(!file.exists()); 494 assertTrue(!file.exists());
501 } 495 }
502 496
503 @SmallTest 497 @SmallTest
504 @Feature({"Cronet"}) 498 @Feature({"Cronet"})
505 public void testNetLogStopMultipleTimes() throws Exception { 499 public void testNetLogStopMultipleTimes() throws Exception {
506 mActivity = launchCronetTestApp(); 500 mTestFramework = startCronetTestFramework();
507 File directory = new File(PathUtils.getDataDirectory( 501 File directory = new File(PathUtils.getDataDirectory(getContext()));
508 getInstrumentation().getTargetContext()));
509 File file = File.createTempFile("cronet", "json", directory); 502 File file = File.createTempFile("cronet", "json", directory);
510 mActivity.mCronetEngine.startNetLogToFile(file.getPath(), false); 503 mTestFramework.mCronetEngine.startNetLogToFile(file.getPath(), false);
511 // Start a request. 504 // Start a request.
512 TestUrlRequestListener listener = new TestUrlRequestListener(); 505 TestUrlRequestListener listener = new TestUrlRequestListener();
513 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 506 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
514 TEST_URL, listener, listener.getExecutor(), mActivity.mCronetEng ine); 507 TEST_URL, listener, listener.getExecutor(), mTestFramework.mCron etEngine);
515 urlRequestBuilder.build().start(); 508 urlRequestBuilder.build().start();
516 listener.blockForDone(); 509 listener.blockForDone();
517 // Stop NetLog multiple times. 510 // Stop NetLog multiple times.
518 mActivity.mCronetEngine.stopNetLog(); 511 mTestFramework.mCronetEngine.stopNetLog();
519 mActivity.mCronetEngine.stopNetLog(); 512 mTestFramework.mCronetEngine.stopNetLog();
520 mActivity.mCronetEngine.stopNetLog(); 513 mTestFramework.mCronetEngine.stopNetLog();
521 mActivity.mCronetEngine.stopNetLog(); 514 mTestFramework.mCronetEngine.stopNetLog();
522 mActivity.mCronetEngine.stopNetLog(); 515 mTestFramework.mCronetEngine.stopNetLog();
523 assertTrue(file.exists()); 516 assertTrue(file.exists());
524 assertTrue(file.length() != 0); 517 assertTrue(file.length() != 0);
525 assertFalse(hasBytesInNetLog(file)); 518 assertFalse(hasBytesInNetLog(file));
526 assertTrue(file.delete()); 519 assertTrue(file.delete());
527 assertTrue(!file.exists()); 520 assertTrue(!file.exists());
528 } 521 }
529 522
530 @SmallTest 523 @SmallTest
531 @Feature({"Cronet"}) 524 @Feature({"Cronet"})
532 public void testNetLogWithBytes() throws Exception { 525 public void testNetLogWithBytes() throws Exception {
533 Context context = getInstrumentation().getTargetContext(); 526 Context context = getContext();
534 File directory = new File(PathUtils.getDataDirectory(context)); 527 File directory = new File(PathUtils.getDataDirectory(context));
535 File file = File.createTempFile("cronet", "json", directory); 528 File file = File.createTempFile("cronet", "json", directory);
536 CronetEngine cronetEngine = new CronetUrlRequestContext( 529 CronetEngine cronetEngine = new CronetUrlRequestContext(
537 new CronetEngine.Builder(context).setLibraryName("cronet_tests") ); 530 new CronetEngine.Builder(context).setLibraryName("cronet_tests") );
538 // Start NetLog with logAll as true. 531 // Start NetLog with logAll as true.
539 cronetEngine.startNetLogToFile(file.getPath(), true); 532 cronetEngine.startNetLogToFile(file.getPath(), true);
540 // Start a request. 533 // Start a request.
541 TestUrlRequestListener listener = new TestUrlRequestListener(); 534 TestUrlRequestListener listener = new TestUrlRequestListener();
542 UrlRequest.Builder urlRequestBuilder = 535 UrlRequest.Builder urlRequestBuilder =
543 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ), cronetEngine); 536 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ), cronetEngine);
(...skipping 18 matching lines...) Expand all
562 } 555 }
563 return false; 556 return false;
564 } finally { 557 } finally {
565 logReader.close(); 558 logReader.close();
566 } 559 }
567 } 560 }
568 561
569 private void enableCache(int cacheType) throws Exception { 562 private void enableCache(int cacheType) throws Exception {
570 String cacheTypeString = ""; 563 String cacheTypeString = "";
571 if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK) { 564 if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK) {
572 cacheTypeString = CronetTestActivity.CACHE_DISK; 565 cacheTypeString = CronetTestFramework.CACHE_DISK;
573 } else if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP) { 566 } else if (cacheType == CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP) {
574 cacheTypeString = CronetTestActivity.CACHE_DISK_NO_HTTP; 567 cacheTypeString = CronetTestFramework.CACHE_DISK_NO_HTTP;
575 } else if (cacheType == CronetEngine.Builder.HTTP_CACHE_IN_MEMORY) { 568 } else if (cacheType == CronetEngine.Builder.HTTP_CACHE_IN_MEMORY) {
576 cacheTypeString = CronetTestActivity.CACHE_IN_MEMORY; 569 cacheTypeString = CronetTestFramework.CACHE_IN_MEMORY;
577 } 570 }
578 String[] commandLineArgs = {CronetTestActivity.CACHE_KEY, cacheTypeStrin g}; 571 String[] commandLineArgs = {CronetTestFramework.CACHE_KEY, cacheTypeStri ng};
579 mActivity = launchCronetTestAppWithUrlAndCommandLineArgs(null, 572 mTestFramework = startCronetTestFrameworkWithUrlAndCommandLineArgs(null, commandLineArgs);
580 commandLineArgs); 573 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
581 assertTrue(NativeTestServer.startNativeTestServer(
582 getInstrumentation().getTargetContext()));
583 } 574 }
584 575
585 private void checkRequestCaching(String url, boolean expectCached) { 576 private void checkRequestCaching(String url, boolean expectCached) {
586 checkRequestCaching(url, expectCached, false); 577 checkRequestCaching(url, expectCached, false);
587 } 578 }
588 579
589 private void checkRequestCaching(String url, boolean expectCached, 580 private void checkRequestCaching(String url, boolean expectCached,
590 boolean disableCache) { 581 boolean disableCache) {
591 TestUrlRequestListener listener = new TestUrlRequestListener(); 582 TestUrlRequestListener listener = new TestUrlRequestListener();
592 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 583 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
593 url, listener, listener.getExecutor(), mActivity.mCronetEngine); 584 url, listener, listener.getExecutor(), mTestFramework.mCronetEng ine);
594 if (disableCache) { 585 if (disableCache) {
595 urlRequestBuilder.disableCache(); 586 urlRequestBuilder.disableCache();
596 } 587 }
597 urlRequestBuilder.build().start(); 588 urlRequestBuilder.build().start();
598 listener.blockForDone(); 589 listener.blockForDone();
599 assertEquals(expectCached, listener.mResponseInfo.wasCached()); 590 assertEquals(expectCached, listener.mResponseInfo.wasCached());
600 } 591 }
601 592
602 @SmallTest 593 @SmallTest
603 @Feature({"Cronet"}) 594 @Feature({"Cronet"})
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 checkRequestCaching(url, false, true /** disable cache */); 646 checkRequestCaching(url, false, true /** disable cache */);
656 checkRequestCaching(url, true); 647 checkRequestCaching(url, true);
657 648
658 // Shut down the server, next request should have a cached response. 649 // Shut down the server, next request should have a cached response.
659 NativeTestServer.shutdownNativeTestServer(); 650 NativeTestServer.shutdownNativeTestServer();
660 checkRequestCaching(url, true); 651 checkRequestCaching(url, true);
661 652
662 // Cache is disabled after server is shut down, request should fail. 653 // Cache is disabled after server is shut down, request should fail.
663 TestUrlRequestListener listener = new TestUrlRequestListener(); 654 TestUrlRequestListener listener = new TestUrlRequestListener();
664 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 655 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
665 url, listener, listener.getExecutor(), mActivity.mCronetEngine); 656 url, listener, listener.getExecutor(), mTestFramework.mCronetEng ine);
666 urlRequestBuilder.disableCache(); 657 urlRequestBuilder.disableCache();
667 urlRequestBuilder.build().start(); 658 urlRequestBuilder.build().start();
668 listener.blockForDone(); 659 listener.blockForDone();
669 assertNotNull(listener.mError); 660 assertNotNull(listener.mError);
670 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ", 661 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REFUSED ",
671 listener.mError.getMessage()); 662 listener.mError.getMessage());
672 } 663 }
673 664
674 @SmallTest 665 @SmallTest
675 @Feature({"Cronet"}) 666 @Feature({"Cronet"})
676 public void testEnableHttpCacheDiskNewEngine() throws Exception { 667 public void testEnableHttpCacheDiskNewEngine() throws Exception {
677 enableCache(CronetEngine.Builder.HTTP_CACHE_DISK); 668 enableCache(CronetEngine.Builder.HTTP_CACHE_DISK);
678 String url = NativeTestServer.getFileURL("/cacheable.txt"); 669 String url = NativeTestServer.getFileURL("/cacheable.txt");
679 checkRequestCaching(url, false); 670 checkRequestCaching(url, false);
680 checkRequestCaching(url, true); 671 checkRequestCaching(url, true);
681 NativeTestServer.shutdownNativeTestServer(); 672 NativeTestServer.shutdownNativeTestServer();
682 checkRequestCaching(url, true); 673 checkRequestCaching(url, true);
683 674
684 // Shutdown original context and create another that uses the same cache . 675 // Shutdown original context and create another that uses the same cache .
685 mActivity.mCronetEngine.shutdown(); 676 mTestFramework.mCronetEngine.shutdown();
686 mActivity.mCronetEngine = mActivity.getCronetEngineBuilder().build(); 677 mTestFramework.mCronetEngine = mTestFramework.getCronetEngineBuilder().b uild();
687 checkRequestCaching(url, true); 678 checkRequestCaching(url, true);
688 } 679 }
689 680
690 @SmallTest 681 @SmallTest
691 @Feature({"Cronet"}) 682 @Feature({"Cronet"})
692 public void testInitEngineAndStartRequest() { 683 public void testInitEngineAndStartRequest() {
693 CronetTestActivity activity = launchCronetTestAppAndSkipFactoryInit(); 684 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipFacto ryInit();
694 685
695 // Immediately make a request after initializing the engine. 686 // Immediately make a request after initializing the engine.
696 CronetEngine cronetEngine = activity.initCronetEngine(); 687 CronetEngine cronetEngine = testFramework.initCronetEngine();
697 TestUrlRequestListener listener = new TestUrlRequestListener(); 688 TestUrlRequestListener listener = new TestUrlRequestListener();
698 UrlRequest.Builder urlRequestBuilder = 689 UrlRequest.Builder urlRequestBuilder =
699 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ), cronetEngine); 690 new UrlRequest.Builder(TEST_URL, listener, listener.getExecutor( ), cronetEngine);
700 urlRequestBuilder.build().start(); 691 urlRequestBuilder.build().start();
701 listener.blockForDone(); 692 listener.blockForDone();
702 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 693 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
703 } 694 }
704 695
705 @SmallTest 696 @SmallTest
706 @Feature({"Cronet"}) 697 @Feature({"Cronet"})
707 public void testInitEngineStartTwoRequests() throws Exception { 698 public void testInitEngineStartTwoRequests() throws Exception {
708 CronetTestActivity activity = launchCronetTestAppAndSkipFactoryInit(); 699 CronetTestFramework testFramework = startCronetTestFrameworkAndSkipFacto ryInit();
709 700
710 // Make two requests after initializing the context. 701 // Make two requests after initializing the context.
711 CronetEngine cronetEngine = activity.initCronetEngine(); 702 CronetEngine cronetEngine = testFramework.initCronetEngine();
712 int[] statusCodes = {0, 0}; 703 int[] statusCodes = {0, 0};
713 String[] urls = {TEST_URL, URL_404}; 704 String[] urls = {TEST_URL, URL_404};
714 for (int i = 0; i < 2; i++) { 705 for (int i = 0; i < 2; i++) {
715 TestUrlRequestListener listener = new TestUrlRequestListener(); 706 TestUrlRequestListener listener = new TestUrlRequestListener();
716 UrlRequest.Builder urlRequestBuilder = 707 UrlRequest.Builder urlRequestBuilder =
717 new UrlRequest.Builder(urls[i], listener, listener.getExecut or(), cronetEngine); 708 new UrlRequest.Builder(urls[i], listener, listener.getExecut or(), cronetEngine);
718 urlRequestBuilder.build().start(); 709 urlRequestBuilder.build().start();
719 listener.blockForDone(); 710 listener.blockForDone();
720 statusCodes[i] = listener.mResponseInfo.getHttpStatusCode(); 711 statusCodes[i] = listener.mResponseInfo.getHttpStatusCode();
721 } 712 }
722 assertEquals(200, statusCodes[0]); 713 assertEquals(200, statusCodes[0]);
723 assertEquals(404, statusCodes[1]); 714 assertEquals(404, statusCodes[1]);
724 } 715 }
725 716
726 @SmallTest 717 @SmallTest
727 @Feature({"Cronet"}) 718 @Feature({"Cronet"})
728 public void testInitTwoEnginesSimultaneously() throws Exception { 719 public void testInitTwoEnginesSimultaneously() throws Exception {
729 final CronetTestActivity activity = launchCronetTestAppAndSkipFactoryIni t(); 720 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki pFactoryInit();
730 721
731 // Threads will block on runBlocker to ensure simultaneous execution. 722 // Threads will block on runBlocker to ensure simultaneous execution.
732 ConditionVariable runBlocker = new ConditionVariable(false); 723 ConditionVariable runBlocker = new ConditionVariable(false);
733 RequestThread thread1 = new RequestThread(activity, TEST_URL, runBlocker ); 724 RequestThread thread1 = new RequestThread(testFramework, TEST_URL, runBl ocker);
734 RequestThread thread2 = new RequestThread(activity, URL_404, runBlocker) ; 725 RequestThread thread2 = new RequestThread(testFramework, URL_404, runBlo cker);
735 726
736 thread1.start(); 727 thread1.start();
737 thread2.start(); 728 thread2.start();
738 runBlocker.open(); 729 runBlocker.open();
739 thread1.join(); 730 thread1.join();
740 thread2.join(); 731 thread2.join();
741 assertEquals(200, thread1.mListener.mResponseInfo.getHttpStatusCode()); 732 assertEquals(200, thread1.mListener.mResponseInfo.getHttpStatusCode());
742 assertEquals(404, thread2.mListener.mResponseInfo.getHttpStatusCode()); 733 assertEquals(404, thread2.mListener.mResponseInfo.getHttpStatusCode());
743 } 734 }
744 735
745 @SmallTest 736 @SmallTest
746 @Feature({"Cronet"}) 737 @Feature({"Cronet"})
747 public void testInitTwoEnginesInSequence() throws Exception { 738 public void testInitTwoEnginesInSequence() throws Exception {
748 final CronetTestActivity activity = launchCronetTestAppAndSkipFactoryIni t(); 739 final CronetTestFramework testFramework = startCronetTestFrameworkAndSki pFactoryInit();
749 740
750 ConditionVariable runBlocker = new ConditionVariable(true); 741 ConditionVariable runBlocker = new ConditionVariable(true);
751 RequestThread thread1 = new RequestThread(activity, TEST_URL, runBlocker ); 742 RequestThread thread1 = new RequestThread(testFramework, TEST_URL, runBl ocker);
752 RequestThread thread2 = new RequestThread(activity, URL_404, runBlocker) ; 743 RequestThread thread2 = new RequestThread(testFramework, URL_404, runBlo cker);
753 744
754 thread1.start(); 745 thread1.start();
755 thread1.join(); 746 thread1.join();
756 thread2.start(); 747 thread2.start();
757 thread2.join(); 748 thread2.join();
758 assertEquals(200, thread1.mListener.mResponseInfo.getHttpStatusCode()); 749 assertEquals(200, thread1.mListener.mResponseInfo.getHttpStatusCode());
759 assertEquals(404, thread2.mListener.mResponseInfo.getHttpStatusCode()); 750 assertEquals(404, thread2.mListener.mResponseInfo.getHttpStatusCode());
760 } 751 }
761 752
762 @SmallTest 753 @SmallTest
763 @Feature({"Cronet"}) 754 @Feature({"Cronet"})
764 public void testInitDifferentEngines() throws Exception { 755 public void testInitDifferentEngines() throws Exception {
765 // Test that concurrently instantiating Cronet context's upon various 756 // Test that concurrently instantiating Cronet context's upon various
766 // different versions of the same Android Context does not cause crashes 757 // different versions of the same Android Context does not cause crashes
767 // like crbug.com/453845 758 // like crbug.com/453845
768 mActivity = launchCronetTestApp(); 759 mTestFramework = startCronetTestFramework();
769 CronetEngine firstEngine = 760 CronetEngine firstEngine =
770 new CronetUrlRequestContext(mActivity.createCronetEngineBuilder( mActivity)); 761 new CronetUrlRequestContext(mTestFramework.createCronetEngineBui lder(getContext()));
771 CronetEngine secondEngine = new CronetUrlRequestContext( 762 CronetEngine secondEngine = new CronetUrlRequestContext(
772 mActivity.createCronetEngineBuilder(mActivity.getApplicationCont ext())); 763 mTestFramework.createCronetEngineBuilder(getContext().getApplica tionContext()));
773 CronetEngine thirdEngine = new CronetUrlRequestContext( 764 CronetEngine thirdEngine = new CronetUrlRequestContext(
774 mActivity.createCronetEngineBuilder(new ContextWrapper(mActivity ))); 765 mTestFramework.createCronetEngineBuilder(new ContextWrapper(getC ontext())));
775 firstEngine.shutdown(); 766 firstEngine.shutdown();
776 secondEngine.shutdown(); 767 secondEngine.shutdown();
777 thirdEngine.shutdown(); 768 thirdEngine.shutdown();
778 } 769 }
779 } 770 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698