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..6584737a013bf9c6ed28322d006273be9eefde2e 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 |
@@ -18,6 +18,7 @@ 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 +232,62 @@ public class QuicTest extends CronetTestBase { |
mTestFramework.mCronetEngine.shutdown(); |
} |
+ |
+ @SmallTest |
+ @OnlyRunNativeCronet |
+ @Feature({"Cronet"}) |
+ public void testMetricsWithQuic() throws Exception { |
+ mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mBuilder); |
+ RequestFinishedInfoTest.TestExecutor testExecutor = |
+ new RequestFinishedInfoTest.TestExecutor(); |
+ RequestFinishedInfoTest.TestRequestFinishedListener requestFinishedListener = |
+ new RequestFinishedInfoTest.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.mRequestInfo; |
+ assertNotNull(requestInfo); |
+ RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
+ assertNotNull(metrics); |
+ |
+ RequestFinishedInfoTest.checkTimingMetrics(metrics, startTime, endTime); |
+ RequestFinishedInfoTest.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.mRequestInfo; |
+ assertNotNull(requestInfo); |
+ metrics = requestInfo.getMetrics(); |
+ assertNotNull(metrics); |
+ |
+ RequestFinishedInfoTest.checkTimingMetrics(metrics, startTime, endTime); |
+ RequestFinishedInfoTest.checkNoConnectTiming(metrics); |
+ |
+ mTestFramework.mCronetEngine.shutdown(); |
+ } |
} |