Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java

Issue 2351793003: Implement timing metrics for UrlRequest (Closed)
Patch Set: New test, and some rearranging things Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.suitebuilder.annotation.LargeTest; 8 import android.test.suitebuilder.annotation.LargeTest;
9 import android.test.suitebuilder.annotation.SmallTest; 9 import android.test.suitebuilder.annotation.SmallTest;
10 10
11 import org.chromium.base.Log; 11 import org.chromium.base.Log;
12 import org.chromium.base.annotations.SuppressFBWarnings; 12 import org.chromium.base.annotations.SuppressFBWarnings;
13 import org.chromium.base.test.util.Feature; 13 import org.chromium.base.test.util.Feature;
14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; 14 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet;
15 import org.chromium.net.MetricsTestUtil.TestExecutor;
16 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
15 import org.json.JSONObject; 17 import org.json.JSONObject;
16 18
17 import java.io.File; 19 import java.io.File;
18 import java.io.FileInputStream; 20 import java.io.FileInputStream;
19 import java.io.FileNotFoundException; 21 import java.io.FileNotFoundException;
20 import java.io.IOException; 22 import java.io.IOException;
23 import java.util.Date;
21 import java.util.HashMap; 24 import java.util.HashMap;
22 import java.util.concurrent.Executors; 25 import java.util.concurrent.Executors;
23 26
24 /** 27 /**
25 * Tests making requests using QUIC. 28 * Tests making requests using QUIC.
26 */ 29 */
27 public class QuicTest extends CronetTestBase { 30 public class QuicTest extends CronetTestBase {
28 private static final String TAG = "cr.QuicTest"; 31 private static final String TAG = "cr.QuicTest";
29 private CronetTestFramework mTestFramework; 32 private CronetTestFramework mTestFramework;
30 private CronetEngine.Builder mBuilder; 33 private CronetEngine.Builder mBuilder;
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 // NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC 227 // NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC
225 assertTrue(rttListener.rttObservationCount(2) > 0); 228 assertTrue(rttListener.rttObservationCount(2) > 0);
226 229
227 // Verify that effective connection type callback is received and 230 // Verify that effective connection type callback is received and
228 // effective connection type is correctly set. 231 // effective connection type is correctly set.
229 assertTrue(mTestFramework.mCronetEngine.getEffectiveConnectionType() 232 assertTrue(mTestFramework.mCronetEngine.getEffectiveConnectionType()
230 != EffectiveConnectionType.TYPE_UNKNOWN); 233 != EffectiveConnectionType.TYPE_UNKNOWN);
231 234
232 mTestFramework.mCronetEngine.shutdown(); 235 mTestFramework.mCronetEngine.shutdown();
233 } 236 }
237
238 @SmallTest
239 @OnlyRunNativeCronet
240 @Feature({"Cronet"})
241 public void testMetricsWithQuic() throws Exception {
242 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder);
243 TestExecutor testExecutor = new TestExecutor();
244 TestRequestFinishedListener requestFinishedListener =
245 new TestRequestFinishedListener(testExecutor);
246 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
247
248 String quicURL = QuicTestServer.getServerURL() + "/simple.txt";
249 TestUrlRequestCallback callback = new TestUrlRequestCallback();
250
251 UrlRequest.Builder requestBuilder = new UrlRequest.Builder(
252 quicURL, callback, callback.getExecutor(), mTestFramework.mCrone tEngine);
253 Date startTime = new Date();
254 requestBuilder.build().start();
255 callback.blockForDone();
256 Date endTime = new Date();
257 testExecutor.runAllTasks();
258
259 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
260 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
261
262 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo ();
263 assertNotNull(requestInfo);
264 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
265 assertNotNull(metrics);
266
267 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
268 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, true) ;
269
270 // Second request should use the same connection and not have ConnectTim ing numbers
271 callback = new TestUrlRequestCallback();
272 requestFinishedListener.reset();
273 requestBuilder = new UrlRequest.Builder(
274 quicURL, callback, callback.getExecutor(), mTestFramework.mCrone tEngine);
275 startTime = new Date();
276 requestBuilder.build().start();
277 callback.blockForDone();
278 endTime = new Date();
279 testExecutor.runAllTasks();
280
281 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
282 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
283
284 requestInfo = requestFinishedListener.getRequestInfo();
285 assertNotNull(requestInfo);
286 metrics = requestInfo.getMetrics();
287 assertNotNull(metrics);
288
289 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
290 MetricsTestUtil.checkNoConnectTiming(metrics);
291
292 mTestFramework.mCronetEngine.shutdown();
293 }
234 } 294 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698