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

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

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Javadoc + rebase Created 4 years, 3 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.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 9
10 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
11 import org.chromium.net.CronetTestBase.OnlyRunNativeCronet;
12 import org.chromium.net.impl.ChromiumUrlRequestFactory;
13 import org.chromium.net.impl.CronetUrlRequestContext; 11 import org.chromium.net.impl.CronetUrlRequestContext;
14 import org.json.JSONException; 12 import org.json.JSONException;
15 import org.json.JSONObject; 13 import org.json.JSONObject;
16 14
17 import java.io.BufferedReader; 15 import java.io.BufferedReader;
18 import java.io.FileReader; 16 import java.io.FileReader;
19 import java.io.IOException; 17 import java.io.IOException;
20 import java.util.ArrayList; 18 import java.util.ArrayList;
21 import java.util.Arrays; 19 import java.util.Arrays;
22 import java.util.HashMap;
23 import java.util.List; 20 import java.util.List;
24 import java.util.Map;
25 21
26 /** 22 /**
27 * Tests Sdch support. 23 * Tests Sdch support.
28 */ 24 */
29 public class SdchTest extends CronetTestBase { 25 public class SdchTest extends CronetTestBase {
30 private CronetTestFramework mTestFramework; 26 private CronetTestFramework mTestFramework;
31 27
32 private enum Sdch { 28 private enum Sdch {
33 ENABLED, 29 ENABLED,
34 DISABLED, 30 DISABLED,
(...skipping 16 matching lines...) Expand all
51 47
52 if (api == Api.LEGACY) { 48 if (api == Api.LEGACY) {
53 commandLineArgs.add(CronetTestFramework.LIBRARY_INIT_KEY); 49 commandLineArgs.add(CronetTestFramework.LIBRARY_INIT_KEY);
54 commandLineArgs.add(CronetTestFramework.LibraryInitType.LEGACY); 50 commandLineArgs.add(CronetTestFramework.LibraryInitType.LEGACY);
55 } else { 51 } else {
56 commandLineArgs.add(CronetTestFramework.LIBRARY_INIT_KEY); 52 commandLineArgs.add(CronetTestFramework.LIBRARY_INIT_KEY);
57 commandLineArgs.add(CronetTestFramework.LibraryInitType.CRONET); 53 commandLineArgs.add(CronetTestFramework.LibraryInitType.CRONET);
58 } 54 }
59 55
60 String[] args = new String[commandLineArgs.size()]; 56 String[] args = new String[commandLineArgs.size()];
61 CronetEngine.Builder builder = new CronetEngine.Builder(getContext()); 57 ExperimentalCronetEngine.Builder builder =
58 new ExperimentalCronetEngine.Builder(getContext());
62 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules (); 59 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules ();
63 JSONObject experimentalOptions = 60 JSONObject experimentalOptions =
64 new JSONObject().put("HostResolverRules", hostResolverParams); 61 new JSONObject().put("HostResolverRules", hostResolverParams);
65 builder.setExperimentalOptions(experimentalOptions.toString()); 62 builder.setExperimentalOptions(experimentalOptions.toString());
66 mTestFramework = 63 mTestFramework =
67 new CronetTestFramework(null, commandLineArgs.toArray(args), get Context(), builder); 64 new CronetTestFramework(null, commandLineArgs.toArray(args), get Context(), builder);
68 // Start NativeTestServer. 65 // Start NativeTestServer.
69 assertTrue(NativeTestServer.startNativeTestServer(getContext())); 66 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
70 } 67 }
71 68
72 @Override 69 @Override
73 protected void tearDown() throws Exception { 70 protected void tearDown() throws Exception {
74 NativeTestServer.shutdownNativeTestServer(); 71 NativeTestServer.shutdownNativeTestServer();
75 super.tearDown(); 72 super.tearDown();
76 } 73 }
77 74
78 @SmallTest 75 @SmallTest
79 @Feature({"Cronet"}) 76 @Feature({"Cronet"})
80 @SuppressWarnings("deprecation")
81 @OnlyRunNativeCronet
82 public void testSdchEnabled_LegacyApi() throws Exception {
83 setUp(Sdch.ENABLED, Api.LEGACY);
84 String targetUrl = NativeTestServer.getSdchURL() + "/sdch/test";
85 long contextAdapter =
86 getContextAdapter((ChromiumUrlRequestFactory) mTestFramework.mRe questFactory);
87 DictionaryAddedObserver observer =
88 new DictionaryAddedObserver(targetUrl, contextAdapter, true /** Legacy Api */);
89
90 // Make a request to /sdch/index which advertises the dictionary.
91 TestHttpUrlRequestListener listener1 =
92 startAndWaitForComplete_LegacyApi(mTestFramework.mRequestFactory ,
93 NativeTestServer.getSdchURL() + "/sdch/index?q=LeQxM80O" );
94 assertEquals(200, listener1.mHttpStatusCode);
95 assertEquals("This is an index page.\n", listener1.mResponseAsString);
96 assertEquals(Arrays.asList("/sdch/dict/LeQxM80O"),
97 listener1.mResponseHeaders.get("Get-Dictionary"));
98
99 observer.waitForDictionaryAdded();
100
101 // Make a request to fetch encoded response at /sdch/test.
102 TestHttpUrlRequestListener listener2 =
103 startAndWaitForComplete_LegacyApi(mTestFramework.mRequestFactory , targetUrl);
104 assertEquals(200, listener2.mHttpStatusCode);
105 assertEquals("The quick brown fox jumps over the lazy dog.\n", listener2 .mResponseAsString);
106 }
107
108 @SmallTest
109 @Feature({"Cronet"})
110 @SuppressWarnings("deprecation")
111 @OnlyRunNativeCronet
112 public void testSdchDisabled_LegacyApi() throws Exception {
113 setUp(Sdch.DISABLED, Api.LEGACY);
114 // Make a request to /sdch/index.
115 // Since Sdch is not enabled, no dictionary should be advertised.
116 TestHttpUrlRequestListener listener =
117 startAndWaitForComplete_LegacyApi(mTestFramework.mRequestFactory ,
118 NativeTestServer.getSdchURL() + "/sdch/index?q=LeQxM80O" );
119 assertEquals(200, listener.mHttpStatusCode);
120 assertEquals("This is an index page.\n", listener.mResponseAsString);
121 assertEquals(null, listener.mResponseHeaders.get("Get-Dictionary"));
122 }
123
124 @SmallTest
125 @Feature({"Cronet"})
126 @SuppressWarnings("deprecation")
127 @OnlyRunNativeCronet
128 public void testDictionaryNotFound_LegacyApi() throws Exception {
129 setUp(Sdch.ENABLED, Api.LEGACY);
130 // Make a request to /sdch/index which advertises a bad dictionary that
131 // does not exist.
132 TestHttpUrlRequestListener listener1 =
133 startAndWaitForComplete_LegacyApi(mTestFramework.mRequestFactory ,
134 NativeTestServer.getSdchURL() + "/sdch/index?q=NotFound" );
135 assertEquals(200, listener1.mHttpStatusCode);
136 assertEquals("This is an index page.\n", listener1.mResponseAsString);
137 assertEquals(Arrays.asList("/sdch/dict/NotFound"),
138 listener1.mResponseHeaders.get("Get-Dictionary"));
139
140 // Make a request to fetch /sdch/test, and make sure request succeeds.
141 TestHttpUrlRequestListener listener2 = startAndWaitForComplete_LegacyApi (
142 mTestFramework.mRequestFactory, NativeTestServer.getSdchURL() + "/sdch/test");
143 assertEquals(200, listener2.mHttpStatusCode);
144 assertEquals("Sdch is not used.\n", listener2.mResponseAsString);
145 }
146
147 @SmallTest
148 @Feature({"Cronet"})
149 @OnlyRunNativeCronet 77 @OnlyRunNativeCronet
150 public void testSdchEnabled() throws Exception { 78 public void testSdchEnabled() throws Exception {
151 setUp(Sdch.ENABLED, Api.ASYNC); 79 setUp(Sdch.ENABLED, Api.ASYNC);
152 String targetUrl = NativeTestServer.getSdchURL() + "/sdch/test"; 80 String targetUrl = NativeTestServer.getSdchURL() + "/sdch/test";
153 long contextAdapter = 81 long contextAdapter =
154 getContextAdapter((CronetUrlRequestContext) mTestFramework.mCron etEngine); 82 getContextAdapter((CronetUrlRequestContext) mTestFramework.mCron etEngine);
155 DictionaryAddedObserver observer = 83 DictionaryAddedObserver observer =
156 new DictionaryAddedObserver(targetUrl, contextAdapter, false /** Legacy Api */); 84 new DictionaryAddedObserver(targetUrl, contextAdapter, false /** Legacy Api */);
157 85
158 // Make a request to /sdch which advertises the dictionary. 86 // Make a request to /sdch which advertises the dictionary.
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 } 169 }
242 170
243 public void waitForDictionaryAdded() { 171 public void waitForDictionaryAdded() {
244 if (!mDictionaryAlreadyPresent) { 172 if (!mDictionaryAlreadyPresent) {
245 mBlock.block(); 173 mBlock.block();
246 mBlock.close(); 174 mBlock.close();
247 } 175 }
248 } 176 }
249 } 177 }
250 178
251 @SuppressWarnings("deprecation")
252 private long getContextAdapter(ChromiumUrlRequestFactory factory) {
253 return factory.getRequestContext().getUrlRequestContextAdapter();
254 }
255
256 private long getContextAdapter(CronetUrlRequestContext requestContext) { 179 private long getContextAdapter(CronetUrlRequestContext requestContext) {
257 return requestContext.getUrlRequestContextAdapter(); 180 return requestContext.getUrlRequestContextAdapter();
258 } 181 }
259 182
260 @SuppressWarnings("deprecation")
261 private TestHttpUrlRequestListener startAndWaitForComplete_LegacyApi(
262 HttpUrlRequestFactory factory, String url) throws Exception {
263 Map<String, String> headers = new HashMap<String, String>();
264 TestHttpUrlRequestListener listener = new TestHttpUrlRequestListener();
265 HttpUrlRequest request = factory.createRequest(
266 url, HttpUrlRequest.REQUEST_PRIORITY_MEDIUM, headers, listener);
267 request.start();
268 listener.blockForComplete();
269 return listener;
270 }
271
272 private TestUrlRequestCallback startAndWaitForComplete(CronetEngine cronetEn gine, String url) 183 private TestUrlRequestCallback startAndWaitForComplete(CronetEngine cronetEn gine, String url)
273 throws Exception { 184 throws Exception {
274 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 185 TestUrlRequestCallback callback = new TestUrlRequestCallback();
275 UrlRequest.Builder builder = 186 UrlRequest.Builder builder =
276 new UrlRequest.Builder(url, callback, callback.getExecutor(), cr onetEngine); 187 cronetEngine.newUrlRequestBuilder(url, callback, callback.getExe cutor());
277 builder.build().start(); 188 builder.build().start();
278 callback.blockForDone(); 189 callback.blockForDone();
279 return callback; 190 return callback;
280 } 191 }
281 192
282 // Returns whether a file contains a particular string. 193 // Returns whether a file contains a particular string.
283 private boolean fileContainsString(String filename, String content) throws I OException { 194 private boolean fileContainsString(String filename, String content) throws I OException {
284 BufferedReader reader = new BufferedReader(new FileReader( 195 BufferedReader reader = new BufferedReader(new FileReader(
285 CronetTestFramework.getTestStorage(getContext()) + "/prefs/" + f ilename)); 196 CronetTestFramework.getTestStorage(getContext()) + "/prefs/" + f ilename));
286 String line; 197 String line;
287 while ((line = reader.readLine()) != null) { 198 while ((line = reader.readLine()) != null) {
288 if (line.contains(content)) { 199 if (line.contains(content)) {
289 reader.close(); 200 reader.close();
290 return true; 201 return true;
291 } 202 }
292 } 203 }
293 reader.close(); 204 reader.close();
294 return false; 205 return false;
295 } 206 }
296 } 207 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698