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

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

Issue 1817553002: Add host resolver rules experimental flag for Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: delete unused definitions, rebase, and fix test 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 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 .put("host_whitelist", "test.example.com ") 47 .put("host_whitelist", "test.example.com ")
48 .put("max_server_configs_stored_in_prope rties", 2) 48 .put("max_server_configs_stored_in_prope rties", 2)
49 .put("delay_tcp_race", true) 49 .put("delay_tcp_race", true)
50 .put("max_number_of_lossy_connections", 10) 50 .put("max_number_of_lossy_connections", 10)
51 .put("packet_loss_threshold", 0.5) 51 .put("packet_loss_threshold", 0.5)
52 .put("idle_connection_timeout_seconds", 300) 52 .put("idle_connection_timeout_seconds", 300)
53 .put("close_sessions_on_ip_change", fals e) 53 .put("close_sessions_on_ip_change", fals e)
54 .put("migrate_sessions_on_network_change ", false) 54 .put("migrate_sessions_on_network_change ", false)
55 .put("migrate_sessions_early", false) 55 .put("migrate_sessions_early", false)
56 .put("race_cert_verification", true); 56 .put("race_cert_verification", true);
57 JSONObject experimentalOptions = new JSONObject().put("QUIC", quicParams ); 57 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules ();
58 JSONObject experimentalOptions = new JSONObject()
59 .put("QUIC", quicParams)
60 .put("HostResolverRules", hostR esolverParams);
58 mBuilder.setExperimentalOptions(experimentalOptions.toString()); 61 mBuilder.setExperimentalOptions(experimentalOptions.toString());
59 mBuilder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVeri fier()); 62 mBuilder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVeri fier());
60 mBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext()) ); 63 mBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext()) );
61 mBuilder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 1 000 * 1024); 64 mBuilder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 1 000 * 1024);
62 } 65 }
63 66
64 @Override 67 @Override
65 protected void tearDown() throws Exception { 68 protected void tearDown() throws Exception {
66 QuicTestServer.shutdownQuicTestServer(); 69 QuicTestServer.shutdownQuicTestServer();
67 super.tearDown(); 70 super.tearDown();
68 } 71 }
69 72
70 @SmallTest 73 @SmallTest
71 @Feature({"Cronet"}) 74 @Feature({"Cronet"})
72 @SuppressWarnings("deprecation") 75 @SuppressWarnings("deprecation")
73 @OnlyRunNativeCronet 76 @OnlyRunNativeCronet
74 public void testQuicLoadUrl_LegacyAPI() throws Exception { 77 public void testQuicLoadUrl_LegacyAPI() throws Exception {
75 String[] commandLineArgs = { 78 String[] commandLineArgs = {
76 CronetTestFramework.LIBRARY_INIT_KEY, CronetTestFramework.Librar yInitType.LEGACY}; 79 CronetTestFramework.LIBRARY_INIT_KEY, CronetTestFramework.Librar yInitType.LEGACY};
77 mTestFramework = new CronetTestFramework(null, commandLineArgs, getConte xt(), mBuilder); 80 mTestFramework = new CronetTestFramework(null, commandLineArgs, getConte xt(), mBuilder);
78 registerHostResolver(mTestFramework, true);
79 String quicURL = QuicTestServer.getServerURL() + "/simple.txt"; 81 String quicURL = QuicTestServer.getServerURL() + "/simple.txt";
80 82
81 HashMap<String, String> headers = new HashMap<String, String>(); 83 HashMap<String, String> headers = new HashMap<String, String>();
82 TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener(); 84 TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener();
83 85
84 // Although the native stack races QUIC and SPDY for the first request, 86 // Although the native stack races QUIC and SPDY for the first request,
85 // since there is no http server running on the corresponding TCP port, 87 // since there is no http server running on the corresponding TCP port,
86 // QUIC will always succeed with a 200 (see 88 // QUIC will always succeed with a 200 (see
87 // net::HttpStreamFactoryImpl::Request::OnStreamFailed). 89 // net::HttpStreamFactoryImpl::Request::OnStreamFailed).
88 HttpUrlRequest request = mTestFramework.mRequestFactory.createRequest( 90 HttpUrlRequest request = mTestFramework.mRequestFactory.createRequest(
89 quicURL, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listen er); 91 quicURL, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listen er);
90 request.start(); 92 request.start();
91 listener.blockForComplete(); 93 listener.blockForComplete();
92 assertEquals(200, listener.mHttpStatusCode); 94 assertEquals(200, listener.mHttpStatusCode);
93 assertEquals( 95 assertEquals(
94 "This is a simple text file served by QUIC.\n", 96 "This is a simple text file served by QUIC.\n",
95 listener.mResponseAsString); 97 listener.mResponseAsString);
96 assertEquals("quic/1+spdy/3", listener.mNegotiatedProtocol); 98 assertEquals("quic/1+spdy/3", listener.mNegotiatedProtocol);
97 } 99 }
98 100
99 @LargeTest 101 @LargeTest
100 @Feature({"Cronet"}) 102 @Feature({"Cronet"})
101 @OnlyRunNativeCronet 103 @OnlyRunNativeCronet
102 public void testQuicLoadUrl() throws Exception { 104 public void testQuicLoadUrl() throws Exception {
103 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder); 105 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder);
104 registerHostResolver(mTestFramework);
105 String quicURL = QuicTestServer.getServerURL() + "/simple.txt"; 106 String quicURL = QuicTestServer.getServerURL() + "/simple.txt";
106 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 107 TestUrlRequestCallback callback = new TestUrlRequestCallback();
107 108
108 // Although the native stack races QUIC and SPDY for the first request, 109 // Although the native stack races QUIC and SPDY for the first request,
109 // since there is no http server running on the corresponding TCP port, 110 // since there is no http server running on the corresponding TCP port,
110 // QUIC will always succeed with a 200 (see 111 // QUIC will always succeed with a 200 (see
111 // net::HttpStreamFactoryImpl::Request::OnStreamFailed). 112 // net::HttpStreamFactoryImpl::Request::OnStreamFailed).
112 UrlRequest.Builder requestBuilder = new UrlRequest.Builder( 113 UrlRequest.Builder requestBuilder = new UrlRequest.Builder(
113 quicURL, callback, callback.getExecutor(), mTestFramework.mCrone tEngine); 114 quicURL, callback, callback.getExecutor(), mTestFramework.mCrone tEngine);
114 requestBuilder.build().start(); 115 requestBuilder.build().start();
(...skipping 22 matching lines...) Expand all
137 assertTrue(fileContainsString("local_prefs.json", 138 assertTrue(fileContainsString("local_prefs.json",
138 QuicTestServer.getServerHost() + ":" + QuicTestServer.getServerP ort())); 139 QuicTestServer.getServerHost() + ":" + QuicTestServer.getServerP ort()));
139 mTestFramework.mCronetEngine.shutdown(); 140 mTestFramework.mCronetEngine.shutdown();
140 141
141 // Make another request using a new context but with no QUIC hints. 142 // Make another request using a new context but with no QUIC hints.
142 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 143 CronetEngine.Builder builder = new CronetEngine.Builder(getContext());
143 builder.setStoragePath(CronetTestFramework.getTestStorage(getContext())) ; 144 builder.setStoragePath(CronetTestFramework.getTestStorage(getContext())) ;
144 builder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK, 1000 * 102 4); 145 builder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK, 1000 * 102 4);
145 builder.enableQuic(true); 146 builder.enableQuic(true);
146 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa mple.com"); 147 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa mple.com");
147 JSONObject experimentalOptions = new JSONObject().put("QUIC", quicParams ); 148 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules ();
149 JSONObject experimentalOptions = new JSONObject()
150 .put("QUIC", quicParams)
151 .put("HostResolverRules", hostR esolverParams);
148 builder.setExperimentalOptions(experimentalOptions.toString()); 152 builder.setExperimentalOptions(experimentalOptions.toString());
149 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier()); 153 builder.setMockCertVerifierForTesting(QuicTestServer.createMockCertVerif ier());
150 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder); 154 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, builder);
151 registerHostResolver(mTestFramework);
152 TestUrlRequestCallback callback2 = new TestUrlRequestCallback(); 155 TestUrlRequestCallback callback2 = new TestUrlRequestCallback();
153 requestBuilder = new UrlRequest.Builder( 156 requestBuilder = new UrlRequest.Builder(
154 quicURL, callback2, callback2.getExecutor(), mTestFramework.mCro netEngine); 157 quicURL, callback2, callback2.getExecutor(), mTestFramework.mCro netEngine);
155 requestBuilder.build().start(); 158 requestBuilder.build().start();
156 callback2.blockForDone(); 159 callback2.blockForDone();
157 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode()); 160 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode());
158 assertEquals(expectedContent, callback2.mResponseAsString); 161 assertEquals(expectedContent, callback2.mResponseAsString);
159 assertEquals("quic/1+spdy/3", callback2.mResponseInfo.getNegotiatedProto col()); 162 assertEquals("quic/1+spdy/3", callback2.mResponseInfo.getNegotiatedProto col());
160 // The total received bytes should be larger than the content length, to account for 163 // The total received bytes should be larger than the content length, to account for
161 // headers. 164 // headers.
(...skipping 11 matching lines...) Expand all
173 fileInputStream.close(); 176 fileInputStream.close();
174 return new String(data, "UTF-8").contains(content); 177 return new String(data, "UTF-8").contains(content);
175 } 178 }
176 179
177 @LargeTest 180 @LargeTest
178 @Feature({"Cronet"}) 181 @Feature({"Cronet"})
179 @OnlyRunNativeCronet 182 @OnlyRunNativeCronet
180 @SuppressWarnings("deprecation") 183 @SuppressWarnings("deprecation")
181 public void testRealTimeNetworkQualityObservationsWithQuic() throws Exceptio n { 184 public void testRealTimeNetworkQualityObservationsWithQuic() throws Exceptio n {
182 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder); 185 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n ull, mBuilder);
183 registerHostResolver(mTestFramework);
184 String quicURL = QuicTestServer.getServerURL() + "/simple.txt"; 186 String quicURL = QuicTestServer.getServerURL() + "/simple.txt";
185 ConditionVariable waitForThroughput = new ConditionVariable(); 187 ConditionVariable waitForThroughput = new ConditionVariable();
186 188
187 TestNetworkQualityRttListener rttListener = 189 TestNetworkQualityRttListener rttListener =
188 new TestNetworkQualityRttListener(Executors.newSingleThreadExecu tor()); 190 new TestNetworkQualityRttListener(Executors.newSingleThreadExecu tor());
189 TestNetworkQualityThroughputListener throughputListener = 191 TestNetworkQualityThroughputListener throughputListener =
190 new TestNetworkQualityThroughputListener( 192 new TestNetworkQualityThroughputListener(
191 Executors.newSingleThreadExecutor(), waitForThroughput); 193 Executors.newSingleThreadExecutor(), waitForThroughput);
192 194
193 mTestFramework.mCronetEngine.addRttListener(rttListener); 195 mTestFramework.mCronetEngine.addRttListener(rttListener);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 assertTrue(rttListener.rttObservationCount(2) > 0); 227 assertTrue(rttListener.rttObservationCount(2) > 0);
226 228
227 // Verify that effective connection type callback is received and 229 // Verify that effective connection type callback is received and
228 // effective connection type is correctly set. 230 // effective connection type is correctly set.
229 assertTrue(mTestFramework.mCronetEngine.getEffectiveConnectionType() 231 assertTrue(mTestFramework.mCronetEngine.getEffectiveConnectionType()
230 != EffectiveConnectionType.EFFECTIVE_CONNECTION_TYPE_UNKNOWN); 232 != EffectiveConnectionType.EFFECTIVE_CONNECTION_TYPE_UNKNOWN);
231 233
232 mTestFramework.mCronetEngine.shutdown(); 234 mTestFramework.mCronetEngine.shutdown();
233 } 235 }
234 } 236 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698