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

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

Issue 2484863010: Fix QuicTest.java assertion on protocol string (Closed)
Patch Set: address comments Created 4 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.suitebuilder.annotation.LargeTest; 8 import android.test.suitebuilder.annotation.LargeTest;
9 import android.test.suitebuilder.annotation.SmallTest; 9 import android.test.suitebuilder.annotation.SmallTest;
10 10
(...skipping 10 matching lines...) Expand all
21 import java.io.FileNotFoundException; 21 import java.io.FileNotFoundException;
22 import java.io.IOException; 22 import java.io.IOException;
23 import java.util.Date; 23 import java.util.Date;
24 import java.util.concurrent.Executors; 24 import java.util.concurrent.Executors;
25 25
26 /** 26 /**
27 * Tests making requests using QUIC. 27 * Tests making requests using QUIC.
28 */ 28 */
29 public class QuicTest extends CronetTestBase { 29 public class QuicTest extends CronetTestBase {
30 private static final String TAG = "cr.QuicTest"; 30 private static final String TAG = "cr.QuicTest";
31 private static final String QUIC_PROTOCOL_STRING_PREFIX = "http/2+quic/";
31 private CronetTestFramework mTestFramework; 32 private CronetTestFramework mTestFramework;
32 private ExperimentalCronetEngine.Builder mBuilder; 33 private ExperimentalCronetEngine.Builder mBuilder;
33 34
34 @Override 35 @Override
35 protected void setUp() throws Exception { 36 protected void setUp() throws Exception {
36 super.setUp(); 37 super.setUp();
37 // Load library first, since we need the Quic test server's URL. 38 // Load library first, since we need the Quic test server's URL.
38 System.loadLibrary("cronet_tests"); 39 System.loadLibrary("cronet_tests");
39 QuicTestServer.startQuicTestServer(getContext()); 40 QuicTestServer.startQuicTestServer(getContext());
40 41
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 // QUIC will always succeed with a 200 (see 85 // QUIC will always succeed with a 200 (see
85 // net::HttpStreamFactoryImpl::Request::OnStreamFailed). 86 // net::HttpStreamFactoryImpl::Request::OnStreamFailed).
86 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder( 87 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder(
87 quicURL, callback, callback.getExecutor()); 88 quicURL, callback, callback.getExecutor());
88 requestBuilder.build().start(); 89 requestBuilder.build().start();
89 callback.blockForDone(); 90 callback.blockForDone();
90 91
91 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 92 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
92 String expectedContent = "This is a simple text file served by QUIC.\n"; 93 String expectedContent = "This is a simple text file served by QUIC.\n";
93 assertEquals(expectedContent, callback.mResponseAsString); 94 assertEquals(expectedContent, callback.mResponseAsString);
94 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 95 assertIsQuic(callback.mResponseInfo);
95 // The total received bytes should be larger than the content length, to account for 96 // The total received bytes should be larger than the content length, to account for
96 // headers. 97 // headers.
97 assertTrue(callback.mResponseInfo.getReceivedBytesCount() > expectedCont ent.length()); 98 assertTrue(callback.mResponseInfo.getReceivedBytesCount() > expectedCont ent.length());
98 // This test takes a long time, since the update will only be scheduled 99 // This test takes a long time, since the update will only be scheduled
99 // after kUpdatePrefsDelayMs in http_server_properties_manager.cc. 100 // after kUpdatePrefsDelayMs in http_server_properties_manager.cc.
100 while (true) { 101 while (true) {
101 Log.i(TAG, "Still waiting for pref file update....."); 102 Log.i(TAG, "Still waiting for pref file update.....");
102 Thread.sleep(10000); 103 Thread.sleep(10000);
103 boolean contains = false; 104 boolean contains = false;
104 try { 105 try {
(...skipping 22 matching lines...) Expand all
127 CronetTestUtil.setMockCertVerifierForTesting( 128 CronetTestUtil.setMockCertVerifierForTesting(
128 builder, QuicTestServer.createMockCertVerifier()); 129 builder, QuicTestServer.createMockCertVerifier());
129 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder); 130 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder);
130 TestUrlRequestCallback callback2 = new TestUrlRequestCallback(); 131 TestUrlRequestCallback callback2 = new TestUrlRequestCallback();
131 requestBuilder = mTestFramework.mCronetEngine.newUrlRequestBuilder( 132 requestBuilder = mTestFramework.mCronetEngine.newUrlRequestBuilder(
132 quicURL, callback2, callback2.getExecutor()); 133 quicURL, callback2, callback2.getExecutor());
133 requestBuilder.build().start(); 134 requestBuilder.build().start();
134 callback2.blockForDone(); 135 callback2.blockForDone();
135 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode()); 136 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode());
136 assertEquals(expectedContent, callback2.mResponseAsString); 137 assertEquals(expectedContent, callback2.mResponseAsString);
137 assertEquals("quic/1+spdy/3", callback2.mResponseInfo.getNegotiatedProto col()); 138 assertIsQuic(callback.mResponseInfo);
138 // The total received bytes should be larger than the content length, to account for 139 // The total received bytes should be larger than the content length, to account for
139 // headers. 140 // headers.
140 assertTrue(callback2.mResponseInfo.getReceivedBytesCount() > expectedCon tent.length()); 141 assertTrue(callback2.mResponseInfo.getReceivedBytesCount() > expectedCon tent.length());
141 } 142 }
142 143
143 // Returns whether a file contains a particular string. 144 // Returns whether a file contains a particular string.
144 @SuppressFBWarnings("OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE") 145 @SuppressFBWarnings("OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE")
145 private boolean fileContainsString(String filename, String content) throws I OException { 146 private boolean fileContainsString(String filename, String content) throws I OException {
146 File file = 147 File file =
147 new File(CronetTestFramework.getTestStorage(getContext()) + "/pr efs/" + filename); 148 new File(CronetTestFramework.getTestStorage(getContext()) + "/pr efs/" + filename);
(...skipping 30 matching lines...) Expand all
178 // QUIC will always succeed with a 200 (see 179 // QUIC will always succeed with a 200 (see
179 // net::HttpStreamFactoryImpl::Request::OnStreamFailed). 180 // net::HttpStreamFactoryImpl::Request::OnStreamFailed).
180 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder( 181 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder(
181 quicURL, callback, callback.getExecutor()); 182 quicURL, callback, callback.getExecutor());
182 requestBuilder.build().start(); 183 requestBuilder.build().start();
183 callback.blockForDone(); 184 callback.blockForDone();
184 185
185 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 186 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
186 String expectedContent = "This is a simple text file served by QUIC.\n"; 187 String expectedContent = "This is a simple text file served by QUIC.\n";
187 assertEquals(expectedContent, callback.mResponseAsString); 188 assertEquals(expectedContent, callback.mResponseAsString);
188 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 189 assertIsQuic(callback.mResponseInfo);
189 190
190 // Throughput observation is posted to the network quality estimator on the network thread 191 // Throughput observation is posted to the network quality estimator on the network thread
191 // after the UrlRequest is completed. The observations are then eventual ly posted to 192 // after the UrlRequest is completed. The observations are then eventual ly posted to
192 // throughput listeners on the executor provided to network quality. 193 // throughput listeners on the executor provided to network quality.
193 waitForThroughput.block(); 194 waitForThroughput.block();
194 assertTrue(throughputListener.throughputObservationCount() > 0); 195 assertTrue(throughputListener.throughputObservationCount() > 0);
195 196
196 // Check RTT observation count after throughput observation has been rec eived. This ensures 197 // Check RTT observation count after throughput observation has been rec eived. This ensures
197 // that executor has finished posting the RTT observation to the RTT lis teners. 198 // that executor has finished posting the RTT observation to the RTT lis teners.
198 // NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST 199 // NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST
(...skipping 23 matching lines...) Expand all
222 223
223 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder( 224 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR equestBuilder(
224 quicURL, callback, callback.getExecutor()); 225 quicURL, callback, callback.getExecutor());
225 Date startTime = new Date(); 226 Date startTime = new Date();
226 requestBuilder.build().start(); 227 requestBuilder.build().start();
227 callback.blockForDone(); 228 callback.blockForDone();
228 requestFinishedListener.blockUntilDone(); 229 requestFinishedListener.blockUntilDone();
229 Date endTime = new Date(); 230 Date endTime = new Date();
230 231
231 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 232 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
232 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 233 assertIsQuic(callback.mResponseInfo);
233 234
234 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo (); 235 RequestFinishedInfo requestInfo = requestFinishedListener.getRequestInfo ();
235 MetricsTestUtil.checkRequestFinishedInfo(requestInfo, quicURL, startTime , endTime); 236 MetricsTestUtil.checkRequestFinishedInfo(requestInfo, quicURL, startTime , endTime);
236 assertEquals(RequestFinishedInfo.SUCCEEDED, requestInfo.getFinishedReaso n()); 237 assertEquals(RequestFinishedInfo.SUCCEEDED, requestInfo.getFinishedReaso n());
237 MetricsTestUtil.checkHasConnectTiming(requestInfo.getMetrics(), startTim e, endTime, true); 238 MetricsTestUtil.checkHasConnectTiming(requestInfo.getMetrics(), startTim e, endTime, true);
238 239
239 // Second request should use the same connection and not have ConnectTim ing numbers 240 // Second request should use the same connection and not have ConnectTim ing numbers
240 callback = new TestUrlRequestCallback(); 241 callback = new TestUrlRequestCallback();
241 requestFinishedListener.reset(); 242 requestFinishedListener.reset();
242 requestBuilder = mTestFramework.mCronetEngine.newUrlRequestBuilder( 243 requestBuilder = mTestFramework.mCronetEngine.newUrlRequestBuilder(
243 quicURL, callback, callback.getExecutor()); 244 quicURL, callback, callback.getExecutor());
244 startTime = new Date(); 245 startTime = new Date();
245 requestBuilder.build().start(); 246 requestBuilder.build().start();
246 callback.blockForDone(); 247 callback.blockForDone();
247 requestFinishedListener.blockUntilDone(); 248 requestFinishedListener.blockUntilDone();
248 endTime = new Date(); 249 endTime = new Date();
249 250
250 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 251 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
251 assertEquals("quic/1+spdy/3", callback.mResponseInfo.getNegotiatedProtoc ol()); 252 assertIsQuic(callback.mResponseInfo);
252 253
253 requestInfo = requestFinishedListener.getRequestInfo(); 254 requestInfo = requestFinishedListener.getRequestInfo();
254 MetricsTestUtil.checkRequestFinishedInfo(requestInfo, quicURL, startTime , endTime); 255 MetricsTestUtil.checkRequestFinishedInfo(requestInfo, quicURL, startTime , endTime);
255 assertEquals(RequestFinishedInfo.SUCCEEDED, requestInfo.getFinishedReaso n()); 256 assertEquals(RequestFinishedInfo.SUCCEEDED, requestInfo.getFinishedReaso n());
256 MetricsTestUtil.checkNoConnectTiming(requestInfo.getMetrics()); 257 MetricsTestUtil.checkNoConnectTiming(requestInfo.getMetrics());
257 258
258 mTestFramework.mCronetEngine.shutdown(); 259 mTestFramework.mCronetEngine.shutdown();
259 } 260 }
261
262 // Helper method to assert that the request is negotiated over QUIC.
263 private void assertIsQuic(UrlResponseInfo responseInfo) {
264 assertTrue(responseInfo.getNegotiatedProtocol().startsWith(QUIC_PROTOCOL _STRING_PREFIX));
265 }
260 } 266 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698