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

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

Issue 2204533002: Move Cronet metrics-related classes into their own files (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix javadoc Created 4 years, 4 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
11 import org.chromium.base.test.util.Feature; 11 import org.chromium.base.test.util.Feature;
12 import org.chromium.net.CronetEngine.UrlRequestInfo;
13 import org.chromium.net.test.EmbeddedTestServer; 12 import org.chromium.net.test.EmbeddedTestServer;
14 13
15 import java.util.ArrayList; 14 import java.util.ArrayList;
16 import java.util.HashSet; 15 import java.util.HashSet;
17 import java.util.LinkedList; 16 import java.util.LinkedList;
18 import java.util.List; 17 import java.util.List;
19 import java.util.NoSuchElementException; 18 import java.util.NoSuchElementException;
20 import java.util.concurrent.Executor; 19 import java.util.concurrent.Executor;
21 20
22 /** 21 /**
23 * Test RequestFinishedListener and the metrics information it provides. 22 * Test RequestFinishedInfo.Listener and the metrics information it provides.
24 */ 23 */
25 public class RequestFinishedListenerTest extends CronetTestBase { 24 public class RequestFinishedInfoTest extends CronetTestBase {
26 CronetTestFramework mTestFramework; 25 CronetTestFramework mTestFramework;
27 private EmbeddedTestServer mTestServer; 26 private EmbeddedTestServer mTestServer;
28 private String mUrl; 27 private String mUrl;
29 28
30 @Override 29 @Override
31 protected void setUp() throws Exception { 30 protected void setUp() throws Exception {
32 super.setUp(); 31 super.setUp();
33 mTestServer = EmbeddedTestServer.createAndStartDefaultServer(getContext( )); 32 mTestServer = EmbeddedTestServer.createAndStartDefaultServer(getContext( ));
34 mUrl = mTestServer.getURL("/echo?status=200"); 33 mUrl = mTestServer.getURL("/echo?status=200");
35 } 34 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 newThread.start(); 75 newThread.start();
77 } 76 }
78 77
79 public void joinAll() throws InterruptedException { 78 public void joinAll() throws InterruptedException {
80 for (Thread thread : mThreads) { 79 for (Thread thread : mThreads) {
81 thread.join(); 80 thread.join();
82 } 81 }
83 } 82 }
84 } 83 }
85 84
86 private static class TestRequestFinishedListener extends RequestFinishedList ener { 85 private static class TestRequestFinishedListener extends RequestFinishedInfo .Listener {
87 private UrlRequestInfo mRequestInfo; 86 private RequestFinishedInfo mRequestInfo;
88 87
89 public TestRequestFinishedListener(Executor executor) { 88 public TestRequestFinishedListener(Executor executor) {
90 super(executor); 89 super(executor);
91 } 90 }
92 91
93 @Override 92 @Override
94 public void onRequestFinished(UrlRequestInfo requestInfo) { 93 public void onRequestFinished(RequestFinishedInfo requestInfo) {
95 assertNull("onRequestFinished called repeatedly", mRequestInfo); 94 assertNull("onRequestFinished called repeatedly", mRequestInfo);
96 assertNotNull(requestInfo); 95 assertNotNull(requestInfo);
97 mRequestInfo = requestInfo; 96 mRequestInfo = requestInfo;
98 } 97 }
99 } 98 }
100 99
101 @SmallTest 100 @SmallTest
102 @Feature({"Cronet"}) 101 @Feature({"Cronet"})
103 @SuppressWarnings("deprecation") 102 @SuppressWarnings("deprecation")
104 public void testRequestFinishedListener() throws Exception { 103 public void testRequestFinishedListener() throws Exception {
105 mTestFramework = startCronetTestFramework(); 104 mTestFramework = startCronetTestFramework();
106 TestExecutor testExecutor = new TestExecutor(); 105 TestExecutor testExecutor = new TestExecutor();
107 TestRequestFinishedListener requestFinishedListener = 106 TestRequestFinishedListener requestFinishedListener =
108 new TestRequestFinishedListener(testExecutor); 107 new TestRequestFinishedListener(testExecutor);
109 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 108 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
110 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 109 TestUrlRequestCallback callback = new TestUrlRequestCallback();
111 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 110 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
112 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 111 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
113 urlRequestBuilder.addRequestAnnotation("request annotation") 112 urlRequestBuilder.addRequestAnnotation("request annotation")
114 .addRequestAnnotation(this) 113 .addRequestAnnotation(this)
115 .build() 114 .build()
116 .start(); 115 .start();
117 callback.blockForDone(); 116 callback.blockForDone();
118 testExecutor.runAllTasks(); 117 testExecutor.runAllTasks();
119 118
120 CronetEngine.UrlRequestInfo requestInfo = requestFinishedListener.mReque stInfo; 119 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo;
121 assertNotNull("RequestFinishedListener must be called", requestInfo); 120 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo );
122 assertEquals(mUrl, requestInfo.getUrl()); 121 assertEquals(mUrl, requestInfo.getUrl());
123 assertNotNull(requestInfo.getResponseInfo()); 122 assertNotNull(requestInfo.getResponseInfo());
124 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. 123 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison.
125 new HashSet<Object>(requestInfo.getAnnotations())); 124 new HashSet<Object>(requestInfo.getAnnotations()));
126 CronetEngine.UrlRequestMetrics metrics = requestInfo.getMetrics(); 125 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
127 assertNotNull("UrlRequestInfo.getMetrics() must not be null", metrics); 126 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs);
128 assertTrue(metrics.getTotalTimeMs() > 0); 127 assertTrue(metrics.getTotalTimeMs() > 0);
129 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); 128 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
130 assertTrue(metrics.getReceivedBytesCount() > 0); 129 assertTrue(metrics.getReceivedBytesCount() > 0);
131 mTestFramework.mCronetEngine.shutdown(); 130 mTestFramework.mCronetEngine.shutdown();
132 } 131 }
133 132
134 @SmallTest 133 @SmallTest
135 @Feature({"Cronet"}) 134 @Feature({"Cronet"})
136 @SuppressWarnings("deprecation") 135 @SuppressWarnings("deprecation")
137 public void testRequestFinishedListenerDirectExecutor() throws Exception { 136 public void testRequestFinishedListenerDirectExecutor() throws Exception {
138 mTestFramework = startCronetTestFramework(); 137 mTestFramework = startCronetTestFramework();
139 Executor testExecutor = new DirectExecutor(); 138 Executor testExecutor = new DirectExecutor();
140 TestRequestFinishedListener requestFinishedListener = 139 TestRequestFinishedListener requestFinishedListener =
141 new TestRequestFinishedListener(testExecutor); 140 new TestRequestFinishedListener(testExecutor);
142 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 141 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
143 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 142 TestUrlRequestCallback callback = new TestUrlRequestCallback();
144 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 143 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
145 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 144 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
146 urlRequestBuilder.addRequestAnnotation("request annotation") 145 urlRequestBuilder.addRequestAnnotation("request annotation")
147 .addRequestAnnotation(this) 146 .addRequestAnnotation(this)
148 .build() 147 .build()
149 .start(); 148 .start();
150 callback.blockForDone(); 149 callback.blockForDone();
151 150
152 CronetEngine.UrlRequestInfo requestInfo = requestFinishedListener.mReque stInfo; 151 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo;
153 assertNotNull("RequestFinishedListener must be called", requestInfo); 152 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo );
154 assertEquals(mUrl, requestInfo.getUrl()); 153 assertEquals(mUrl, requestInfo.getUrl());
155 assertNotNull(requestInfo.getResponseInfo()); 154 assertNotNull(requestInfo.getResponseInfo());
156 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. 155 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison.
157 new HashSet<Object>(requestInfo.getAnnotations())); 156 new HashSet<Object>(requestInfo.getAnnotations()));
158 CronetEngine.UrlRequestMetrics metrics = requestInfo.getMetrics(); 157 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
159 assertNotNull("UrlRequestInfo.getMetrics() must not be null", metrics); 158 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs);
160 assertTrue(metrics.getTotalTimeMs() > 0); 159 assertTrue(metrics.getTotalTimeMs() > 0);
161 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs()); 160 assertTrue(metrics.getTotalTimeMs() >= metrics.getTtfbMs());
162 assertTrue(metrics.getReceivedBytesCount() > 0); 161 assertTrue(metrics.getReceivedBytesCount() > 0);
163 mTestFramework.mCronetEngine.shutdown(); 162 mTestFramework.mCronetEngine.shutdown();
164 } 163 }
165 164
166 @SmallTest 165 @SmallTest
167 @Feature({"Cronet"}) 166 @Feature({"Cronet"})
168 @SuppressWarnings("deprecation") 167 @SuppressWarnings("deprecation")
169 public void testRequestFinishedListenerDifferentThreads() throws Exception { 168 public void testRequestFinishedListenerDifferentThreads() throws Exception {
170 mTestFramework = startCronetTestFramework(); 169 mTestFramework = startCronetTestFramework();
171 ThreadExecutor testExecutor = new ThreadExecutor(); 170 ThreadExecutor testExecutor = new ThreadExecutor();
172 TestRequestFinishedListener firstListener = new TestRequestFinishedListe ner(testExecutor); 171 TestRequestFinishedListener firstListener = new TestRequestFinishedListe ner(testExecutor);
173 TestRequestFinishedListener secondListener = new TestRequestFinishedList ener(testExecutor); 172 TestRequestFinishedListener secondListener = new TestRequestFinishedList ener(testExecutor);
174 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener); 173 mTestFramework.mCronetEngine.addRequestFinishedListener(firstListener);
175 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener); 174 mTestFramework.mCronetEngine.addRequestFinishedListener(secondListener);
176 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 175 TestUrlRequestCallback callback = new TestUrlRequestCallback();
177 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 176 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
178 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 177 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
179 urlRequestBuilder.addRequestAnnotation("request annotation") 178 urlRequestBuilder.addRequestAnnotation("request annotation")
180 .addRequestAnnotation(this) 179 .addRequestAnnotation(this)
181 .build() 180 .build()
182 .start(); 181 .start();
183 callback.blockForDone(); 182 callback.blockForDone();
184 testExecutor.joinAll(); 183 testExecutor.joinAll();
185 184
186 CronetEngine.UrlRequestInfo firstRequestInfo = firstListener.mRequestInf o; 185 RequestFinishedInfo firstRequestInfo = firstListener.mRequestInfo;
187 CronetEngine.UrlRequestInfo secondRequestInfo = secondListener.mRequestI nfo; 186 RequestFinishedInfo secondRequestInfo = secondListener.mRequestInfo;
188 assertNotNull("First RequestFinishedListener must be called", firstReque stInfo); 187 assertNotNull("First RequestFinishedInfo.Listener must be called", first RequestInfo);
189 assertNotNull("Second RequestFinishedListener must be called", secondReq uestInfo); 188 assertNotNull("Second RequestFinishedInfo.Listener must be called", seco ndRequestInfo);
190 assertEquals(mUrl, firstRequestInfo.getUrl()); 189 assertEquals(mUrl, firstRequestInfo.getUrl());
191 assertEquals(mUrl, secondRequestInfo.getUrl()); 190 assertEquals(mUrl, secondRequestInfo.getUrl());
192 assertNotNull(firstRequestInfo.getResponseInfo()); 191 assertNotNull(firstRequestInfo.getResponseInfo());
193 assertNotNull(secondRequestInfo.getResponseInfo()); 192 assertNotNull(secondRequestInfo.getResponseInfo());
194 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison. 193 assertEquals(newHashSet("request annotation", this), // Use sets for uno rdered comparison.
195 new HashSet<Object>(firstRequestInfo.getAnnotations())); 194 new HashSet<Object>(firstRequestInfo.getAnnotations()));
196 assertEquals(newHashSet("request annotation", this), 195 assertEquals(newHashSet("request annotation", this),
197 new HashSet<Object>(secondRequestInfo.getAnnotations())); 196 new HashSet<Object>(secondRequestInfo.getAnnotations()));
198 CronetEngine.UrlRequestMetrics firstMetrics = firstRequestInfo.getMetric s(); 197 RequestFinishedInfo.Metrics firstMetrics = firstRequestInfo.getMetrics() ;
199 assertNotNull("UrlRequestInfo.getMetrics() must not be null", firstMetri cs); 198 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", first Metrics);
200 assertTrue(firstMetrics.getTotalTimeMs() > 0); 199 assertTrue(firstMetrics.getTotalTimeMs() > 0);
201 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs()); 200 assertTrue(firstMetrics.getTotalTimeMs() >= firstMetrics.getTtfbMs());
202 assertTrue(firstMetrics.getReceivedBytesCount() > 0); 201 assertTrue(firstMetrics.getReceivedBytesCount() > 0);
203 CronetEngine.UrlRequestMetrics secondMetrics = secondRequestInfo.getMetr ics(); 202 RequestFinishedInfo.Metrics secondMetrics = secondRequestInfo.getMetrics ();
204 assertNotNull("UrlRequestInfo.getMetrics() must not be null", secondMetr ics); 203 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", secon dMetrics);
205 assertTrue(secondMetrics.getTotalTimeMs() > 0); 204 assertTrue(secondMetrics.getTotalTimeMs() > 0);
206 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs()); 205 assertTrue(secondMetrics.getTotalTimeMs() >= secondMetrics.getTtfbMs());
207 assertTrue(secondMetrics.getReceivedBytesCount() > 0); 206 assertTrue(secondMetrics.getReceivedBytesCount() > 0);
208 mTestFramework.mCronetEngine.shutdown(); 207 mTestFramework.mCronetEngine.shutdown();
209 } 208 }
210 209
211 @SmallTest 210 @SmallTest
212 @Feature({"Cronet"}) 211 @Feature({"Cronet"})
213 @SuppressWarnings("deprecation") 212 @SuppressWarnings("deprecation")
214 public void testRequestFinishedListenerFailedRequest() throws Exception { 213 public void testRequestFinishedListenerFailedRequest() throws Exception {
215 String connectionRefusedUrl = "http://127.0.0.1:3"; 214 String connectionRefusedUrl = "http://127.0.0.1:3";
216 mTestFramework = startCronetTestFramework(); 215 mTestFramework = startCronetTestFramework();
217 TestExecutor testExecutor = new TestExecutor(); 216 TestExecutor testExecutor = new TestExecutor();
218 TestRequestFinishedListener requestFinishedListener = 217 TestRequestFinishedListener requestFinishedListener =
219 new TestRequestFinishedListener(testExecutor); 218 new TestRequestFinishedListener(testExecutor);
220 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 219 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
221 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 220 TestUrlRequestCallback callback = new TestUrlRequestCallback();
222 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection RefusedUrl, 221 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(connection RefusedUrl,
223 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 222 callback, callback.getExecutor(), mTestFramework.mCronetEngine);
224 urlRequestBuilder.build().start(); 223 urlRequestBuilder.build().start();
225 callback.blockForDone(); 224 callback.blockForDone();
226 assertTrue(callback.mOnErrorCalled); 225 assertTrue(callback.mOnErrorCalled);
227 testExecutor.runAllTasks(); 226 testExecutor.runAllTasks();
228 227
229 CronetEngine.UrlRequestInfo requestInfo = requestFinishedListener.mReque stInfo; 228 RequestFinishedInfo requestInfo = requestFinishedListener.mRequestInfo;
230 assertNotNull("RequestFinishedListener must be called", requestInfo); 229 assertNotNull("RequestFinishedInfo.Listener must be called", requestInfo );
231 assertEquals(connectionRefusedUrl, requestInfo.getUrl()); 230 assertEquals(connectionRefusedUrl, requestInfo.getUrl());
232 assertTrue(requestInfo.getAnnotations().isEmpty()); 231 assertTrue(requestInfo.getAnnotations().isEmpty());
233 CronetEngine.UrlRequestMetrics metrics = requestInfo.getMetrics(); 232 RequestFinishedInfo.Metrics metrics = requestInfo.getMetrics();
234 assertNotNull("UrlRequestInfo.getMetrics() must not be null", metrics); 233 assertNotNull("RequestFinishedInfo.getMetrics() must not be null", metri cs);
235 // The failure is occasionally fast enough that time reported is 0, so j ust check for null 234 // The failure is occasionally fast enough that time reported is 0, so j ust check for null
236 assertNotNull(metrics.getTotalTimeMs()); 235 assertNotNull(metrics.getTotalTimeMs());
237 assertNull(metrics.getTtfbMs()); 236 assertNull(metrics.getTtfbMs());
238 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive dBytesCount() == 0); 237 assertTrue(metrics.getReceivedBytesCount() == null || metrics.getReceive dBytesCount() == 0);
239 mTestFramework.mCronetEngine.shutdown(); 238 mTestFramework.mCronetEngine.shutdown();
240 } 239 }
241 240
242 @SmallTest 241 @SmallTest
243 @Feature({"Cronet"}) 242 @Feature({"Cronet"})
244 @SuppressWarnings("deprecation") 243 @SuppressWarnings("deprecation")
245 public void testRequestFinishedListenerRemoved() throws Exception { 244 public void testRequestFinishedListenerRemoved() throws Exception {
246 mTestFramework = startCronetTestFramework(); 245 mTestFramework = startCronetTestFramework();
247 TestExecutor testExecutor = new TestExecutor(); 246 TestExecutor testExecutor = new TestExecutor();
248 TestRequestFinishedListener requestFinishedListener = 247 TestRequestFinishedListener requestFinishedListener =
249 new TestRequestFinishedListener(testExecutor); 248 new TestRequestFinishedListener(testExecutor);
250 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener); 249 mTestFramework.mCronetEngine.addRequestFinishedListener(requestFinishedL istener);
251 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener); 250 mTestFramework.mCronetEngine.removeRequestFinishedListener(requestFinish edListener);
252 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 251 TestUrlRequestCallback callback = new TestUrlRequestCallback();
253 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder( 252 UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(
254 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine); 253 mUrl, callback, callback.getExecutor(), mTestFramework.mCronetEn gine);
255 urlRequestBuilder.build().start(); 254 urlRequestBuilder.build().start();
256 callback.blockForDone(); 255 callback.blockForDone();
257 testExecutor.runAllTasks(); 256 testExecutor.runAllTasks();
258 257
259 assertNull( 258 assertNull("RequestFinishedInfo.Listener must not be called",
260 "RequestFinishedListener must not be called", requestFinishedLis tener.mRequestInfo); 259 requestFinishedListener.mRequestInfo);
261 mTestFramework.mCronetEngine.shutdown(); 260 mTestFramework.mCronetEngine.shutdown();
262 } 261 }
263 } 262 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698