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

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: Small cleanups 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;
10
11 import org.json.JSONObject;
9 12
10 import org.chromium.base.Log; 13 import org.chromium.base.Log;
11 import org.chromium.base.annotations.SuppressFBWarnings; 14 import org.chromium.base.annotations.SuppressFBWarnings;
12 import org.chromium.base.test.util.Feature; 15 import org.chromium.base.test.util.Feature;
13 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet; 16 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet;
14 import org.json.JSONObject; 17 import org.chromium.net.MetricsTestUtil.TestRequestFinishedListener;
15 18
16 import java.io.File; 19 import java.io.File;
17 import java.io.FileInputStream; 20 import java.io.FileInputStream;
18 import java.io.FileNotFoundException; 21 import java.io.FileNotFoundException;
19 import java.io.IOException; 22 import java.io.IOException;
23 import java.util.Date;
20 import java.util.concurrent.Executors; 24 import java.util.concurrent.Executors;
21 25
22 /** 26 /**
23 * Tests making requests using QUIC. 27 * Tests making requests using QUIC.
24 */ 28 */
25 public class QuicTest extends CronetTestBase { 29 public class QuicTest extends CronetTestBase {
26 private static final String TAG = "cr.QuicTest"; 30 private static final String TAG = "cr.QuicTest";
27 private CronetTestFramework mTestFramework; 31 private CronetTestFramework mTestFramework;
28 private CronetEngine.Builder mBuilder; 32 private CronetEngine.Builder mBuilder;
29 33
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 // NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC 198 // NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC
195 assertTrue(rttListener.rttObservationCount(2) > 0); 199 assertTrue(rttListener.rttObservationCount(2) > 0);
196 200
197 // Verify that effective connection type callback is received and 201 // Verify that effective connection type callback is received and
198 // effective connection type is correctly set. 202 // effective connection type is correctly set.
199 assertTrue(mTestFramework.mCronetEngine.getEffectiveConnectionType() 203 assertTrue(mTestFramework.mCronetEngine.getEffectiveConnectionType()
200 != EffectiveConnectionType.TYPE_UNKNOWN); 204 != EffectiveConnectionType.TYPE_UNKNOWN);
201 205
202 mTestFramework.mCronetEngine.shutdown(); 206 mTestFramework.mCronetEngine.shutdown();
203 } 207 }
208
209 @SmallTest
210 @OnlyRunNativeCronet
211 @Feature({"Cronet"})
212 public void testMetricsWithQuic() throws Exception {
213 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder);
214 TestRequestFinishedListener requestFinishedListener = new TestRequestFin ishedListener();
215 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
216
217 String quicURL = QuicTestServer.getServerURL() + "/simple.txt";
218 TestUrlRequestCallback callback = new TestUrlRequestCallback();
219
220 UrlRequest.Builder requestBuilder = new UrlRequest.Builder(
221 quicURL, callback, callback.getExecutor(), mTestFramework.mCrone tEngine);
222 Date startTime = new Date();
223 requestBuilder.build().start();
224 callback.blockForDone();
225 requestFinishedListener.blockUntilDone();
226 Date endTime = new Date();
227
228 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
229 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
230
231 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo ();
232 assertNotNull(requestInfo);
233 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
234 assertNotNull(metrics);
235
236 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
237 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, true) ;
238
239 // Second request should use the same connection and not have ConnectTim ing numbers
240 callback = new TestUrlRequestCallback();
241 requestFinishedListener.reset();
242 requestBuilder = new UrlRequest.Builder(
243 quicURL, callback, callback.getExecutor(), mTestFramework.mCrone tEngine);
244 startTime = new Date();
245 requestBuilder.build().start();
246 callback.blockForDone();
247 requestFinishedListener.blockUntilDone();
248 endTime = new Date();
249
250 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
251 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol());
252
253 requestInfo = requestFinishedListener.getRequestInfo();
254 assertNotNull(requestInfo);
255 metrics = requestInfo.getMetrics();
256 assertNotNull(metrics);
257
258 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime);
259 MetricsTestUtil.checkNoConnectTiming(metrics);
260
261 mTestFramework.mCronetEngine.shutdown();
262 }
204 } 263 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698