| 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();
|
| + }
|
| }
|
|
|