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

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

Issue 2360813003: [Cronet] Pass metrics information from C++ BidirectionalStream to Java (Closed)
Patch Set: Rebased 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
« no previous file with comments | « components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 static junit.framework.Assert.assertNotNull; 7 import static junit.framework.Assert.assertNotNull;
8 import static junit.framework.Assert.assertNull; 8 import static junit.framework.Assert.assertNull;
9 import static junit.framework.Assert.assertTrue; 9 import static junit.framework.Assert.assertTrue;
10 10
(...skipping 29 matching lines...) Expand all
40 } catch (NoSuchElementException e) { 40 } catch (NoSuchElementException e) {
41 throw new RuntimeException("Task was removed during iteration", e); 41 throw new RuntimeException("Task was removed during iteration", e);
42 } 42 }
43 } 43 }
44 } 44 }
45 45
46 /** 46 /**
47 * RequestFinishedInfo.Listener for testing, which saves the RequestFinished Info 47 * RequestFinishedInfo.Listener for testing, which saves the RequestFinished Info
48 */ 48 */
49 public static class TestRequestFinishedListener extends RequestFinishedInfo. Listener { 49 public static class TestRequestFinishedListener extends RequestFinishedInfo. Listener {
50 private final ConditionVariable mBlock;
50 private RequestFinishedInfo mRequestInfo; 51 private RequestFinishedInfo mRequestInfo;
51 private ConditionVariable mBlock;
52 private int mNumExpectedRequests = -1;
53 52
54 // TODO(mgersh): it's weird that you can use either this constructor or blockUntilDone() but 53 // TODO(mgersh): it's weird that you can use either this constructor or blockUntilDone() but
55 // not both. Either clean it up or document why it has to work this way. 54 // not both. Either clean it up or document why it has to work this way.
56 public TestRequestFinishedListener(Executor executor) { 55 public TestRequestFinishedListener(Executor executor) {
57 super(executor); 56 super(executor);
58 }
59
60 public TestRequestFinishedListener(int numExpectedRequests) {
61 super(Executors.newSingleThreadExecutor());
62 mNumExpectedRequests = numExpectedRequests;
63 mBlock = new ConditionVariable(); 57 mBlock = new ConditionVariable();
64 } 58 }
65 59
66 public TestRequestFinishedListener() { 60 public TestRequestFinishedListener() {
67 super(Executors.newSingleThreadExecutor()); 61 super(Executors.newSingleThreadExecutor());
68 mNumExpectedRequests = 1;
69 mBlock = new ConditionVariable(); 62 mBlock = new ConditionVariable();
70 } 63 }
71 64
72 public RequestFinishedInfo getRequestInfo() { 65 public RequestFinishedInfo getRequestInfo() {
73 return mRequestInfo; 66 return mRequestInfo;
74 } 67 }
75 68
76 @Override 69 @Override
77 public void onRequestFinished(RequestFinishedInfo requestInfo) { 70 public void onRequestFinished(RequestFinishedInfo requestInfo) {
78 assertNull("onRequestFinished called repeatedly", mRequestInfo); 71 assertNull("onRequestFinished called repeatedly", mRequestInfo);
79 assertNotNull(requestInfo); 72 assertNotNull(requestInfo);
80 mRequestInfo = requestInfo; 73 mRequestInfo = requestInfo;
81 mNumExpectedRequests--; 74 mBlock.open();
82 if (mNumExpectedRequests == 0) {
83 mBlock.open();
84 }
85 } 75 }
86 76
87 public void blockUntilDone() { 77 public void blockUntilDone() {
88 mBlock.block(); 78 mBlock.block();
89 } 79 }
90 80
91 public void reset() { 81 public void reset() {
92 mBlock.close(); 82 mBlock.close();
93 mNumExpectedRequests = 1;
94 mRequestInfo = null; 83 mRequestInfo = null;
95 } 84 }
96 } 85 }
97 86
87 // Helper method to assert date2 is equals to or after date1.
88 // Some implementation of java.util.Date broke the symmetric property, so
89 // check both directions.
90 public static void assertAfter(Date date1, Date date2) {
91 assertTrue("date1: " + date1.getTime() + ", date2: " + date2.getTime(),
92 date1.after(date2) || date1.equals(date2) || date2.equals(date1) );
93 }
94
98 /** 95 /**
99 * Check existence of all the timing metrics that apply to most test request s, 96 * Check existence of all the timing metrics that apply to most test request s,
100 * except those that come from net::LoadTimingInfo::ConnectTiming. 97 * except those that come from net::LoadTimingInfo::ConnectTiming.
101 * Also check some timing differences, focusing on things we can't check wit h asserts in the 98 * Also check some timing differences, focusing on things we can't check wit h asserts in the
102 * CronetMetrics constructor. 99 * CronetMetrics constructor.
103 * Don't check push times here. 100 * Don't check push times here.
104 */ 101 */
105 public static void checkTimingMetrics( 102 public static void checkTimingMetrics(
106 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) { 103 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) {
107 assertNotNull(metrics.getRequestStart()); 104 assertNotNull(metrics.getRequestStart());
108 assertTrue(metrics.getRequestStart().after(startTime) 105 assertAfter(metrics.getRequestStart(), startTime);
109 || metrics.getRequestStart().equals(startTime));
110 assertNotNull(metrics.getSendingStart()); 106 assertNotNull(metrics.getSendingStart());
111 assertTrue(metrics.getSendingStart().after(startTime) 107 assertAfter(metrics.getSendingStart(), startTime);
112 || metrics.getSendingStart().equals(startTime));
113 assertNotNull(metrics.getSendingEnd()); 108 assertNotNull(metrics.getSendingEnd());
114 assertTrue(metrics.getSendingEnd().before(endTime)); 109 assertTrue(metrics.getSendingEnd().before(endTime));
115 assertNotNull(metrics.getResponseStart()); 110 assertNotNull(metrics.getResponseStart());
116 assertTrue(metrics.getResponseStart().after(startTime)); 111 assertTrue(metrics.getResponseStart().after(startTime));
117 assertNotNull(metrics.getResponseEnd()); 112 assertNotNull(metrics.getResponseEnd());
118 assertTrue(metrics.getResponseEnd().before(endTime) 113 assertAfter(endTime, metrics.getResponseEnd());
119 || metrics.getResponseEnd().equals(endTime));
120 // Entire request should take more than 0 ms 114 // Entire request should take more than 0 ms
121 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart( ).getTime() > 0); 115 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart( ).getTime() > 0);
122 } 116 }
123 117
124 /** 118 /**
125 * Check that the timing metrics which come from net::LoadTimingInfo::Connec tTiming exist, 119 * Check that the timing metrics which come from net::LoadTimingInfo::Connec tTiming exist,
126 * except SSL times in the case of non-https requests. 120 * except SSL times in the case of non-https requests.
127 */ 121 */
128 public static void checkHasConnectTiming( 122 public static void checkHasConnectTiming(
129 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime, b oolean isSsl) { 123 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime, b oolean isSsl) {
130 assertNotNull(metrics.getDnsStart()); 124 assertNotNull(metrics.getDnsStart());
131 assertTrue( 125 assertAfter(metrics.getDnsStart(), startTime);
132 metrics.getDnsStart().after(startTime) || metrics.getDnsStart(). equals(startTime));
133 assertNotNull(metrics.getDnsEnd()); 126 assertNotNull(metrics.getDnsEnd());
134 assertTrue(metrics.getDnsEnd().before(endTime)); 127 assertTrue(metrics.getDnsEnd().before(endTime));
135 assertNotNull(metrics.getConnectStart()); 128 assertNotNull(metrics.getConnectStart());
136 assertTrue(metrics.getConnectStart().after(startTime) 129 assertAfter(metrics.getConnectStart(), startTime);
137 || metrics.getConnectStart().equals(startTime));
138 assertNotNull(metrics.getConnectEnd()); 130 assertNotNull(metrics.getConnectEnd());
139 assertTrue(metrics.getConnectEnd().before(endTime)); 131 assertTrue(metrics.getConnectEnd().before(endTime));
140 if (isSsl) { 132 if (isSsl) {
141 assertNotNull(metrics.getSslStart()); 133 assertNotNull(metrics.getSslStart());
142 assertTrue(metrics.getSslStart().after(startTime) 134 assertAfter(metrics.getSslStart(), startTime);
143 || metrics.getSslStart().equals(startTime));
144 assertNotNull(metrics.getSslEnd()); 135 assertNotNull(metrics.getSslEnd());
145 assertTrue(metrics.getSslEnd().before(endTime)); 136 assertTrue(metrics.getSslEnd().before(endTime));
146 } else { 137 } else {
147 assertNull(metrics.getSslStart()); 138 assertNull(metrics.getSslStart());
148 assertNull(metrics.getSslEnd()); 139 assertNull(metrics.getSslEnd());
149 } 140 }
150 } 141 }
151 142
152 /** 143 /**
153 * Check that the timing metrics from net::LoadTimingInfo::ConnectTiming don 't exist. 144 * Check that the timing metrics from net::LoadTimingInfo::ConnectTiming don 't exist.
154 */ 145 */
155 public static void checkNoConnectTiming(RequestFinishedInfo.Metrics metrics) { 146 public static void checkNoConnectTiming(RequestFinishedInfo.Metrics metrics) {
156 assertNull(metrics.getDnsStart()); 147 assertNull(metrics.getDnsStart());
157 assertNull(metrics.getDnsEnd()); 148 assertNull(metrics.getDnsEnd());
158 assertNull(metrics.getSslStart()); 149 assertNull(metrics.getSslStart());
159 assertNull(metrics.getSslEnd()); 150 assertNull(metrics.getSslEnd());
160 assertNull(metrics.getConnectStart()); 151 assertNull(metrics.getConnectStart());
161 assertNull(metrics.getConnectEnd()); 152 assertNull(metrics.getConnectEnd());
162 } 153 }
163 } 154 }
OLDNEW
« no previous file with comments | « components/cronet/android/test/javatests/src/org/chromium/net/BidirectionalStreamTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698