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

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.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 side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.java b/components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.java
index 2d2a8d12d99bb91110fcb54c0ffed9a9e9cdea43..e605357d534aaf9751228f2e43b072f916526d66 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/MetricsTestUtil.java
@@ -6,9 +6,11 @@ package org.chromium.net;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
import android.os.ConditionVariable;
+import java.util.Date;
import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.concurrent.Executor;
@@ -20,8 +22,8 @@ import java.util.concurrent.Executors;
*/
public class MetricsTestUtil {
/**
- * Executor which runs tasks only when told to with runAllTasks().
- */
+ * Executor which runs tasks only when told to with runAllTasks().
+ */
public static class TestExecutor implements Executor {
private final LinkedList<Runnable> mTaskQueue = new LinkedList<Runnable>();
@@ -49,6 +51,8 @@ public class MetricsTestUtil {
private ConditionVariable mBlock;
private int mNumExpectedRequests = -1;
+ // TODO(mgersh): it's weird that you can use either this constructor or blockUntilDone() but
+ // not both. Either clean it up or document why it has to work this way.
public TestRequestFinishedListener(Executor executor) {
super(executor);
}
@@ -83,5 +87,73 @@ public class MetricsTestUtil {
public void blockUntilDone() {
mBlock.block();
}
+
+ public void reset() {
+ mBlock.close();
+ mNumExpectedRequests = 1;
+ mRequestInfo = null;
+ }
+ }
+
+ /**
+ * Check existence of all the timing metrics that apply to most test requests,
+ * except those that come from net::LoadTimingInfo::ConnectTiming.
+ * Also check some timing differences, focusing on things we can't check with asserts in the
+ * CronetMetrics constructor.
+ * Don't check push times here.
+ */
+ public static void checkTimingMetrics(
+ RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) {
+ assertNotNull(metrics.getRequestStart());
+ assertTrue(metrics.getRequestStart().after(startTime)
+ || metrics.getRequestStart().equals(startTime));
+ assertNotNull(metrics.getSendingStart());
+ assertTrue(metrics.getSendingStart().after(startTime));
+ assertNotNull(metrics.getSendingEnd());
+ assertTrue(metrics.getSendingEnd().before(endTime));
+ assertNotNull(metrics.getResponseStart());
+ assertTrue(metrics.getResponseStart().after(startTime));
+ assertNotNull(metrics.getResponseEnd());
+ assertTrue(metrics.getResponseEnd().before(endTime)
+ || metrics.getResponseEnd().equals(endTime));
+ // Entire request should take more than 0 ms
+ assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart().getTime() > 0);
+ }
+
+ /**
+ * Check that the timing metrics which come from net::LoadTimingInfo::ConnectTiming exist,
+ * except SSL times in the case of non-https requests.
+ */
+ public static void checkHasConnectTiming(
+ RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime, boolean isSsl) {
+ assertNotNull(metrics.getDnsStart());
+ assertTrue(metrics.getDnsStart().after(startTime));
+ assertNotNull(metrics.getDnsEnd());
+ assertTrue(metrics.getDnsEnd().before(endTime));
+ assertNotNull(metrics.getConnectStart());
+ assertTrue(metrics.getConnectStart().after(startTime));
+ assertNotNull(metrics.getConnectEnd());
+ assertTrue(metrics.getConnectEnd().before(endTime));
+ if (isSsl) {
+ assertNotNull(metrics.getSslStart());
+ assertTrue(metrics.getSslStart().after(startTime));
+ assertNotNull(metrics.getSslEnd());
+ assertTrue(metrics.getSslEnd().before(endTime));
+ } else {
+ assertNull(metrics.getSslStart());
+ assertNull(metrics.getSslEnd());
+ }
+ }
+
+ /**
+ * Check that the timing metrics from net::LoadTimingInfo::ConnectTiming don't exist.
+ */
+ public static void checkNoConnectTiming(RequestFinishedInfo.Metrics metrics) {
+ assertNull(metrics.getDnsStart());
+ assertNull(metrics.getDnsEnd());
+ assertNull(metrics.getSslStart());
+ assertNull(metrics.getSslEnd());
+ assertNull(metrics.getConnectStart());
+ assertNull(metrics.getConnectEnd());
}
}

Powered by Google App Engine
This is Rietveld 408576698