| 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 } | 59 } |
| 60 | 60 |
| 61 public void joinAll() throws InterruptedException { | 61 public void joinAll() throws InterruptedException { |
| 62 for (Thread thread : mThreads) { | 62 for (Thread thread : mThreads) { |
| 63 thread.join(); | 63 thread.join(); |
| 64 } | 64 } |
| 65 } | 65 } |
| 66 } | 66 } |
| 67 | 67 |
| 68 @SmallTest | 68 @SmallTest |
| 69 @OnlyRunNativeCronet |
| 69 @Feature({"Cronet"}) | 70 @Feature({"Cronet"}) |
| 70 @SuppressWarnings("deprecation") | 71 @SuppressWarnings("deprecation") |
| 71 public void testRequestFinishedListener() throws Exception { | 72 public void testRequestFinishedListener() throws Exception { |
| 72 mTestFramework = startCronetTestFramework(); | 73 mTestFramework = startCronetTestFramework(); |
| 73 TestExecutor testExecutor = new TestExecutor(); | 74 TestExecutor testExecutor = new TestExecutor(); |
| 74 TestRequestFinishedListener requestFinishedListener = | 75 TestRequestFinishedListener requestFinishedListener = |
| 75 new TestRequestFinishedListener(testExecutor); | 76 new TestRequestFinishedListener(testExecutor); |
| 76 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 77 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
| 77 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 78 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 78 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 79 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 79 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 80 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 81 Date startTime = new Date(); |
| 80 urlRequestBuilder.addRequestAnnotation("request annotation") | 82 urlRequestBuilder.addRequestAnnotation("request annotation") |
| 81 .addRequestAnnotation(this) | 83 .addRequestAnnotation(this) |
| 82 .build() | 84 .build() |
| 83 .start(); | 85 .start(); |
| 84 callback.blockForDone(); | 86 callback.blockForDone(); |
| 87 Date endTime = new Date(); |
| 88 Thread.sleep(1000); |
| 85 testExecutor.runAllTasks(); | 89 testExecutor.runAllTasks(); |
| 86 | 90 |
| 87 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); | 91 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); |
| 88 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); | 92 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
| 89 assertEquals(mUrl, requestInfo.getUrl()); | 93 assertEquals(mUrl, requestInfo.getUrl()); |
| 90 assertNotNull(requestInfo.getResponseInfo()); | 94 assertNotNull(requestInfo.getResponseInfo()); |
| 91 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. | 95 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
| 92 new HashSet<Object>(requestInfo.getAnnotations())); | 96 new HashSet<Object>(requestInfo.getAnnotations())); |
| 93 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); | 97 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
| 94 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); | 98 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); |
| 99 // Check old (deprecated) timing metrics |
| 95 assertTrue(metrics.getTotalTimeMs() > 0); | 100 assertTrue(metrics.getTotalTimeMs() > 0); |
| 96 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); | 101 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); |
| 102 // Check new timing metrics |
| 103 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime); |
| 104 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, false
); |
| 105 assertNull(metrics.getPushStart()); |
| 106 assertNull(metrics.getPushEnd()); |
| 107 // Check data use metrics |
| 97 assertTrue(metrics.getReceivedBytesCount() > 0); | 108 assertTrue(metrics.getReceivedBytesCount() > 0); |
| 98 mTestFramework.mCronetEngine.shutdown(); | 109 mTestFramework.mCronetEngine.shutdown(); |
| 99 } | 110 } |
| 100 | 111 |
| 101 @SmallTest | 112 @SmallTest |
| 113 @OnlyRunNativeCronet |
| 102 @Feature({"Cronet"}) | 114 @Feature({"Cronet"}) |
| 103 @SuppressWarnings("deprecation") | 115 @SuppressWarnings("deprecation") |
| 104 public void testRequestFinishedListenerDirectExecutor() throws Exception { | 116 public void testRequestFinishedListenerDirectExecutor() throws Exception { |
| 105 mTestFramework = startCronetTestFramework(); | 117 mTestFramework = startCronetTestFramework(); |
| 106 Executor testExecutor = new DirectExecutor(); | 118 Executor testExecutor = new DirectExecutor(); |
| 107 TestRequestFinishedListener requestFinishedListener = | 119 TestRequestFinishedListener requestFinishedListener = |
| 108 new TestRequestFinishedListener(testExecutor); | 120 new TestRequestFinishedListener(testExecutor); |
| 109 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 121 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
| 110 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 122 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 111 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 123 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 112 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 124 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 125 Date startTime = new Date(); |
| 113 urlRequestBuilder.addRequestAnnotation("request annotation") | 126 urlRequestBuilder.addRequestAnnotation("request annotation") |
| 114 .addRequestAnnotation(this) | 127 .addRequestAnnotation(this) |
| 115 .build() | 128 .build() |
| 116 .start(); | 129 .start(); |
| 117 callback.blockForDone(); | 130 callback.blockForDone(); |
| 131 Date endTime = new Date(); |
| 132 Thread.sleep(1000); |
| 118 | 133 |
| 119 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); | 134 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); |
| 120 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); | 135 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
| 121 assertEquals(mUrl, requestInfo.getUrl()); | 136 assertEquals(mUrl, requestInfo.getUrl()); |
| 122 assertNotNull(requestInfo.getResponseInfo()); | 137 assertNotNull(requestInfo.getResponseInfo()); |
| 123 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. | 138 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
| 124 new HashSet<Object>(requestInfo.getAnnotations())); | 139 new HashSet<Object>(requestInfo.getAnnotations())); |
| 125 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); | 140 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
| 126 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); | 141 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); |
| 127 assertTrue(metrics.getTotalTimeMs() > 0); | 142 assertTrue(metrics.getTotalTimeMs() > 0); |
| 128 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); | 143 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); |
| 144 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime); |
| 145 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, false
); |
| 129 assertTrue(metrics.getReceivedBytesCount() > 0); | 146 assertTrue(metrics.getReceivedBytesCount() > 0); |
| 130 mTestFramework.mCronetEngine.shutdown(); | 147 mTestFramework.mCronetEngine.shutdown(); |
| 131 } | 148 } |
| 132 | 149 |
| 133 @SmallTest | 150 @SmallTest |
| 151 @OnlyRunNativeCronet |
| 134 @Feature({"Cronet"}) | 152 @Feature({"Cronet"}) |
| 135 @SuppressWarnings("deprecation") | 153 @SuppressWarnings("deprecation") |
| 136 public void testRequestFinishedListenerDifferentThreads() throws Exception { | 154 public void testRequestFinishedListenerDifferentThreads() throws Exception { |
| 137 mTestFramework = startCronetTestFramework(); | 155 mTestFramework = startCronetTestFramework(); |
| 138 ThreadExecutor testExecutor = new ThreadExecutor(); | 156 ThreadExecutor testExecutor = new ThreadExecutor(); |
| 139 TestRequestFinishedListener firstListener = new TestRequestFinishedListe
ner(testExecutor); | 157 TestRequestFinishedListener firstListener = new TestRequestFinishedListe
ner(testExecutor); |
| 140 TestRequestFinishedListener secondListener = new TestRequestFinishedList
ener(testExecutor); | 158 TestRequestFinishedListener secondListener = new TestRequestFinishedList
ener(testExecutor); |
| 141 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener); | 159 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener); |
| 142 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener); | 160 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener); |
| 143 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 161 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 144 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 162 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 145 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 163 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 164 Date startTime = new Date(); |
| 146 urlRequestBuilder.addRequestAnnotation("request annotation") | 165 urlRequestBuilder.addRequestAnnotation("request annotation") |
| 147 .addRequestAnnotation(this) | 166 .addRequestAnnotation(this) |
| 148 .build() | 167 .build() |
| 149 .start(); | 168 .start(); |
| 150 callback.blockForDone(); | 169 callback.blockForDone(); |
| 170 Date endTime = new Date(); |
| 171 Thread.sleep(1000); |
| 151 testExecutor.joinAll(); | 172 testExecutor.joinAll(); |
| 152 | 173 |
| 153 RequestFinishedInfo firstRequestInfo = firstListener.getRequestInfo(); | 174 RequestFinishedInfo firstRequestInfo = firstListener.getRequestInfo(); |
| 154 RequestFinishedInfo secondRequestInfo = secondListener.getRequestInfo(); | 175 RequestFinishedInfo secondRequestInfo = secondListener.getRequestInfo(); |
| 155 assertNotNull("First RequestFinishedInfo.Listener must be called", first
RequestInfo); | 176 assertNotNull("First RequestFinishedInfo.Listener must be called", first
RequestInfo); |
| 156 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco
ndRequestInfo); | 177 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco
ndRequestInfo); |
| 157 assertEquals(mUrl, firstRequestInfo.getUrl()); | 178 assertEquals(mUrl, firstRequestInfo.getUrl()); |
| 158 assertEquals(mUrl, secondRequestInfo.getUrl()); | 179 assertEquals(mUrl, secondRequestInfo.getUrl()); |
| 159 assertNotNull(firstRequestInfo.getResponseInfo()); | 180 assertNotNull(firstRequestInfo.getResponseInfo()); |
| 160 assertNotNull(secondRequestInfo.getResponseInfo()); | 181 assertNotNull(secondRequestInfo.getResponseInfo()); |
| 161 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. | 182 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
| 162 new HashSet<Object>(firstRequestInfo.getAnnotations())); | 183 new HashSet<Object>(firstRequestInfo.getAnnotations())); |
| 163 assertEquals(newHashSet("request annotation", this), | 184 assertEquals(newHashSet("request annotation", this), |
| 164 new HashSet<Object>(secondRequestInfo.getAnnotations())); | 185 new HashSet<Object>(secondRequestInfo.getAnnotations())); |
| 165 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics()
; | 186 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics()
; |
| 166 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first
Metrics); | 187 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first
Metrics); |
| 167 assertTrue(firstMetrics.getTotalTimeMs() > 0); | 188 assertTrue(firstMetrics.getTotalTimeMs() > 0); |
| 168 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs()); | 189 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs()); |
| 190 MetricsTestUtil.checkTimingMetrics(firstMetrics, startTime, endTime); |
| 191 MetricsTestUtil.checkHasConnectTiming(firstMetrics, startTime, endTime,
false); |
| 169 assertTrue(firstMetrics.getReceivedBytesCount() > 0); | 192 assertTrue(firstMetrics.getReceivedBytesCount() > 0); |
| 170 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics
(); | 193 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics
(); |
| 171 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon
dMetrics); | 194 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon
dMetrics); |
| 172 assertTrue(secondMetrics.getTotalTimeMs() > 0); | 195 assertTrue(secondMetrics.getTotalTimeMs() > 0); |
| 173 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs()); | 196 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs()); |
| 197 MetricsTestUtil.checkTimingMetrics(secondMetrics, startTime, endTime); |
| 198 MetricsTestUtil.checkHasConnectTiming(secondMetrics, startTime, endTime,
false); |
| 174 assertTrue(secondMetrics.getReceivedBytesCount() > 0); | 199 assertTrue(secondMetrics.getReceivedBytesCount() > 0); |
| 175 mTestFramework.mCronetEngine.shutdown(); | 200 mTestFramework.mCronetEngine.shutdown(); |
| 176 } | 201 } |
| 177 | 202 |
| 178 @SmallTest | 203 @SmallTest |
| 204 @OnlyRunNativeCronet |
| 179 @Feature({"Cronet"}) | 205 @Feature({"Cronet"}) |
| 180 @SuppressWarnings("deprecation") | 206 @SuppressWarnings("deprecation") |
| 181 public void testRequestFinishedListenerFailedRequest() throws Exception { | 207 public void testRequestFinishedListenerFailedRequest() throws Exception { |
| 182 String connectionRefusedUrl = "http://127.0.0.1:3"; | 208 String connectionRefusedUrl = "http://127.0.0.1:3"; |
| 183 mTestFramework = startCronetTestFramework(); | 209 mTestFramework = startCronetTestFramework(); |
| 184 TestExecutor testExecutor = new TestExecutor(); | 210 TestExecutor testExecutor = new TestExecutor(); |
| 185 TestRequestFinishedListener requestFinishedListener = | 211 TestRequestFinishedListener requestFinishedListener = |
| 186 new TestRequestFinishedListener(testExecutor); | 212 new TestRequestFinishedListener(testExecutor); |
| 187 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 213 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
| 188 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 214 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 189 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection
RefusedUrl, | 215 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection
RefusedUrl, |
| 190 callback, callback.getExecutor(), mTestFramework.mCronetEngine); | 216 callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
| 217 Date startTime = new Date(); |
| 191 urlRequestBuilder.build().start(); | 218 urlRequestBuilder.build().start(); |
| 192 callback.blockForDone(); | 219 callback.blockForDone(); |
| 220 Date endTime = new Date(); |
| 193 assertTrue(callback.mOnErrorCalled); | 221 assertTrue(callback.mOnErrorCalled); |
| 222 Thread.sleep(1000); |
| 194 testExecutor.runAllTasks(); | 223 testExecutor.runAllTasks(); |
| 195 | 224 |
| 196 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); | 225 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); |
| 197 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); | 226 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
| 198 assertEquals(connectionRefusedUrl, requestInfo.getUrl()); | 227 assertEquals(connectionRefusedUrl, requestInfo.getUrl()); |
| 199 assertTrue(requestInfo.getAnnotations().isEmpty()); | 228 assertTrue(requestInfo.getAnnotations().isEmpty()); |
| 200 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); | 229 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
| 201 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); | 230 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); |
| 202 // The failure is occasionally fast enough that time reported is 0, so j
ust check for null | 231 // The failure is occasionally fast enough that time reported is 0, so j
ust check for null |
| 203 assertNotNull(metrics.getTotalTimeMs()); | 232 assertNotNull(metrics.getTotalTimeMs()); |
| 204 assertNull(metrics.getTtfbMs()); | 233 assertNull(metrics.getTtfbMs()); |
| 234 |
| 235 // Check the timing metrics |
| 236 assertNotNull(metrics.getRequestStart()); |
| 237 assertTrue(metrics.getRequestStart().after(startTime)); |
| 238 MetricsTestUtil.checkNoConnectTiming(metrics); |
| 239 assertNull(metrics.getSendingStart()); |
| 240 assertNull(metrics.getSendingEnd()); |
| 241 assertNull(metrics.getResponseStart()); |
| 242 assertNotNull(metrics.getResponseEnd()); |
| 243 assertTrue(metrics.getResponseEnd().before(endTime)); |
| 244 // Entire request should take more than 0 ms |
| 245 assertTrue(metrics.getResponseEnd().getTime() - metrics.getRequestStart(
).getTime() > 0); |
| 246 |
| 205 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive
dBytesCount() == 0); | 247 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive
dBytesCount() == 0); |
| 206 mTestFramework.mCronetEngine.shutdown(); | 248 mTestFramework.mCronetEngine.shutdown(); |
| 207 } | 249 } |
| 208 | 250 |
| 209 @SmallTest | 251 @SmallTest |
| 252 @OnlyRunNativeCronet |
| 210 @Feature({"Cronet"}) | 253 @Feature({"Cronet"}) |
| 211 @SuppressWarnings("deprecation") | 254 @SuppressWarnings("deprecation") |
| 212 public void testRequestFinishedListenerRemoved() throws Exception { | 255 public void testRequestFinishedListenerRemoved() throws Exception { |
| 213 mTestFramework = startCronetTestFramework(); | 256 mTestFramework = startCronetTestFramework(); |
| 214 TestExecutor testExecutor = new TestExecutor(); | 257 TestExecutor testExecutor = new TestExecutor(); |
| 215 TestRequestFinishedListener requestFinishedListener = | 258 TestRequestFinishedListener requestFinishedListener = |
| 216 new TestRequestFinishedListener(testExecutor); | 259 new TestRequestFinishedListener(testExecutor); |
| 217 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); | 260 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
| 218 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish
edListener); | |
| 219 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 261 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 220 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( | 262 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 221 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); | 263 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 222 urlRequestBuilder.build().start(); | 264 UrlRequest request = urlRequestBuilder.build(); |
| 265 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish
edListener); |
| 266 request.start(); |
| 223 callback.blockForDone(); | 267 callback.blockForDone(); |
| 224 testExecutor.runAllTasks(); | 268 testExecutor.runAllTasks(); |
| 225 | 269 |
| 226 assertNull("RequestFinishedInfo.Listener must not be called", | 270 assertNull("RequestFinishedInfo.Listener must not be called", |
| 227 requestFinishedListener.getRequestInfo()); | 271 requestFinishedListener.getRequestInfo()); |
| 228 mTestFramework.mCronetEngine.shutdown(); | 272 mTestFramework.mCronetEngine.shutdown(); |
| 229 } | 273 } |
| 230 | 274 |
| 231 @SmallTest | 275 @SmallTest |
| 276 @OnlyRunNativeCronet |
| 277 @Feature({"Cronet"}) |
| 278 public void testRequestFinishedListenerCanceledRequest() throws Exception { |
| 279 mTestFramework = startCronetTestFramework(); |
| 280 TestExecutor testExecutor = new TestExecutor(); |
| 281 TestRequestFinishedListener requestFinishedListener = |
| 282 new TestRequestFinishedListener(testExecutor); |
| 283 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL
istener); |
| 284 TestUrlRequestCallback callback = new TestUrlRequestCallback() { |
| 285 @Override |
| 286 public void onResponseStarted(UrlRequest request, UrlResponseInfo in
fo) { |
| 287 super.onResponseStarted(request, info); |
| 288 request.cancel(); |
| 289 } |
| 290 }; |
| 291 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( |
| 292 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn
gine); |
| 293 Date startTime = new Date(); |
| 294 urlRequestBuilder.addRequestAnnotation("request annotation") |
| 295 .addRequestAnnotation(this) |
| 296 .build() |
| 297 .start(); |
| 298 callback.blockForDone(); |
| 299 Date endTime = new Date(); |
| 300 testExecutor.runAllTasks(); |
| 301 Thread.sleep(1000); |
| 302 |
| 303 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo
(); |
| 304 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo
); |
| 305 assertEquals(mUrl, requestInfo.getUrl()); |
| 306 assertNotNull(requestInfo.getResponseInfo()); |
| 307 assertEquals(newHashSet("request annotation", this), // Use sets for uno
rdered comparison. |
| 308 new HashSet<Object>(requestInfo.getAnnotations())); |
| 309 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics(); |
| 310 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri
cs); |
| 311 // Check old (deprecated) timing metrics |
| 312 assertTrue(metrics.getTotalTimeMs() > 0); |
| 313 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); |
| 314 // Check new timing metrics |
| 315 MetricsTestUtil.checkTimingMetrics(metrics, startTime, endTime); |
| 316 MetricsTestUtil.checkHasConnectTiming(metrics, startTime, endTime, false
); |
| 317 assertNull(metrics.getPushStart()); |
| 318 assertNull(metrics.getPushEnd()); |
| 319 // Check data use metrics |
| 320 assertTrue(metrics.getReceivedBytesCount() > 0); |
| 321 mTestFramework.mCronetEngine.shutdown(); |
| 322 } |
| 323 |
| 324 @SmallTest |
| 232 @Feature({"Cronet"}) | 325 @Feature({"Cronet"}) |
| 233 public void testMetricsGetters() throws Exception { | 326 public void testMetricsGetters() throws Exception { |
| 234 long requestStart = 1; | 327 long requestStart = 1; |
| 235 long dnsStart = 2; | 328 long dnsStart = 2; |
| 236 long dnsEnd = -1; | 329 long dnsEnd = -1; |
| 237 long connectStart = 4; | 330 long connectStart = 4; |
| 238 long connectEnd = 5; | 331 long connectEnd = 5; |
| 239 long sslStart = 6; | 332 long sslStart = 6; |
| 240 long sslEnd = 7; | 333 long sslEnd = 7; |
| 241 long sendingStart = 8; | 334 long sendingStart = 8; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 262 assertEquals(new Date(sslEnd), metrics.getSslEnd()); | 355 assertEquals(new Date(sslEnd), metrics.getSslEnd()); |
| 263 assertEquals(new Date(pushStart), metrics.getPushStart()); | 356 assertEquals(new Date(pushStart), metrics.getPushStart()); |
| 264 assertEquals(new Date(pushEnd), metrics.getPushEnd()); | 357 assertEquals(new Date(pushEnd), metrics.getPushEnd()); |
| 265 assertEquals(new Date(responseStart), metrics.getResponseStart()); | 358 assertEquals(new Date(responseStart), metrics.getResponseStart()); |
| 266 assertEquals(new Date(responseEnd), metrics.getResponseEnd()); | 359 assertEquals(new Date(responseEnd), metrics.getResponseEnd()); |
| 267 assertEquals(socketReused, metrics.getSocketReused()); | 360 assertEquals(socketReused, metrics.getSocketReused()); |
| 268 assertEquals(sentBytesCount, (long) metrics.getSentBytesCount()); | 361 assertEquals(sentBytesCount, (long) metrics.getSentBytesCount()); |
| 269 assertEquals(receivedBytesCount, (long) metrics.getReceivedBytesCount())
; | 362 assertEquals(receivedBytesCount, (long) metrics.getReceivedBytesCount())
; |
| 270 } | 363 } |
| 271 } | 364 } |
| OLD | NEW |