Index: components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java |
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java |
index 55bb669a4533d577e9cc1e6155183aa7dfe494fd..ecbb5a21bcc0fd486864ce995790f2ee7f5f7af7 100644 |
--- a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java |
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java |
@@ -12,12 +12,15 @@ import org.chromium.base.Log; |
import org.chromium.base.annotations.SuppressFBWarnings; |
import org.chromium.base.test.util.Feature; |
import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; |
+import org.chromium.net.MetricsTestUtil.TestExecutor; |
+import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener; |
import org.json.JSONObject; |
import java.io.File; |
import java.io.FileInputStream; |
import java.io.FileNotFoundException; |
import java.io.IOException; |
+import java.util.Date; |
import java.util.HashMap; |
import java.util.concurrent.Executors; |
@@ -231,4 +234,61 @@ public class QuicTest extends CronetTestBase { |
mTestFramework.mCronetEngine.shutdown(); |
} |
+ |
+ @SmallTest |
+ @OnlyRunNativeCronet |
+ @Feature({"Cronet"}) |
+ public void testMetricsWithQuic() throws Exception { |
+ mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mBuilder); |
+ TestExecutor testExecutor = new TestExecutor(); |
+ TestRequestFinishedListener requestFinishedListener = |
+ new TestRequestFinishedListener(testExecutor); |
+ mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedListener); |
+ |
+ String quicURL = QuicTestServer.getServerURL() + "/simple.txt"; |
+ TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
+ |
+ UrlRequest.Builder requestBuilder = new UrlRequest.Builder( |
+ quicURL, callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
+ Date startTime = new Date(); |
+ requestBuilder.build().start(); |
+ callback.blockForDone(); |
+ Date endTime = new Date(); |
+ testExecutor.runAllTasks(); |
+ |
+ assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
+ assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtocol()); |
+ |
+ RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo(); |
+ assertNotNull(requestInfo); |
+ RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
+ assertNotNull(metrics); |
+ |
+ MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime); |
+ MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, true); |
+ |
+ // Second request should use the same connection and not have ConnectTiming numbers |
+ callback = new TestUrlRequestCallback(); |
+ requestFinishedListener.reset(); |
+ requestBuilder = new UrlRequest.Builder( |
+ quicURL, callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
+ startTime = new Date(); |
+ requestBuilder.build().start(); |
+ callback.blockForDone(); |
+ endTime = new Date(); |
+ testExecutor.runAllTasks(); |
+ |
+ assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
+ assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtocol()); |
+ |
+ requestInfo = requestFinishedListener.getRequestInfo(); |
+ assertNotNull(requestInfo); |
+ metrics = requestInfo.getMetrics(); |
+ assertNotNull(metrics); |
+ |
+ MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime); |
+ MetricsTestUtil.checkNoConnectTiming(metrics); |
+ |
+ mTestFramework.mCronetEngine.shutdown(); |
+ } |
} |