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

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

Issue 2351793003: Implement timing metrics for UrlRequest (Closed)
Patch Set: add more testing, and other comments Created 4 years, 3 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 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 org.chromium.base.CollectionUtil.newHashSet; 7 import static org.chromium.base.CollectionUtil.newHashSet;
8 8
9 import android.test.suitebuilder.annotation.SmallTest; 9 import android.test.suitebuilder.annotation.SmallTest;
10 10
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 newThread.start(); 77 newThread.start();
78 } 78 }
79 79
80 public void joinAll() throws InterruptedException { 80 public void joinAll() throws InterruptedException {
81 for (Thread thread : mThreads) { 81 for (Thread thread : mThreads) {
82 thread.join(); 82 thread.join();
83 } 83 }
84 } 84 }
85 } 85 }
86 86
87 private static class TestRequestFinishedListener extends RequestFinishedInfo .Listener { 87 static class TestRequestFinishedListener extends RequestFinishedInfo.Listene r {
xunjieli 2016/09/20 21:53:33 Instead of making these classes packet protected,
mgersh 2016/09/30 23:47:14 Done.
88 private RequestFinishedInfo mRequestInfo; 88 RequestFinishedInfo mRequestInfo;
89 89
90 public TestRequestFinishedListener(Executor executor) { 90 public TestRequestFinishedListener(Executor executor) {
91 super(executor); 91 super(executor);
92 } 92 }
93 93
94 @Override 94 @Override
95 public void onRequestFinished(RequestFinishedInfo requestInfo) { 95 public void onRequestFinished(RequestFinishedInfo requestInfo) {
96 assertNull("onRequestFinished called repeatedly", mRequestInfo); 96 assertNull("onRequestFinished called repeatedly", mRequestInfo);
97 assertNotNull(requestInfo); 97 assertNotNull(requestInfo);
98 mRequestInfo = requestInfo; 98 mRequestInfo = requestInfo;
99 } 99 }
100
101 public void reset() {
102 mRequestInfo = null;
103 }
104 }
105
106 /**
107 * Check existence of all the timing metrics that apply to most test request s,
108 * except those that come from net::LoadTimingInfo::ConnectTiming.
109 * Also check some timing differences, focusing on things we can't check wit h asserts in the
110 * CronetMetrics constructor.
111 * Don't check push times here.
112 */
113 static void checkTimingMetrics(
114 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) {
115 assertNotNull(metrics.getRequestStart());
116 assertTrue(metrics.getRequestStart().after(startTime));
117 assertNotNull(metrics.getSendingStart());
118 assertTrue(metrics.getSendingStart().after(startTime));
119 assertNotNull(metrics.getSendingEnd());
120 assertTrue(metrics.getSendingEnd().before(endTime));
121 assertNotNull(metrics.getResponseStart());
122 assertTrue(metrics.getResponseStart().after(startTime));
123 assertNotNull(metrics.getResponseEnd());
124 assertTrue(metrics.getResponseEnd().before(endTime));
125 // Entire request should take more than 0 ms
126 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart( ).getTime() > 0);
127 }
128
129 static void checkHasConnectTiming(
130 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime, b oolean isSsl) {
131 assertNotNull(metrics.getDnsStart());
132 assertTrue(metrics.getDnsStart().after(startTime));
133 assertNotNull(metrics.getDnsEnd());
134 assertTrue(metrics.getDnsEnd().before(endTime));
135 assertNotNull(metrics.getConnectStart());
136 assertTrue(metrics.getConnectStart().after(startTime));
137 assertNotNull(metrics.getConnectEnd());
138 assertTrue(metrics.getConnectEnd().before(endTime));
139 if (isSsl) {
140 assertNotNull(metrics.getSslStart());
141 assertTrue(metrics.getSslStart().after(startTime));
142 assertNotNull(metrics.getSslEnd());
143 assertTrue(metrics.getSslEnd().before(endTime));
144 } else {
145 assertNull(metrics.getSslStart());
146 assertNull(metrics.getSslEnd());
147 }
148 }
149
150 static void checkNoConnectTiming(RequestFinishedInfo.Metrics metrics) {
xunjieli 2016/09/20 21:53:33 It will be great if you can move these to a standa
mgersh 2016/09/30 23:47:14 Done.
151 assertNull(metrics.getDnsStart());
152 assertNull(metrics.getDnsEnd());
153 assertNull(metrics.getSslStart());
154 assertNull(metrics.getSslEnd());
155 assertNull(metrics.getConnectStart());
156 assertNull(metrics.getConnectEnd());
100 } 157 }
101 158
102 @SmallTest 159 @SmallTest
160 @OnlyRunNativeCronet
103 @Feature({"Cronet"}) 161 @Feature({"Cronet"})
104 @SuppressWarnings("deprecation") 162 @SuppressWarnings("deprecation")
105 public void testRequestFinishedListener() throws Exception { 163 public void testRequestFinishedListener() throws Exception {
106 mTestFramework = startCronetTestFramework(); 164 mTestFramework = startCronetTestFramework();
107 TestExecutor testExecutor = new TestExecutor(); 165 TestExecutor testExecutor = new TestExecutor();
108 TestRequestFinishedListener requestFinishedListener = 166 TestRequestFinishedListener requestFinishedListener =
109 new TestRequestFinishedListener(testExecutor); 167 new TestRequestFinishedListener(testExecutor);
110 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 168 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
111 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 169 TestUrlRequestCallback callback = new TestUrlRequestCallback();
112 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 170 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
113 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 171 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
172 Date startTime = new Date();
114 urlRequestBuilder.addRequestAnnotation("request annotation") 173 urlRequestBuilder.addRequestAnnotation("request annotation")
115 .addRequestAnnotation(this) 174 .addRequestAnnotation(this)
116 .build() 175 .build()
117 .start(); 176 .start();
118 callback.blockForDone(); 177 callback.blockForDone();
178 Date endTime = new Date();
119 testExecutor.runAllTasks(); 179 testExecutor.runAllTasks();
120 180
121 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; 181 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo;
122 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo ); 182 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo );
123 assertEquals(mUrl, requestInfo.getUrl()); 183 assertEquals(mUrl, requestInfo.getUrl());
124 assertNotNull(requestInfo.getResponseInfo()); 184 assertNotNull(requestInfo.getResponseInfo());
125 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. 185 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison.
126 new HashSet<Object>(requestInfo.getAnnotations())); 186 new HashSet<Object>(requestInfo.getAnnotations()));
127 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); 187 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
128 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs); 188 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs);
189 // Check old (deprecated) timing metrics
129 assertTrue(metrics.getTotalTimeMs() > 0); 190 assertTrue(metrics.getTotalTimeMs() > 0);
130 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); 191 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
192 // Check new timing metrics
193 checkTimingMetrics(metrics, startTime, endTime);
194 checkHasConnectTiming(metrics, startTime, endTime, false);
195 assertNull(metrics.getPushStart());
196 assertNull(metrics.getPushEnd());
197 // Check data use metrics
131 assertTrue(metrics.getReceivedBytesCount() > 0); 198 assertTrue(metrics.getReceivedBytesCount() > 0);
132 mTestFramework.mCronetEngine.shutdown(); 199 mTestFramework.mCronetEngine.shutdown();
133 } 200 }
134 201
135 @SmallTest 202 @SmallTest
203 @OnlyRunNativeCronet
136 @Feature({"Cronet"}) 204 @Feature({"Cronet"})
137 @SuppressWarnings("deprecation") 205 @SuppressWarnings("deprecation")
138 public void testRequestFinishedListenerDirectExecutor() throws Exception { 206 public void testRequestFinishedListenerDirectExecutor() throws Exception {
139 mTestFramework = startCronetTestFramework(); 207 mTestFramework = startCronetTestFramework();
140 Executor testExecutor = new DirectExecutor(); 208 Executor testExecutor = new DirectExecutor();
141 TestRequestFinishedListener requestFinishedListener = 209 TestRequestFinishedListener requestFinishedListener =
142 new TestRequestFinishedListener(testExecutor); 210 new TestRequestFinishedListener(testExecutor);
143 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 211 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
144 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 212 TestUrlRequestCallback callback = new TestUrlRequestCallback();
145 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 213 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
146 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 214 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
215 Date startTime = new Date();
147 urlRequestBuilder.addRequestAnnotation("request annotation") 216 urlRequestBuilder.addRequestAnnotation("request annotation")
148 .addRequestAnnotation(this) 217 .addRequestAnnotation(this)
149 .build() 218 .build()
150 .start(); 219 .start();
151 callback.blockForDone(); 220 callback.blockForDone();
221 Date endTime = new Date();
152 222
153 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; 223 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo;
154 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo ); 224 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo );
155 assertEquals(mUrl, requestInfo.getUrl()); 225 assertEquals(mUrl, requestInfo.getUrl());
156 assertNotNull(requestInfo.getResponseInfo()); 226 assertNotNull(requestInfo.getResponseInfo());
157 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. 227 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison.
158 new HashSet<Object>(requestInfo.getAnnotations())); 228 new HashSet<Object>(requestInfo.getAnnotations()));
159 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); 229 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
160 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs); 230 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs);
161 assertTrue(metrics.getTotalTimeMs() > 0); 231 assertTrue(metrics.getTotalTimeMs() > 0);
162 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); 232 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
233 checkTimingMetrics(metrics, startTime, endTime);
234 checkHasConnectTiming(metrics, startTime, endTime, false);
163 assertTrue(metrics.getReceivedBytesCount() > 0); 235 assertTrue(metrics.getReceivedBytesCount() > 0);
164 mTestFramework.mCronetEngine.shutdown(); 236 mTestFramework.mCronetEngine.shutdown();
165 } 237 }
166 238
167 @SmallTest 239 @SmallTest
240 @OnlyRunNativeCronet
168 @Feature({"Cronet"}) 241 @Feature({"Cronet"})
169 @SuppressWarnings("deprecation") 242 @SuppressWarnings("deprecation")
170 public void testRequestFinishedListenerDifferentThreads() throws Exception { 243 public void testRequestFinishedListenerDifferentThreads() throws Exception {
171 mTestFramework = startCronetTestFramework(); 244 mTestFramework = startCronetTestFramework();
172 ThreadExecutor testExecutor = new ThreadExecutor(); 245 ThreadExecutor testExecutor = new ThreadExecutor();
173 TestRequestFinishedListener firstListener = new TestRequestFinishedListe ner(testExecutor); 246 TestRequestFinishedListener firstListener = new TestRequestFinishedListe ner(testExecutor);
174 TestRequestFinishedListener secondListener = new TestRequestFinishedList ener(testExecutor); 247 TestRequestFinishedListener secondListener = new TestRequestFinishedList ener(testExecutor);
175 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener); 248 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener);
176 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener); 249 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener);
177 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 250 TestUrlRequestCallback callback = new TestUrlRequestCallback();
178 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 251 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
179 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 252 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
253 Date startTime = new Date();
180 urlRequestBuilder.addRequestAnnotation("request annotation") 254 urlRequestBuilder.addRequestAnnotation("request annotation")
181 .addRequestAnnotation(this) 255 .addRequestAnnotation(this)
182 .build() 256 .build()
183 .start(); 257 .start();
184 callback.blockForDone(); 258 callback.blockForDone();
259 Date endTime = new Date();
185 testExecutor.joinAll(); 260 testExecutor.joinAll();
186 261
187 RequestFinishedInfo firstRequestInfo = firstListener.mRequestInfo; 262 RequestFinishedInfo firstRequestInfo = firstListener.mRequestInfo;
188 RequestFinishedInfo secondRequestInfo = secondListener.mRequestInfo; 263 RequestFinishedInfo secondRequestInfo = secondListener.mRequestInfo;
189 assertNotNull("First RequestFinishedInfo.Listener must be called", first RequestInfo); 264 assertNotNull("First RequestFinishedInfo.Listener must be called", first RequestInfo);
190 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco ndRequestInfo); 265 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco ndRequestInfo);
191 assertEquals(mUrl, firstRequestInfo.getUrl()); 266 assertEquals(mUrl, firstRequestInfo.getUrl());
192 assertEquals(mUrl, secondRequestInfo.getUrl()); 267 assertEquals(mUrl, secondRequestInfo.getUrl());
193 assertNotNull(firstRequestInfo.getResponseInfo()); 268 assertNotNull(firstRequestInfo.getResponseInfo());
194 assertNotNull(secondRequestInfo.getResponseInfo()); 269 assertNotNull(secondRequestInfo.getResponseInfo());
195 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. 270 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison.
196 new HashSet<Object>(firstRequestInfo.getAnnotations())); 271 new HashSet<Object>(firstRequestInfo.getAnnotations()));
197 assertEquals(newHashSet("request annotation", this), 272 assertEquals(newHashSet("request annotation", this),
198 new HashSet<Object>(secondRequestInfo.getAnnotations())); 273 new HashSet<Object>(secondRequestInfo.getAnnotations()));
199 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics() ; 274 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics() ;
200 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first Metrics); 275 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first Metrics);
201 assertTrue(firstMetrics.getTotalTimeMs() > 0); 276 assertTrue(firstMetrics.getTotalTimeMs() > 0);
202 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs()); 277 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs());
278 checkTimingMetrics(firstMetrics, startTime, endTime);
279 checkHasConnectTiming(firstMetrics, startTime, endTime, false);
203 assertTrue(firstMetrics.getReceivedBytesCount() > 0); 280 assertTrue(firstMetrics.getReceivedBytesCount() > 0);
204 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics (); 281 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics ();
205 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon dMetrics); 282 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon dMetrics);
206 assertTrue(secondMetrics.getTotalTimeMs() > 0); 283 assertTrue(secondMetrics.getTotalTimeMs() > 0);
207 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs()); 284 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs());
285 checkTimingMetrics(secondMetrics, startTime, endTime);
286 checkHasConnectTiming(secondMetrics, startTime, endTime, false);
208 assertTrue(secondMetrics.getReceivedBytesCount() > 0); 287 assertTrue(secondMetrics.getReceivedBytesCount() > 0);
209 mTestFramework.mCronetEngine.shutdown(); 288 mTestFramework.mCronetEngine.shutdown();
210 } 289 }
211 290
212 @SmallTest 291 @SmallTest
292 @OnlyRunNativeCronet
213 @Feature({"Cronet"}) 293 @Feature({"Cronet"})
214 @SuppressWarnings("deprecation") 294 @SuppressWarnings("deprecation")
215 public void testRequestFinishedListenerFailedRequest() throws Exception { 295 public void testRequestFinishedListenerFailedRequest() throws Exception {
216 String connectionRefusedUrl = "http://127.0.0.1:3"; 296 String connectionRefusedUrl = "http://127.0.0.1:3";
217 mTestFramework = startCronetTestFramework(); 297 mTestFramework = startCronetTestFramework();
218 TestExecutor testExecutor = new TestExecutor(); 298 TestExecutor testExecutor = new TestExecutor();
219 TestRequestFinishedListener requestFinishedListener = 299 TestRequestFinishedListener requestFinishedListener =
220 new TestRequestFinishedListener(testExecutor); 300 new TestRequestFinishedListener(testExecutor);
221 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 301 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
222 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 302 TestUrlRequestCallback callback = new TestUrlRequestCallback();
223 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection RefusedUrl, 303 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection RefusedUrl,
224 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 304 callback, callback.getExecutor(), mTestFramework.mCronetEngine);
305 Date startTime = new Date();
225 urlRequestBuilder.build().start(); 306 urlRequestBuilder.build().start();
226 callback.blockForDone(); 307 callback.blockForDone();
308 Date endTime = new Date();
227 assertTrue(callback.mOnErrorCalled); 309 assertTrue(callback.mOnErrorCalled);
228 testExecutor.runAllTasks(); 310 testExecutor.runAllTasks();
229 311
230 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; 312 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo;
231 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo ); 313 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo );
232 assertEquals(connectionRefusedUrl, requestInfo.getUrl()); 314 assertEquals(connectionRefusedUrl, requestInfo.getUrl());
233 assertTrue(requestInfo.getAnnotations().isEmpty()); 315 assertTrue(requestInfo.getAnnotations().isEmpty());
234 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); 316 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
235 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs); 317 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs);
236 // The failure is occasionally fast enough that time reported is 0, so j ust check for null 318 // The failure is occasionally fast enough that time reported is 0, so j ust check for null
237 assertNotNull(metrics.getTotalTimeMs()); 319 assertNotNull(metrics.getTotalTimeMs());
238 assertNull(metrics.getTtfbMs()); 320 assertNull(metrics.getTtfbMs());
321
322 // Check the timing metrics
323 assertNotNull(metrics.getRequestStart());
324 assertTrue(metrics.getRequestStart().after(startTime));
325 checkNoConnectTiming(metrics);
326 assertNull(metrics.getSendingStart());
327 assertNull(metrics.getSendingEnd());
328 assertNull(metrics.getResponseStart());
329 assertNotNull(metrics.getResponseEnd());
330 assertTrue(metrics.getResponseEnd().before(endTime));
331 // Entire request should take more than 0 ms
332 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart( ).getTime() > 0);
333
239 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive dBytesCount() == 0); 334 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive dBytesCount() == 0);
240 mTestFramework.mCronetEngine.shutdown(); 335 mTestFramework.mCronetEngine.shutdown();
241 } 336 }
242 337
243 @SmallTest 338 @SmallTest
339 @OnlyRunNativeCronet
244 @Feature({"Cronet"}) 340 @Feature({"Cronet"})
245 @SuppressWarnings("deprecation") 341 @SuppressWarnings("deprecation")
246 public void testRequestFinishedListenerRemoved() throws Exception { 342 public void testRequestFinishedListenerRemoved() throws Exception {
247 mTestFramework = startCronetTestFramework(); 343 mTestFramework = startCronetTestFramework();
248 TestExecutor testExecutor = new TestExecutor(); 344 TestExecutor testExecutor = new TestExecutor();
249 TestRequestFinishedListener requestFinishedListener = 345 TestRequestFinishedListener requestFinishedListener =
250 new TestRequestFinishedListener(testExecutor); 346 new TestRequestFinishedListener(testExecutor);
251 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 347 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
252 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener);
253 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 348 TestUrlRequestCallback callback = new TestUrlRequestCallback();
254 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 349 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
255 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 350 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
256 urlRequestBuilder.build().start(); 351 UrlRequest request = urlRequestBuilder.build();
352 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener);
353 request.start();
257 callback.blockForDone(); 354 callback.blockForDone();
258 testExecutor.runAllTasks(); 355 testExecutor.runAllTasks();
259 356
260 assertNull("RequestFinishedInfo.Listener must not be called", 357 assertNull("RequestFinishedInfo.Listener must not be called",
261 requestFinishedListener.mRequestInfo); 358 requestFinishedListener.mRequestInfo);
262 mTestFramework.mCronetEngine.shutdown(); 359 mTestFramework.mCronetEngine.shutdown();
263 } 360 }
264 361
265 @SmallTest 362 @SmallTest
266 @Feature({"Cronet"}) 363 @Feature({"Cronet"})
(...skipping 29 matching lines...) Expand all
296 assertEquals(new Date(sslEnd), metrics.getSslEnd()); 393 assertEquals(new Date(sslEnd), metrics.getSslEnd());
297 assertEquals(new Date(pushStart), metrics.getPushStart()); 394 assertEquals(new Date(pushStart), metrics.getPushStart());
298 assertEquals(new Date(pushEnd), metrics.getPushEnd()); 395 assertEquals(new Date(pushEnd), metrics.getPushEnd());
299 assertEquals(new Date(responseStart), metrics.getResponseStart()); 396 assertEquals(new Date(responseStart), metrics.getResponseStart());
300 assertEquals(new Date(responseEnd), metrics.getResponseEnd()); 397 assertEquals(new Date(responseEnd), metrics.getResponseEnd());
301 assertEquals(socketReused, metrics.getSocketReused()); 398 assertEquals(socketReused, metrics.getSocketReused());
302 assertEquals(sentBytesCount, (long) metrics.getSentBytesCount()); 399 assertEquals(sentBytesCount, (long) metrics.getSentBytesCount());
303 assertEquals(receivedBytesCount, (long) metrics.getReceivedBytesCount()) ; 400 assertEquals(receivedBytesCount, (long) metrics.getReceivedBytesCount()) ;
304 } 401 }
305 } 402 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698