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 { |
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 } | 100 } |
101 | 101 |
| 102 /** |
| 103 * Check existence of all the timing metrics that apply to most test request
s. |
| 104 * Also check some timing differences, focusing on things we can't check wit
h asserts in the |
| 105 * CronetMetrics constructor. |
| 106 * Don't check SSL and push times here. |
| 107 */ |
| 108 static void checkTimingMetrics( |
| 109 RequestFinishedInfo.Metrics metrics, Date startTime, Date endTime) { |
| 110 assertNotNull(metrics.getRequestStart()); |
| 111 assertTrue(metrics.getRequestStart().after(startTime)); |
| 112 assertNotNull(metrics.getDnsStart()); |
| 113 assertTrue(metrics.getDnsStart().after(startTime)); |
| 114 assertNotNull(metrics.getDnsEnd()); |
| 115 assertTrue(metrics.getDnsEnd().before(endTime)); |
| 116 assertNotNull(metrics.getConnectStart()); |
| 117 assertTrue(metrics.getConnectStart().after(startTime)); |
| 118 assertNotNull(metrics.getConnectEnd()); |
| 119 assertTrue(metrics.getConnectEnd().before(endTime)); |
| 120 assertNotNull(metrics.getSendingStart()); |
| 121 assertTrue(metrics.getSendingStart().after(startTime)); |
| 122 assertNotNull(metrics.getSendingEnd()); |
| 123 assertTrue(metrics.getSendingEnd().before(endTime)); |
| 124 assertNotNull(metrics.getResponseStart()); |
| 125 assertTrue(metrics.getResponseStart().after(startTime)); |
| 126 assertNotNull(metrics.getResponseEnd()); |
| 127 assertTrue(metrics.getResponseEnd().before(endTime)); |
| 128 // Entire request should take more than 0 ms |
| 129 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart(
).getTime() > 0); |
| 130 } |
| 131 |
102 @SmallTest | 132 @SmallTest |
| 133 @OnlyRunNativeCronet |
103 @Feature({"Cronet"}) | 134 @Feature({"Cronet"}) |
104 @SuppressWarnings("deprecation") | 135 @SuppressWarnings("deprecation") |
105 public void testRequestFinishedListener() throws Exception { | 136 public void testRequestFinishedListener() throws Exception { |
106 mTestFramework = startCronetTestFramework(); | 137 mTestFramework = startCronetTestFramework(); |
107 TestExecutor testExecutor = new TestExecutor(); | 138 TestExecutor testExecutor = new TestExecutor(); |
108 TestRequestFinishedListener requestFinishedListener = | 139 TestRequestFinishedListener requestFinishedListener = |
109 new TestRequestFinishedListener(testExecutor); | 140 new TestRequestFinishedListener(testExecutor); |
110 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 141 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
111 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 142 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
112 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 143 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
113 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 144 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 145 Date startTime = new Date(); |
114 urlRequestBuilder.addRequestAnnotation("request annotation") | 146 urlRequestBuilder.addRequestAnnotation("request annotation") |
115 .addRequestAnnotation(this) | 147 .addRequestAnnotation(this) |
116 .build() | 148 .build() |
117 .start(); | 149 .start(); |
118 callback.blockForDone(); | 150 callback.blockForDone(); |
| 151 Date endTime = new Date(); |
119 testExecutor.runAllTasks(); | 152 testExecutor.runAllTasks(); |
120 | 153 |
121 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; | 154 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; |
122 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); | 155 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
123 assertEquals(mUrl, requestInfo.getUrl()); | 156 assertEquals(mUrl, requestInfo.getUrl()); |
124 assertNotNull(requestInfo.getResponseInfo()); | 157 assertNotNull(requestInfo.getResponseInfo()); |
125 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. | 158 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
126 new HashSet<Object>(requestInfo.getAnnotations())); | 159 new HashSet<Object>(requestInfo.getAnnotations())); |
127 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); | 160 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
128 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); | 161 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); |
| 162 // Check old (deprecated) timing metrics |
129 assertTrue(metrics.getTotalTimeMs() > 0); | 163 assertTrue(metrics.getTotalTimeMs() > 0); |
130 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); | 164 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); |
| 165 // Check new timing metrics |
| 166 checkTimingMetrics(metrics, startTime, endTime); |
| 167 assertNull(metrics.getSslStart()); |
| 168 assertNull(metrics.getSslEnd()); |
| 169 assertNull(metrics.getPushStart()); |
| 170 assertNull(metrics.getPushEnd()); |
| 171 // Check data use metrics |
131 assertTrue(metrics.getReceivedBytesCount() > 0); | 172 assertTrue(metrics.getReceivedBytesCount() > 0); |
132 mTestFramework.mCronetEngine.shutdown(); | 173 mTestFramework.mCronetEngine.shutdown(); |
133 } | 174 } |
134 | 175 |
135 @SmallTest | 176 @SmallTest |
| 177 @OnlyRunNativeCronet |
136 @Feature({"Cronet"}) | 178 @Feature({"Cronet"}) |
137 @SuppressWarnings("deprecation") | 179 @SuppressWarnings("deprecation") |
138 public void testRequestFinishedListenerDirectExecutor() throws Exception { | 180 public void testRequestFinishedListenerDirectExecutor() throws Exception { |
139 mTestFramework = startCronetTestFramework(); | 181 mTestFramework = startCronetTestFramework(); |
140 Executor testExecutor = new DirectExecutor(); | 182 Executor testExecutor = new DirectExecutor(); |
141 TestRequestFinishedListener requestFinishedListener = | 183 TestRequestFinishedListener requestFinishedListener = |
142 new TestRequestFinishedListener(testExecutor); | 184 new TestRequestFinishedListener(testExecutor); |
143 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 185 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
144 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 186 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
145 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 187 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
146 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 188 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 189 Date startTime = new Date(); |
147 urlRequestBuilder.addRequestAnnotation("request annotation") | 190 urlRequestBuilder.addRequestAnnotation("request annotation") |
148 .addRequestAnnotation(this) | 191 .addRequestAnnotation(this) |
149 .build() | 192 .build() |
150 .start(); | 193 .start(); |
151 callback.blockForDone(); | 194 callback.blockForDone(); |
| 195 Date endTime = new Date(); |
152 | 196 |
153 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; | 197 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; |
154 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); | 198 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
155 assertEquals(mUrl, requestInfo.getUrl()); | 199 assertEquals(mUrl, requestInfo.getUrl()); |
156 assertNotNull(requestInfo.getResponseInfo()); | 200 assertNotNull(requestInfo.getResponseInfo()); |
157 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. | 201 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
158 new HashSet<Object>(requestInfo.getAnnotations())); | 202 new HashSet<Object>(requestInfo.getAnnotations())); |
159 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); | 203 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
160 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); | 204 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); |
161 assertTrue(metrics.getTotalTimeMs() > 0); | 205 assertTrue(metrics.getTotalTimeMs() > 0); |
162 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); | 206 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); |
| 207 checkTimingMetrics(metrics, startTime, endTime); |
163 assertTrue(metrics.getReceivedBytesCount() > 0); | 208 assertTrue(metrics.getReceivedBytesCount() > 0); |
164 mTestFramework.mCronetEngine.shutdown(); | 209 mTestFramework.mCronetEngine.shutdown(); |
165 } | 210 } |
166 | 211 |
167 @SmallTest | 212 @SmallTest |
| 213 @OnlyRunNativeCronet |
168 @Feature({"Cronet"}) | 214 @Feature({"Cronet"}) |
169 @SuppressWarnings("deprecation") | 215 @SuppressWarnings("deprecation") |
170 public void testRequestFinishedListenerDifferentThreads() throws Exception { | 216 public void testRequestFinishedListenerDifferentThreads() throws Exception { |
171 mTestFramework = startCronetTestFramework(); | 217 mTestFramework = startCronetTestFramework(); |
172 ThreadExecutor testExecutor = new ThreadExecutor(); | 218 ThreadExecutor testExecutor = new ThreadExecutor(); |
173 TestRequestFinishedListener firstListener = new TestRequestFinishedListe
ner(testExecutor); | 219 TestRequestFinishedListener firstListener = new TestRequestFinishedListe
ner(testExecutor); |
174 TestRequestFinishedListener secondListener = new TestRequestFinishedList
ener(testExecutor); | 220 TestRequestFinishedListener secondListener = new TestRequestFinishedList
ener(testExecutor); |
175 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener); | 221 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener); |
176 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener); | 222 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener); |
177 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 223 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
178 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 224 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
179 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 225 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 226 Date startTime = new Date(); |
180 urlRequestBuilder.addRequestAnnotation("request annotation") | 227 urlRequestBuilder.addRequestAnnotation("request annotation") |
181 .addRequestAnnotation(this) | 228 .addRequestAnnotation(this) |
182 .build() | 229 .build() |
183 .start(); | 230 .start(); |
184 callback.blockForDone(); | 231 callback.blockForDone(); |
| 232 Date endTime = new Date(); |
185 testExecutor.joinAll(); | 233 testExecutor.joinAll(); |
186 | 234 |
187 RequestFinishedInfo firstRequestInfo = firstListener.mRequestInfo; | 235 RequestFinishedInfo firstRequestInfo = firstListener.mRequestInfo; |
188 RequestFinishedInfo secondRequestInfo = secondListener.mRequestInfo; | 236 RequestFinishedInfo secondRequestInfo = secondListener.mRequestInfo; |
189 assertNotNull("First RequestFinishedInfo.Listener must be called", first
RequestInfo); | 237 assertNotNull("First RequestFinishedInfo.Listener must be called", first
RequestInfo); |
190 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco
ndRequestInfo); | 238 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco
ndRequestInfo); |
191 assertEquals(mUrl, firstRequestInfo.getUrl()); | 239 assertEquals(mUrl, firstRequestInfo.getUrl()); |
192 assertEquals(mUrl, secondRequestInfo.getUrl()); | 240 assertEquals(mUrl, secondRequestInfo.getUrl()); |
193 assertNotNull(firstRequestInfo.getResponseInfo()); | 241 assertNotNull(firstRequestInfo.getResponseInfo()); |
194 assertNotNull(secondRequestInfo.getResponseInfo()); | 242 assertNotNull(secondRequestInfo.getResponseInfo()); |
195 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. | 243 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
196 new HashSet<Object>(firstRequestInfo.getAnnotations())); | 244 new HashSet<Object>(firstRequestInfo.getAnnotations())); |
197 assertEquals(newHashSet("request annotation", this), | 245 assertEquals(newHashSet("request annotation", this), |
198 new HashSet<Object>(secondRequestInfo.getAnnotations())); | 246 new HashSet<Object>(secondRequestInfo.getAnnotations())); |
199 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics()
; | 247 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics()
; |
200 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first
Metrics); | 248 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first
Metrics); |
201 assertTrue(firstMetrics.getTotalTimeMs() > 0); | 249 assertTrue(firstMetrics.getTotalTimeMs() > 0); |
202 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs()); | 250 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs()); |
| 251 checkTimingMetrics(firstMetrics, startTime, endTime); |
203 assertTrue(firstMetrics.getReceivedBytesCount() > 0); | 252 assertTrue(firstMetrics.getReceivedBytesCount() > 0); |
204 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics
(); | 253 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics
(); |
205 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon
dMetrics); | 254 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon
dMetrics); |
206 assertTrue(secondMetrics.getTotalTimeMs() > 0); | 255 assertTrue(secondMetrics.getTotalTimeMs() > 0); |
207 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs()); | 256 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs()); |
| 257 checkTimingMetrics(secondMetrics, startTime, endTime); |
208 assertTrue(secondMetrics.getReceivedBytesCount() > 0); | 258 assertTrue(secondMetrics.getReceivedBytesCount() > 0); |
209 mTestFramework.mCronetEngine.shutdown(); | 259 mTestFramework.mCronetEngine.shutdown(); |
210 } | 260 } |
211 | 261 |
212 @SmallTest | 262 @SmallTest |
| 263 @OnlyRunNativeCronet |
213 @Feature({"Cronet"}) | 264 @Feature({"Cronet"}) |
214 @SuppressWarnings("deprecation") | 265 @SuppressWarnings("deprecation") |
215 public void testRequestFinishedListenerFailedRequest() throws Exception { | 266 public void testRequestFinishedListenerFailedRequest() throws Exception { |
216 String connectionRefusedUrl = "http://127.0.0.1:3"; | 267 String connectionRefusedUrl = "http://127.0.0.1:3"; |
217 mTestFramework = startCronetTestFramework(); | 268 mTestFramework = startCronetTestFramework(); |
218 TestExecutor testExecutor = new TestExecutor(); | 269 TestExecutor testExecutor = new TestExecutor(); |
219 TestRequestFinishedListener requestFinishedListener = | 270 TestRequestFinishedListener requestFinishedListener = |
220 new TestRequestFinishedListener(testExecutor); | 271 new TestRequestFinishedListener(testExecutor); |
221 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 272 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
222 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 273 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
223 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection
RefusedUrl, | 274 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection
RefusedUrl, |
224 callback, callback.getExecutor(), mTestFramework.mCronetEngine); | 275 callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
| 276 Date startTime = new Date(); |
225 urlRequestBuilder.build().start(); | 277 urlRequestBuilder.build().start(); |
226 callback.blockForDone(); | 278 callback.blockForDone(); |
| 279 Date endTime = new Date(); |
227 assertTrue(callback.mOnErrorCalled); | 280 assertTrue(callback.mOnErrorCalled); |
228 testExecutor.runAllTasks(); | 281 testExecutor.runAllTasks(); |
229 | 282 |
230 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; | 283 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo; |
231 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); | 284 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
232 assertEquals(connectionRefusedUrl, requestInfo.getUrl()); | 285 assertEquals(connectionRefusedUrl, requestInfo.getUrl()); |
233 assertTrue(requestInfo.getAnnotations().isEmpty()); | 286 assertTrue(requestInfo.getAnnotations().isEmpty()); |
234 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); | 287 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
235 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); | 288 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 | 289 // The failure is occasionally fast enough that time reported is 0, so j
ust check for null |
237 assertNotNull(metrics.getTotalTimeMs()); | 290 assertNotNull(metrics.getTotalTimeMs()); |
238 assertNull(metrics.getTtfbMs()); | 291 assertNull(metrics.getTtfbMs()); |
| 292 |
| 293 // Check the timing metrics |
| 294 assertNotNull(metrics.getRequestStart()); |
| 295 assertTrue(metrics.getRequestStart().after(startTime)); |
| 296 assertNull(metrics.getDnsStart()); |
| 297 assertNull(metrics.getDnsEnd()); |
| 298 assertNull(metrics.getConnectStart()); |
| 299 assertNull(metrics.getConnectEnd()); |
| 300 assertNull(metrics.getSendingStart()); |
| 301 assertNull(metrics.getSendingEnd()); |
| 302 assertNull(metrics.getResponseStart()); |
| 303 assertNotNull(metrics.getResponseEnd()); |
| 304 assertTrue(metrics.getResponseEnd().before(endTime)); |
| 305 // Entire request should take more than 0 ms |
| 306 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart(
).getTime() > 0); |
| 307 |
239 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive
dBytesCount() == 0); | 308 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive
dBytesCount() == 0); |
240 mTestFramework.mCronetEngine.shutdown(); | 309 mTestFramework.mCronetEngine.shutdown(); |
241 } | 310 } |
242 | 311 |
243 @SmallTest | 312 @SmallTest |
| 313 @OnlyRunNativeCronet |
244 @Feature({"Cronet"}) | 314 @Feature({"Cronet"}) |
245 @SuppressWarnings("deprecation") | 315 @SuppressWarnings("deprecation") |
246 public void testRequestFinishedListenerRemoved() throws Exception { | 316 public void testRequestFinishedListenerRemoved() throws Exception { |
247 mTestFramework = startCronetTestFramework(); | 317 mTestFramework = startCronetTestFramework(); |
248 TestExecutor testExecutor = new TestExecutor(); | 318 TestExecutor testExecutor = new TestExecutor(); |
249 TestRequestFinishedListener requestFinishedListener = | 319 TestRequestFinishedListener requestFinishedListener = |
250 new TestRequestFinishedListener(testExecutor); | 320 new TestRequestFinishedListener(testExecutor); |
251 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 321 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
252 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish
edListener); | |
253 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 322 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
254 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 323 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
255 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 324 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
256 urlRequestBuilder.build().start(); | 325 UrlRequest request = urlRequestBuilder.build(); |
| 326 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish
edListener); |
| 327 request.start(); |
257 callback.blockForDone(); | 328 callback.blockForDone(); |
258 testExecutor.runAllTasks(); | 329 testExecutor.runAllTasks(); |
259 | 330 |
260 assertNull("RequestFinishedInfo.Listener must not be called", | 331 assertNull("RequestFinishedInfo.Listener must not be called", |
261 requestFinishedListener.mRequestInfo); | 332 requestFinishedListener.mRequestInfo); |
262 mTestFramework.mCronetEngine.shutdown(); | 333 mTestFramework.mCronetEngine.shutdown(); |
263 } | 334 } |
264 | 335 |
265 @SmallTest | 336 @SmallTest |
266 @Feature({"Cronet"}) | 337 @Feature({"Cronet"}) |
(...skipping 29 matching lines...) Expand all Loading... |
296 assertEquals(new Date(sslEnd), metrics.getSslEnd()); | 367 assertEquals(new Date(sslEnd), metrics.getSslEnd()); |
297 assertEquals(new Date(pushStart), metrics.getPushStart()); | 368 assertEquals(new Date(pushStart), metrics.getPushStart()); |
298 assertEquals(new Date(pushEnd), metrics.getPushEnd()); | 369 assertEquals(new Date(pushEnd), metrics.getPushEnd()); |
299 assertEquals(new Date(responseStart), metrics.getResponseStart()); | 370 assertEquals(new Date(responseStart), metrics.getResponseStart()); |
300 assertEquals(new Date(responseEnd), metrics.getResponseEnd()); | 371 assertEquals(new Date(responseEnd), metrics.getResponseEnd()); |
301 assertEquals(socketReused, metrics.getSocketReused()); | 372 assertEquals(socketReused, metrics.getSocketReused()); |
302 assertEquals(sentBytesCount, (long) metrics.getSentBytesCount()); | 373 assertEquals(sentBytesCount, (long) metrics.getSentBytesCount()); |
303 assertEquals(receivedBytesCount, (long) metrics.getReceivedBytesCount())
; | 374 assertEquals(receivedBytesCount, (long) metrics.getReceivedBytesCount())
; |
304 } | 375 } |
305 } | 376 } |
OLD | NEW |