OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |