| Index: components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
|
| diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
|
| index e646547e86e018b22e48f59f78c9e9cfb81d713b..2a22b2ec589d0526dbe91dc136363a77d0fdbe82 100644
|
| --- a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
|
| +++ b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
|
| @@ -66,6 +66,7 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| }
|
|
|
| @SmallTest
|
| + @OnlyRunNativeCronet
|
| @Feature({"Cronet"})
|
| @SuppressWarnings("deprecation")
|
| public void testRequestFinishedListener() throws Exception {
|
| @@ -77,11 +78,14 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
|
| mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + Date startTime = new Date();
|
| urlRequestBuilder.addRequestAnnotation("request annotation")
|
| .addRequestAnnotation(this)
|
| .build()
|
| .start();
|
| callback.blockForDone();
|
| + Date endTime = new Date();
|
| + Thread.sleep(1000);
|
| testExecutor.runAllTasks();
|
|
|
| RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo();
|
| @@ -92,13 +96,21 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| new HashSet<Object>(requestInfo.getAnnotations()));
|
| RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
|
| assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metrics);
|
| + // Check old (deprecated) timing metrics
|
| assertTrue(metrics.getTotalTimeMs() > 0);
|
| assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
|
| + // Check new timing metrics
|
| + MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
|
| + MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, false);
|
| + assertNull(metrics.getPushStart());
|
| + assertNull(metrics.getPushEnd());
|
| + // Check data use metrics
|
| assertTrue(metrics.getReceivedBytesCount() > 0);
|
| mTestFramework.mCronetEngine.shutdown();
|
| }
|
|
|
| @SmallTest
|
| + @OnlyRunNativeCronet
|
| @Feature({"Cronet"})
|
| @SuppressWarnings("deprecation")
|
| public void testRequestFinishedListenerDirectExecutor() throws Exception {
|
| @@ -110,11 +122,14 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
|
| mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + Date startTime = new Date();
|
| urlRequestBuilder.addRequestAnnotation("request annotation")
|
| .addRequestAnnotation(this)
|
| .build()
|
| .start();
|
| callback.blockForDone();
|
| + Date endTime = new Date();
|
| + Thread.sleep(1000);
|
|
|
| RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo();
|
| assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo);
|
| @@ -126,11 +141,14 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metrics);
|
| assertTrue(metrics.getTotalTimeMs() > 0);
|
| assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
|
| + MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
|
| + MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, false);
|
| assertTrue(metrics.getReceivedBytesCount() > 0);
|
| mTestFramework.mCronetEngine.shutdown();
|
| }
|
|
|
| @SmallTest
|
| + @OnlyRunNativeCronet
|
| @Feature({"Cronet"})
|
| @SuppressWarnings("deprecation")
|
| public void testRequestFinishedListenerDifferentThreads() throws Exception {
|
| @@ -143,11 +161,14 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
|
| mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + Date startTime = new Date();
|
| urlRequestBuilder.addRequestAnnotation("request annotation")
|
| .addRequestAnnotation(this)
|
| .build()
|
| .start();
|
| callback.blockForDone();
|
| + Date endTime = new Date();
|
| + Thread.sleep(1000);
|
| testExecutor.joinAll();
|
|
|
| RequestFinishedInfo firstRequestInfo = firstListener.getRequestInfo();
|
| @@ -166,16 +187,21 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| assertNotNull("RequestFinishedInfo.getMetrics() must not be null", firstMetrics);
|
| assertTrue(firstMetrics.getTotalTimeMs() > 0);
|
| assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs());
|
| + MetricsTestUtil.checkTimingMetrics(firstMetrics, startTime, endTime);
|
| + MetricsTestUtil.checkHasConnectTiming(firstMetrics, startTime, endTime, false);
|
| assertTrue(firstMetrics.getReceivedBytesCount() > 0);
|
| RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics();
|
| assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secondMetrics);
|
| assertTrue(secondMetrics.getTotalTimeMs() > 0);
|
| assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs());
|
| + MetricsTestUtil.checkTimingMetrics(secondMetrics, startTime, endTime);
|
| + MetricsTestUtil.checkHasConnectTiming(secondMetrics, startTime, endTime, false);
|
| assertTrue(secondMetrics.getReceivedBytesCount() > 0);
|
| mTestFramework.mCronetEngine.shutdown();
|
| }
|
|
|
| @SmallTest
|
| + @OnlyRunNativeCronet
|
| @Feature({"Cronet"})
|
| @SuppressWarnings("deprecation")
|
| public void testRequestFinishedListenerFailedRequest() throws Exception {
|
| @@ -188,9 +214,12 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connectionRefusedUrl,
|
| callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + Date startTime = new Date();
|
| urlRequestBuilder.build().start();
|
| callback.blockForDone();
|
| + Date endTime = new Date();
|
| assertTrue(callback.mOnErrorCalled);
|
| + Thread.sleep(1000);
|
| testExecutor.runAllTasks();
|
|
|
| RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo();
|
| @@ -202,11 +231,25 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| // The failure is occasionally fast enough that time reported is 0, so just check for null
|
| assertNotNull(metrics.getTotalTimeMs());
|
| assertNull(metrics.getTtfbMs());
|
| +
|
| + // Check the timing metrics
|
| + assertNotNull(metrics.getRequestStart());
|
| + assertTrue(metrics.getRequestStart().after(startTime));
|
| + MetricsTestUtil.checkNoConnectTiming(metrics);
|
| + assertNull(metrics.getSendingStart());
|
| + assertNull(metrics.getSendingEnd());
|
| + assertNull(metrics.getResponseStart());
|
| + assertNotNull(metrics.getResponseEnd());
|
| + assertTrue(metrics.getResponseEnd().before(endTime));
|
| + // Entire request should take more than 0 ms
|
| + assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart().getTime() > 0);
|
| +
|
| assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceivedBytesCount() == 0);
|
| mTestFramework.mCronetEngine.shutdown();
|
| }
|
|
|
| @SmallTest
|
| + @OnlyRunNativeCronet
|
| @Feature({"Cronet"})
|
| @SuppressWarnings("deprecation")
|
| public void testRequestFinishedListenerRemoved() throws Exception {
|
| @@ -215,11 +258,12 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| TestRequestFinishedListener requestFinishedListener =
|
| new TestRequestFinishedListener(testExecutor);
|
| mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedListener);
|
| - mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinishedListener);
|
| TestUrlRequestCallback callback = new TestUrlRequestCallback();
|
| UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
|
| mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| - urlRequestBuilder.build().start();
|
| + UrlRequest request = urlRequestBuilder.build();
|
| + mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinishedListener);
|
| + request.start();
|
| callback.blockForDone();
|
| testExecutor.runAllTasks();
|
|
|
| @@ -229,6 +273,55 @@ public class RequestFinishedInfoTest extends CronetTestBase {
|
| }
|
|
|
| @SmallTest
|
| + @OnlyRunNativeCronet
|
| + @Feature({"Cronet"})
|
| + public void testRequestFinishedListenerCanceledRequest() throws Exception {
|
| + mTestFramework = startCronetTestFramework();
|
| + TestExecutor testExecutor = new TestExecutor();
|
| + TestRequestFinishedListener requestFinishedListener =
|
| + new TestRequestFinishedListener(testExecutor);
|
| + mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedListener);
|
| + TestUrlRequestCallback callback = new TestUrlRequestCallback() {
|
| + @Override
|
| + public void onResponseStarted(UrlRequest request, UrlResponseInfo info) {
|
| + super.onResponseStarted(request, info);
|
| + request.cancel();
|
| + }
|
| + };
|
| + UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
|
| + mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEngine);
|
| + Date startTime = new Date();
|
| + urlRequestBuilder.addRequestAnnotation("request annotation")
|
| + .addRequestAnnotation(this)
|
| + .build()
|
| + .start();
|
| + callback.blockForDone();
|
| + Date endTime = new Date();
|
| + testExecutor.runAllTasks();
|
| + Thread.sleep(1000);
|
| +
|
| + RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo();
|
| + assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo);
|
| + assertEquals(mUrl, requestInfo.getUrl());
|
| + assertNotNull(requestInfo.getResponseInfo());
|
| + assertEquals(newHashSet("request annotation", this), // Use sets for unordered comparison.
|
| + new HashSet<Object>(requestInfo.getAnnotations()));
|
| + RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
|
| + assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metrics);
|
| + // Check old (deprecated) timing metrics
|
| + assertTrue(metrics.getTotalTimeMs() > 0);
|
| + assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
|
| + // Check new timing metrics
|
| + MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
|
| + MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, false);
|
| + assertNull(metrics.getPushStart());
|
| + assertNull(metrics.getPushEnd());
|
| + // Check data use metrics
|
| + assertTrue(metrics.getReceivedBytesCount() > 0);
|
| + mTestFramework.mCronetEngine.shutdown();
|
| + }
|
| +
|
| + @SmallTest
|
| @Feature({"Cronet"})
|
| public void testMetricsGetters() throws Exception {
|
| long requestStart = 1;
|
|
|