Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 static org.chromium.base.CollectionUtil.newHashSet; | 7 import static org.chromium.base.CollectionUtil.newHashSet; |
| 8 | 8 |
| 9 import android.content.Context; | 9 import android.content.Context; |
| 10 import android.content.ContextWrapper; | 10 import android.content.ContextWrapper; |
| 11 import android.os.ConditionVariable; | 11 import android.os.ConditionVariable; |
| 12 import android.os.Handler; | 12 import android.os.Handler; |
| 13 import android.os.Looper; | 13 import android.os.Looper; |
| 14 import android.test.suitebuilder.annotation.SmallTest; | 14 import android.test.suitebuilder.annotation.SmallTest; |
| 15 import android.util.SparseIntArray; | |
| 15 | 16 |
| 16 import org.chromium.base.PathUtils; | 17 import org.chromium.base.PathUtils; |
| 17 import org.chromium.base.annotations.JNINamespace; | 18 import org.chromium.base.annotations.JNINamespace; |
| 18 import org.chromium.base.test.util.Feature; | 19 import org.chromium.base.test.util.Feature; |
| 19 import org.chromium.base.test.util.FlakyTest; | 20 import org.chromium.base.test.util.FlakyTest; |
| 20 import org.chromium.net.CronetEngine.UrlRequestInfo; | 21 import org.chromium.net.CronetEngine.UrlRequestInfo; |
| 21 import org.chromium.net.TestUrlRequestCallback.ResponseStep; | 22 import org.chromium.net.TestUrlRequestCallback.ResponseStep; |
| 22 import org.chromium.net.test.EmbeddedTestServer; | 23 import org.chromium.net.test.EmbeddedTestServer; |
| 23 | 24 |
| 24 import java.io.BufferedReader; | 25 import java.io.BufferedReader; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 125 } | 126 } |
| 126 } | 127 } |
| 127 | 128 |
| 128 static class TestNetworkQualityListener | 129 static class TestNetworkQualityListener |
| 129 implements NetworkQualityRttListener, NetworkQualityThroughputListen er { | 130 implements NetworkQualityRttListener, NetworkQualityThroughputListen er { |
| 130 // Lock to ensure that observation counts can be updated and read by dif ferent threads. | 131 // Lock to ensure that observation counts can be updated and read by dif ferent threads. |
| 131 private final Object mLock = new Object(); | 132 private final Object mLock = new Object(); |
| 132 private final ConditionVariable mWaitForThroughput; | 133 private final ConditionVariable mWaitForThroughput; |
| 133 private int mRttObservationCount; | 134 private int mRttObservationCount; |
| 134 private int mThroughputObservationCount; | 135 private int mThroughputObservationCount; |
| 136 // Holds the RTT observations counts indexed by source. | |
| 137 private SparseIntArray mRttObservationCountBySource = new SparseIntArray (); | |
| 135 | 138 |
| 136 TestNetworkQualityListener(ConditionVariable waitForThroughput) { | 139 TestNetworkQualityListener(ConditionVariable waitForThroughput) { |
| 137 mWaitForThroughput = waitForThroughput; | 140 mWaitForThroughput = waitForThroughput; |
| 138 } | 141 } |
| 139 | 142 |
| 140 @Override | 143 @Override |
| 141 public void onRttObservation(int rttMs, long when, int source) { | 144 public void onRttObservation(int rttMs, long when, int source) { |
| 142 synchronized (mLock) { | 145 synchronized (mLock) { |
| 143 mRttObservationCount++; | 146 mRttObservationCount++; |
| 147 mRttObservationCountBySource.put( | |
| 148 source, mRttObservationCountBySource.get(source) + 1); | |
| 144 } | 149 } |
| 145 } | 150 } |
| 146 | 151 |
| 147 @Override | 152 @Override |
| 148 public void onThroughputObservation(int throughputKbps, long when, int s ource) { | 153 public void onThroughputObservation(int throughputKbps, long when, int s ource) { |
| 149 synchronized (mLock) { | 154 synchronized (mLock) { |
| 150 if (mWaitForThroughput != null) { | 155 if (mWaitForThroughput != null) { |
| 151 mWaitForThroughput.open(); | 156 mWaitForThroughput.open(); |
| 152 } | 157 } |
| 153 mThroughputObservationCount++; | 158 mThroughputObservationCount++; |
| 154 } | 159 } |
| 155 } | 160 } |
| 156 | 161 |
| 157 public int rttObservationCount() { | 162 public int rttObservationCount() { |
| 158 synchronized (mLock) { | 163 synchronized (mLock) { |
| 159 return mRttObservationCount; | 164 return mRttObservationCount; |
| 160 } | 165 } |
| 161 } | 166 } |
| 162 | 167 |
| 168 public int rttObservationCount(int source) { | |
| 169 synchronized (mLock) { | |
| 170 return mRttObservationCountBySource.get(source); | |
| 171 } | |
| 172 } | |
| 173 | |
| 163 public int throughputObservationCount() { | 174 public int throughputObservationCount() { |
| 164 synchronized (mLock) { | 175 synchronized (mLock) { |
| 165 return mThroughputObservationCount; | 176 return mThroughputObservationCount; |
| 166 } | 177 } |
| 167 } | 178 } |
| 168 } | 179 } |
| 169 | 180 |
| 170 @SmallTest | 181 @SmallTest |
| 171 @Feature({"Cronet"}) | 182 @Feature({"Cronet"}) |
| 172 public void testConfigUserAgent() throws Exception { | 183 public void testConfigUserAgent() throws Exception { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 233 // Proxy logic configured to use the test server as its proxy. | 244 // Proxy logic configured to use the test server as its proxy. |
| 234 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 245 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 235 assertEquals(serverHostPort, callback.mResponseInfo.getProxyServer()); | 246 assertEquals(serverHostPort, callback.mResponseInfo.getProxyServer()); |
| 236 assertEquals("http://DomainThatDoesnt.Resolve/datareductionproxysuccess. txt", | 247 assertEquals("http://DomainThatDoesnt.Resolve/datareductionproxysuccess. txt", |
| 237 callback.mResponseInfo.getUrl()); | 248 callback.mResponseInfo.getUrl()); |
| 238 } | 249 } |
| 239 | 250 |
| 240 @SmallTest | 251 @SmallTest |
| 241 @Feature({"Cronet"}) | 252 @Feature({"Cronet"}) |
| 242 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion { | 253 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion { |
| 254 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); | |
| 255 mCronetEngineBuilder.enableHTTP2(true).enableQUIC(false).enableNetworkQu alityEstimator( | |
|
bengr
2016/06/07 20:53:16
You shouldn't have to call enableNetworkQualityEst
tbansal1
2016/06/07 21:37:17
Done.
| |
| 256 false, null); | |
| 257 mTestFramework = | |
| 258 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); | |
| 259 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(null); | |
| 260 try { | |
| 261 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); | |
| 262 fail("Should throw an exception."); | |
| 263 } catch (IllegalStateException e) { | |
| 264 } | |
| 265 try { | |
| 266 mTestFramework.mCronetEngine.addThroughputListener(networkQualityLis tener); | |
| 267 fail("Should throw an exception."); | |
| 268 } catch (IllegalStateException e) { | |
| 269 } | |
| 270 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | |
| 271 UrlRequest urlRequest = | |
| 272 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); | |
| 273 urlRequest.start(); | |
| 274 callback.blockForDone(); | |
| 275 assertEquals(0, networkQualityListener.rttObservationCount()); | |
| 276 assertEquals(0, networkQualityListener.throughputObservationCount()); | |
| 277 mTestFramework.mCronetEngine.shutdown(); | |
| 278 } | |
| 279 | |
| 280 @SmallTest | |
| 281 @Feature({"Cronet"}) | |
| 282 public void testRealTimeNetworkQualityObservationsNotEnabled_LegacyAPI() thr ows Exception { | |
| 243 mTestFramework = startCronetTestFramework(); | 283 mTestFramework = startCronetTestFramework(); |
| 244 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(null); | 284 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(null); |
| 245 try { | 285 try { |
| 246 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); | 286 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); |
| 247 fail("Should throw an exception."); | 287 fail("Should throw an exception."); |
| 248 } catch (IllegalStateException e) { | 288 } catch (IllegalStateException e) { |
| 249 } | 289 } |
| 250 try { | 290 try { |
| 251 mTestFramework.mCronetEngine.addThroughputListener(networkQualityLis tener); | 291 mTestFramework.mCronetEngine.addThroughputListener(networkQualityLis tener); |
| 252 fail("Should throw an exception."); | 292 fail("Should throw an exception."); |
| 253 } catch (IllegalStateException e) { | 293 } catch (IllegalStateException e) { |
| 254 } | 294 } |
| 255 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 295 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 256 UrlRequest urlRequest = | 296 UrlRequest urlRequest = |
| 257 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); | 297 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); |
| 258 urlRequest.start(); | 298 urlRequest.start(); |
| 259 callback.blockForDone(); | 299 callback.blockForDone(); |
| 260 assertEquals(0, networkQualityListener.rttObservationCount()); | 300 assertEquals(0, networkQualityListener.rttObservationCount()); |
| 261 assertEquals(0, networkQualityListener.throughputObservationCount()); | 301 assertEquals(0, networkQualityListener.throughputObservationCount()); |
| 262 mTestFramework.mCronetEngine.shutdown(); | 302 mTestFramework.mCronetEngine.shutdown(); |
| 263 } | 303 } |
| 264 | 304 |
| 265 @SmallTest | 305 @SmallTest |
| 266 @Feature({"Cronet"}) | 306 @Feature({"Cronet"}) |
| 267 public void testRealTimeNetworkQualityObservationsListenerRemoved() throws E xception { | 307 public void testRealTimeNetworkQualityObservationsListenerRemoved() throws E xception { |
| 308 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); | |
| 309 TestExecutor mNetworkQualityExecutor = new TestExecutor(); | |
| 310 mCronetEngineBuilder.enableHTTP2(true).enableQUIC(false).enableNetworkQu alityEstimator( | |
| 311 true, mNetworkQualityExecutor); | |
| 312 mTestFramework = | |
| 313 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); | |
| 314 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(null); | |
| 315 mTestFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting( true, true); | |
| 316 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); | |
| 317 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r); | |
| 318 mTestFramework.mCronetEngine.removeRttListener(networkQualityListener); | |
| 319 mTestFramework.mCronetEngine.removeThroughputListener(networkQualityList ener); | |
| 320 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | |
| 321 UrlRequest urlRequest = | |
| 322 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); | |
| 323 urlRequest.start(); | |
| 324 callback.blockForDone(); | |
| 325 mNetworkQualityExecutor.runAllTasks(); | |
| 326 assertEquals(0, networkQualityListener.rttObservationCount()); | |
| 327 assertEquals(0, networkQualityListener.throughputObservationCount()); | |
| 328 mTestFramework.mCronetEngine.shutdown(); | |
| 329 } | |
| 330 | |
| 331 @SmallTest | |
| 332 @Feature({"Cronet"}) | |
| 333 public void testRealTimeNetworkQualityObservationsListenerRemoved_LegacyAPI( ) throws Exception { | |
| 268 mTestFramework = startCronetTestFramework(); | 334 mTestFramework = startCronetTestFramework(); |
| 269 TestExecutor testExecutor = new TestExecutor(); | 335 TestExecutor testExecutor = new TestExecutor(); |
| 270 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(null); | 336 TestNetworkQualityListener networkQualityListener = new TestNetworkQuali tyListener(null); |
| 271 mTestFramework.mCronetEngine.enableNetworkQualityEstimatorForTesting( | 337 mTestFramework.mCronetEngine.enableNetworkQualityEstimator(testExecutor) ; |
| 272 true, true, testExecutor); | 338 mTestFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting( true, true); |
| 273 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); | 339 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); |
| 274 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r); | 340 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r); |
| 275 mTestFramework.mCronetEngine.removeRttListener(networkQualityListener); | 341 mTestFramework.mCronetEngine.removeRttListener(networkQualityListener); |
| 276 mTestFramework.mCronetEngine.removeThroughputListener(networkQualityList ener); | 342 mTestFramework.mCronetEngine.removeThroughputListener(networkQualityList ener); |
| 277 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 343 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 278 UrlRequest urlRequest = | 344 UrlRequest urlRequest = |
| 279 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); | 345 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); |
| 280 urlRequest.start(); | 346 urlRequest.start(); |
| 281 callback.blockForDone(); | 347 callback.blockForDone(); |
| 282 testExecutor.runAllTasks(); | 348 testExecutor.runAllTasks(); |
| 283 assertEquals(0, networkQualityListener.rttObservationCount()); | 349 assertEquals(0, networkQualityListener.rttObservationCount()); |
| 284 assertEquals(0, networkQualityListener.throughputObservationCount()); | 350 assertEquals(0, networkQualityListener.throughputObservationCount()); |
| 285 mTestFramework.mCronetEngine.shutdown(); | 351 mTestFramework.mCronetEngine.shutdown(); |
| 286 } | 352 } |
| 287 | 353 |
| 288 @SmallTest | 354 @SmallTest |
| 289 @Feature({"Cronet"}) | 355 @Feature({"Cronet"}) |
| 290 public void testRealTimeNetworkQualityObservations() throws Exception { | 356 public void testRealTimeNetworkQualityObservationsWithoutQuic() throws Excep tion { |
| 357 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); | |
| 358 Executor networkQualityExecutor = Executors.newSingleThreadExecutor(); | |
| 359 mCronetEngineBuilder.enableHTTP2(true).enableQUIC(false).enableNetworkQu alityEstimator( | |
| 360 true, networkQualityExecutor); | |
| 361 mTestFramework = | |
| 362 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); | |
| 363 ConditionVariable waitForThroughput = new ConditionVariable(); | |
| 364 TestNetworkQualityListener networkQualityListener = | |
| 365 new TestNetworkQualityListener(waitForThroughput); | |
| 366 mTestFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting( true, true); | |
| 367 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); | |
| 368 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r); | |
| 369 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | |
| 370 UrlRequest urlRequest = | |
| 371 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); | |
| 372 urlRequest.start(); | |
| 373 callback.blockForDone(); | |
| 374 | |
| 375 // Throughput observation is posted to the network quality estimator on the network thread | |
| 376 // after the UrlRequest is completed. The observations are then eventual ly posted to | |
| 377 // throughput listeners on the executor provided to network quality. | |
| 378 waitForThroughput.block(); | |
| 379 assertTrue(networkQualityListener.throughputObservationCount() > 0); | |
| 380 | |
| 381 // Check RTT observation count after throughput observation has been rec eived. This ensures | |
| 382 // that executor has finished posting the RTT observation to the RTT lis teners. | |
| 383 assertTrue(networkQualityListener.rttObservationCount() > 0); | |
| 384 | |
| 385 // NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST | |
| 386 assertTrue(networkQualityListener.rttObservationCount(0) > 0); | |
| 387 | |
| 388 // NETWORK_QUALITY_OBSERVATION_SOURCE_TCP | |
| 389 assertTrue(networkQualityListener.rttObservationCount(1) > 0); | |
| 390 | |
| 391 // NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC | |
| 392 assertEquals(0, networkQualityListener.rttObservationCount(2)); | |
| 393 | |
| 394 mTestFramework.mCronetEngine.shutdown(); | |
| 395 } | |
| 396 | |
| 397 @SmallTest | |
| 398 @Feature({"Cronet"}) | |
| 399 public void testRealTimeNetworkQualityObservations_LegacyAPI() throws Except ion { | |
| 291 mTestFramework = startCronetTestFramework(); | 400 mTestFramework = startCronetTestFramework(); |
| 292 Executor executor = Executors.newSingleThreadExecutor(); | 401 Executor executor = Executors.newSingleThreadExecutor(); |
| 293 ConditionVariable waitForThroughput = new ConditionVariable(); | 402 ConditionVariable waitForThroughput = new ConditionVariable(); |
| 294 TestNetworkQualityListener networkQualityListener = | 403 TestNetworkQualityListener networkQualityListener = |
| 295 new TestNetworkQualityListener(waitForThroughput); | 404 new TestNetworkQualityListener(waitForThroughput); |
| 296 mTestFramework.mCronetEngine.enableNetworkQualityEstimatorForTesting(tru e, true, executor); | 405 mTestFramework.mCronetEngine.enableNetworkQualityEstimator(executor); |
| 406 mTestFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting( true, true); | |
| 297 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); | 407 mTestFramework.mCronetEngine.addRttListener(networkQualityListener); |
| 298 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r); | 408 mTestFramework.mCronetEngine.addThroughputListener(networkQualityListene r); |
| 299 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 409 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 300 UrlRequest urlRequest = | 410 UrlRequest urlRequest = |
| 301 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); | 411 mTestFramework.mCronetEngine.createRequest(mUrl, callback, callb ack.getExecutor()); |
| 302 urlRequest.start(); | 412 urlRequest.start(); |
| 303 callback.blockForDone(); | 413 callback.blockForDone(); |
| 304 | 414 |
| 305 // Throughput observation is posted to the network quality estimator on the network thread | 415 // 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 | 416 // after the UrlRequest is completed. The observations are then eventual ly posted to |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 324 assertNull("onRequestFinished called repeatedly", mRequestInfo); | 434 assertNull("onRequestFinished called repeatedly", mRequestInfo); |
| 325 assertNotNull(requestInfo); | 435 assertNotNull(requestInfo); |
| 326 mRequestInfo = requestInfo; | 436 mRequestInfo = requestInfo; |
| 327 } | 437 } |
| 328 } | 438 } |
| 329 | 439 |
| 330 @SmallTest | 440 @SmallTest |
| 331 @Feature({"Cronet"}) | 441 @Feature({"Cronet"}) |
| 332 @SuppressWarnings("deprecation") | 442 @SuppressWarnings("deprecation") |
| 333 public void testRequestFinishedListener() throws Exception { | 443 public void testRequestFinishedListener() throws Exception { |
| 444 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); | |
| 445 TestExecutor mNetworkQualityExecutor = new TestExecutor(); | |
| 446 mCronetEngineBuilder.enableHTTP2(true).enableQUIC(false).enableNetworkQu alityEstimator( | |
| 447 true, mNetworkQualityExecutor); | |
| 448 mTestFramework = | |
| 449 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); | |
| 450 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | |
| 451 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | |
| 452 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | |
| 453 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | |
| 454 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); | |
| 455 urlRequestBuilder.addRequestAnnotation("request annotation") | |
| 456 .addRequestAnnotation(this) | |
| 457 .build() | |
| 458 .start(); | |
| 459 callback.blockForDone(); | |
| 460 mNetworkQualityExecutor.runAllTasks(); | |
| 461 | |
| 462 CronetEngine.UrlRequestInfo requestInfo = requestFinishedListener.mReque stInfo; | |
| 463 assertNotNull("RequestFinishedListener must be called", requestInfo); | |
| 464 assertEquals(mUrl, requestInfo.getUrl()); | |
| 465 assertNotNull(requestInfo.getResponseInfo()); | |
| 466 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. | |
| 467 new HashSet<Object>(requestInfo.getAnnotations())); | |
| 468 CronetEngine.UrlRequestMetrics metrics = requestInfo.getMetrics(); | |
| 469 assertNotNull("UrlRequestInfo.getMetrics() must not be null", metrics); | |
| 470 assertTrue(metrics.getTotalTimeMs() > 0); | |
| 471 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); | |
| 472 assertTrue(metrics.getReceivedBytesCount() > 0); | |
| 473 mTestFramework.mCronetEngine.shutdown(); | |
| 474 } | |
| 475 | |
| 476 @SmallTest | |
| 477 @Feature({"Cronet"}) | |
| 478 @SuppressWarnings("deprecation") | |
| 479 public void testRequestFinishedListener_LegacyAPI() throws Exception { | |
| 334 mTestFramework = startCronetTestFramework(); | 480 mTestFramework = startCronetTestFramework(); |
| 335 TestExecutor testExecutor = new TestExecutor(); | 481 TestExecutor testExecutor = new TestExecutor(); |
| 336 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | 482 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); |
| 337 mTestFramework.mCronetEngine.enableNetworkQualityEstimator(testExecutor) ; | 483 mTestFramework.mCronetEngine.enableNetworkQualityEstimator(testExecutor) ; |
| 338 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | 484 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); |
| 339 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 485 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 340 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 486 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 341 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); | 487 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); |
| 342 urlRequestBuilder.addRequestAnnotation("request annotation") | 488 urlRequestBuilder.addRequestAnnotation("request annotation") |
| 343 .addRequestAnnotation(this) | 489 .addRequestAnnotation(this) |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 390 assertTrue(metrics.getTotalTimeMs() > 0); | 536 assertTrue(metrics.getTotalTimeMs() > 0); |
| 391 assertNull(metrics.getTtfbMs()); | 537 assertNull(metrics.getTtfbMs()); |
| 392 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive dBytesCount() == 0); | 538 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive dBytesCount() == 0); |
| 393 mTestFramework.mCronetEngine.shutdown(); | 539 mTestFramework.mCronetEngine.shutdown(); |
| 394 } | 540 } |
| 395 | 541 |
| 396 @SmallTest | 542 @SmallTest |
| 397 @Feature({"Cronet"}) | 543 @Feature({"Cronet"}) |
| 398 @SuppressWarnings("deprecation") | 544 @SuppressWarnings("deprecation") |
| 399 public void testRequestFinishedListenerRemoved() throws Exception { | 545 public void testRequestFinishedListenerRemoved() throws Exception { |
| 546 CronetEngine.Builder mCronetEngineBuilder = new CronetEngine.Builder(get Context()); | |
| 547 TestExecutor mNetworkQualityExecutor = new TestExecutor(); | |
| 548 mCronetEngineBuilder.enableHTTP2(true).enableQUIC(false).enableNetworkQu alityEstimator( | |
| 549 true, mNetworkQualityExecutor); | |
| 550 mTestFramework = | |
| 551 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCro netEngineBuilder); | |
| 552 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | |
| 553 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | |
| 554 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener); | |
| 555 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | |
| 556 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | |
| 557 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); | |
| 558 urlRequestBuilder.build().start(); | |
| 559 callback.blockForDone(); | |
| 560 mNetworkQualityExecutor.runAllTasks(); | |
| 561 | |
| 562 assertNull( | |
| 563 "RequestFinishedListener must not be called", requestFinishedLis tener.mRequestInfo); | |
| 564 mTestFramework.mCronetEngine.shutdown(); | |
| 565 } | |
| 566 | |
| 567 @SmallTest | |
| 568 @Feature({"Cronet"}) | |
| 569 @SuppressWarnings("deprecation") | |
| 570 public void testRequestFinishedListenerRemoved_LegacyAPI() throws Exception { | |
| 400 mTestFramework = startCronetTestFramework(); | 571 mTestFramework = startCronetTestFramework(); |
| 401 TestExecutor testExecutor = new TestExecutor(); | 572 TestExecutor testExecutor = new TestExecutor(); |
| 402 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); | 573 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener(); |
| 403 mTestFramework.mCronetEngine.enableNetworkQualityEstimator(testExecutor) ; | 574 mTestFramework.mCronetEngine.enableNetworkQualityEstimator(testExecutor) ; |
| 404 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); | 575 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); |
| 405 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener); | 576 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener); |
| 406 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 577 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 407 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 578 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 408 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); | 579 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); |
| 409 urlRequestBuilder.build().start(); | 580 urlRequestBuilder.build().start(); |
| (...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1168 } | 1339 } |
| 1169 }.start(); | 1340 }.start(); |
| 1170 otherThreadDone.block(); | 1341 otherThreadDone.block(); |
| 1171 builder.build().shutdown(); | 1342 builder.build().shutdown(); |
| 1172 uiThreadDone.open(); | 1343 uiThreadDone.open(); |
| 1173 } | 1344 } |
| 1174 }); | 1345 }); |
| 1175 assertTrue(uiThreadDone.block(1000)); | 1346 assertTrue(uiThreadDone.block(1000)); |
| 1176 } | 1347 } |
| 1177 } | 1348 } |
| OLD | NEW |