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

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

Issue 2892013002: [Cronet] Clean up tests (Closed)
Patch Set: address comments Created 3 years, 7 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.support.test.filters.SmallTest; 7 import android.support.test.filters.SmallTest;
8 8
9 import org.json.JSONException; 9 import org.json.JSONException;
10 import org.json.JSONObject; 10 import org.json.JSONObject;
11 11
12 import org.chromium.base.test.util.Feature; 12 import org.chromium.base.test.util.Feature;
13 import org.chromium.net.impl.CronetUrlRequestContext; 13 import org.chromium.net.impl.CronetUrlRequestContext;
14 14
15 import java.io.BufferedReader; 15 import java.io.BufferedReader;
16 import java.io.FileReader; 16 import java.io.FileReader;
17 import java.io.IOException; 17 import java.io.IOException;
18 import java.util.ArrayList;
19 import java.util.Arrays; 18 import java.util.Arrays;
20 import java.util.List;
21 19
22 /** 20 /**
23 * Tests Sdch support. 21 * Tests Sdch support.
24 */ 22 */
25 public class SdchTest extends CronetTestBase { 23 public class SdchTest extends CronetTestBase {
26 private CronetTestFramework mTestFramework;
27
28 private enum Sdch { 24 private enum Sdch {
29 ENABLED, 25 ENABLED,
30 DISABLED, 26 DISABLED,
31 } 27 }
32 28
33 @SuppressWarnings("deprecation") 29 private CronetEngine.Builder createCronetEngineBuilder(Sdch setting) throws JSONException {
34 private void setUp(Sdch setting) throws JSONException {
35 List<String> commandLineArgs = new ArrayList<String>();
36 commandLineArgs.add(CronetTestFramework.CACHE_KEY);
37 commandLineArgs.add(CronetTestFramework.CACHE_DISK);
38 if (setting == Sdch.ENABLED) {
39 commandLineArgs.add(CronetTestFramework.SDCH_KEY);
40 commandLineArgs.add(CronetTestFramework.SDCH_ENABLE);
41 }
42
43 commandLineArgs.add(CronetTestFramework.LIBRARY_INIT_KEY);
44 commandLineArgs.add(CronetTestFramework.LibraryInitType.CRONET);
45
46 String[] args = new String[commandLineArgs.size()];
47 ExperimentalCronetEngine.Builder builder = 30 ExperimentalCronetEngine.Builder builder =
48 new ExperimentalCronetEngine.Builder(getContext()); 31 new ExperimentalCronetEngine.Builder(getContext());
32 builder.enableSdch(setting == Sdch.ENABLED);
33 enableDiskCache(builder);
49 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules (); 34 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules ();
50 JSONObject experimentalOptions = 35 JSONObject experimentalOptions =
51 new JSONObject().put("HostResolverRules", hostResolverParams); 36 new JSONObject().put("HostResolverRules", hostResolverParams);
52 builder.setExperimentalOptions(experimentalOptions.toString()); 37 builder.setExperimentalOptions(experimentalOptions.toString());
53 mTestFramework =
54 new CronetTestFramework(null, commandLineArgs.toArray(args), get Context(), builder);
55 // Start NativeTestServer. 38 // Start NativeTestServer.
56 assertTrue(NativeTestServer.startNativeTestServer(getContext())); 39 assertTrue(NativeTestServer.startNativeTestServer(getContext()));
40 return builder;
57 } 41 }
58 42
59 @Override 43 @Override
60 protected void tearDown() throws Exception { 44 protected void tearDown() throws Exception {
61 NativeTestServer.shutdownNativeTestServer(); 45 NativeTestServer.shutdownNativeTestServer();
62 super.tearDown(); 46 super.tearDown();
63 } 47 }
64 48
65 @SmallTest 49 @SmallTest
66 @Feature({"Cronet"}) 50 @Feature({"Cronet"})
67 @OnlyRunNativeCronet 51 @OnlyRunNativeCronet
68 public void testSdchEnabled() throws Exception { 52 public void testSdchEnabled() throws Exception {
69 setUp(Sdch.ENABLED); 53 CronetEngine.Builder cronetEngineBuilder = createCronetEngineBuilder(Sdc h.ENABLED);
54 CronetEngine cronetEngine = cronetEngineBuilder.build();
70 String targetUrl = NativeTestServer.getSdchURL() + "/sdch/test"; 55 String targetUrl = NativeTestServer.getSdchURL() + "/sdch/test";
71 long contextAdapter = 56 long contextAdapter = getContextAdapter((CronetUrlRequestContext) cronet Engine);
72 getContextAdapter((CronetUrlRequestContext) mTestFramework.mCron etEngine);
73 SdchObserver observer = new SdchObserver(targetUrl, contextAdapter); 57 SdchObserver observer = new SdchObserver(targetUrl, contextAdapter);
74 58
75 // Make a request to /sdch which advertises the dictionary. 59 // Make a request to /sdch which advertises the dictionary.
76 TestUrlRequestCallback callback1 = startAndWaitForComplete(mTestFramewor k.mCronetEngine, 60 TestUrlRequestCallback callback1 = startAndWaitForComplete(
77 NativeTestServer.getSdchURL() + "/sdch/index?q=LeQxM80O"); 61 cronetEngine, NativeTestServer.getSdchURL() + "/sdch/index?q=LeQ xM80O");
78 assertEquals(200, callback1.mResponseInfo.getHttpStatusCode()); 62 assertEquals(200, callback1.mResponseInfo.getHttpStatusCode());
79 assertEquals("This is an index page.\n", callback1.mResponseAsString); 63 assertEquals("This is an index page.\n", callback1.mResponseAsString);
80 assertEquals(Arrays.asList("/sdch/dict/LeQxM80O"), 64 assertEquals(Arrays.asList("/sdch/dict/LeQxM80O"),
81 callback1.mResponseInfo.getAllHeaders().get("Get-Dictionary")); 65 callback1.mResponseInfo.getAllHeaders().get("Get-Dictionary"));
82 66
83 observer.waitForDictionaryAdded(); 67 observer.waitForDictionaryAdded();
84 68
85 // Make a request to fetch encoded response at /sdch/test. 69 // Make a request to fetch encoded response at /sdch/test.
86 TestUrlRequestCallback callback2 = 70 TestUrlRequestCallback callback2 = startAndWaitForComplete(cronetEngine, targetUrl);
87 startAndWaitForComplete(mTestFramework.mCronetEngine, targetUrl) ;
88 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode()); 71 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode());
89 assertEquals("The quick brown fox jumps over the lazy dog.\n", callback2 .mResponseAsString); 72 assertEquals("The quick brown fox jumps over the lazy dog.\n", callback2 .mResponseAsString);
90 73
91 mTestFramework.mCronetEngine.shutdown(); 74 cronetEngine.shutdown();
92 75
93 // Shutting down the context will make JsonPrefStore to flush pending 76 // Shutting down the context will make JsonPrefStore to flush pending
94 // writes to disk. 77 // writes to disk.
95 String dictUrl = NativeTestServer.getSdchURL() + "/sdch/dict/LeQxM80O"; 78 String dictUrl = NativeTestServer.getSdchURL() + "/sdch/dict/LeQxM80O";
96 assertTrue(fileContainsString("local_prefs.json", dictUrl)); 79 assertTrue(fileContainsString("local_prefs.json", dictUrl));
97 80
98 // Test persistence. 81 // Test persistence.
99 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder( 82 cronetEngine = cronetEngineBuilder.build();
100 null, mTestFramework.getCronetEngineBuilder()); 83 CronetUrlRequestContext newContext = (CronetUrlRequestContext) cronetEng ine;
101 CronetUrlRequestContext newContext = (CronetUrlRequestContext) mTestFram ework.mCronetEngine;
102 long newContextAdapter = getContextAdapter(newContext); 84 long newContextAdapter = getContextAdapter(newContext);
103 SdchObserver newObserver = new SdchObserver(targetUrl, newContextAdapter ); 85 SdchObserver newObserver = new SdchObserver(targetUrl, newContextAdapter );
104 newObserver.waitForDictionaryAdded(); 86 newObserver.waitForDictionaryAdded();
105 87
106 // Make a request to fetch encoded response at /sdch/test. 88 // Make a request to fetch encoded response at /sdch/test.
107 TestUrlRequestCallback callback3 = startAndWaitForComplete(newContext, t argetUrl); 89 TestUrlRequestCallback callback3 = startAndWaitForComplete(cronetEngine, targetUrl);
108 assertEquals(200, callback3.mResponseInfo.getHttpStatusCode()); 90 assertEquals(200, callback3.mResponseInfo.getHttpStatusCode());
109 assertEquals("The quick brown fox jumps over the lazy dog.\n", callback3 .mResponseAsString); 91 assertEquals("The quick brown fox jumps over the lazy dog.\n", callback3 .mResponseAsString);
110 } 92 }
111 93
112 @SmallTest 94 @SmallTest
113 @Feature({"Cronet"}) 95 @Feature({"Cronet"})
114 @OnlyRunNativeCronet 96 @OnlyRunNativeCronet
115 public void testSdchDisabled() throws Exception { 97 public void testSdchDisabled() throws Exception {
116 setUp(Sdch.DISABLED); 98 CronetEngine cronetEngine = createCronetEngineBuilder(Sdch.DISABLED).bui ld();
117 // Make a request to /sdch. 99 // Make a request to /sdch.
118 // Since Sdch is not enabled, no dictionary should be advertised. 100 // Since Sdch is not enabled, no dictionary should be advertised.
119 TestUrlRequestCallback callback = startAndWaitForComplete(mTestFramework .mCronetEngine, 101 TestUrlRequestCallback callback = startAndWaitForComplete(
120 NativeTestServer.getSdchURL() + "/sdch/index?q=LeQxM80O"); 102 cronetEngine, NativeTestServer.getSdchURL() + "/sdch/index?q=LeQ xM80O");
121 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 103 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
122 assertEquals("This is an index page.\n", callback.mResponseAsString); 104 assertEquals("This is an index page.\n", callback.mResponseAsString);
123 assertEquals(null, callback.mResponseInfo.getAllHeaders().get("Get-Dicti onary")); 105 assertEquals(null, callback.mResponseInfo.getAllHeaders().get("Get-Dicti onary"));
124 } 106 }
125 107
126 @SmallTest 108 @SmallTest
127 @Feature({"Cronet"}) 109 @Feature({"Cronet"})
128 @OnlyRunNativeCronet 110 @OnlyRunNativeCronet
129 public void testDictionaryNotFound() throws Exception { 111 public void testDictionaryNotFound() throws Exception {
130 setUp(Sdch.ENABLED); 112 CronetEngine cronetEngine = createCronetEngineBuilder(Sdch.ENABLED).buil d();
131 // Make a request to /sdch/index which advertises a bad dictionary that 113 // Make a request to /sdch/index which advertises a bad dictionary that
132 // does not exist. 114 // does not exist.
133 TestUrlRequestCallback callback1 = startAndWaitForComplete(mTestFramewor k.mCronetEngine, 115 TestUrlRequestCallback callback1 = startAndWaitForComplete(
134 NativeTestServer.getSdchURL() + "/sdch/index?q=NotFound"); 116 cronetEngine, NativeTestServer.getSdchURL() + "/sdch/index?q=Not Found");
135 assertEquals(200, callback1.mResponseInfo.getHttpStatusCode()); 117 assertEquals(200, callback1.mResponseInfo.getHttpStatusCode());
136 assertEquals("This is an index page.\n", callback1.mResponseAsString); 118 assertEquals("This is an index page.\n", callback1.mResponseAsString);
137 assertEquals(Arrays.asList("/sdch/dict/NotFound"), 119 assertEquals(Arrays.asList("/sdch/dict/NotFound"),
138 callback1.mResponseInfo.getAllHeaders().get("Get-Dictionary")); 120 callback1.mResponseInfo.getAllHeaders().get("Get-Dictionary"));
139 121
140 // Make a request to fetch /sdch/test, and make sure Sdch encoding is no t used. 122 // Make a request to fetch /sdch/test, and make sure Sdch encoding is no t used.
141 TestUrlRequestCallback callback2 = startAndWaitForComplete( 123 TestUrlRequestCallback callback2 =
142 mTestFramework.mCronetEngine, NativeTestServer.getSdchURL() + "/ sdch/test"); 124 startAndWaitForComplete(cronetEngine, NativeTestServer.getSdchUR L() + "/sdch/test");
143 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode()); 125 assertEquals(200, callback2.mResponseInfo.getHttpStatusCode());
144 assertEquals("Sdch is not used.\n", callback2.mResponseAsString); 126 assertEquals("Sdch is not used.\n", callback2.mResponseAsString);
145 } 127 }
146 128
147 private long getContextAdapter(CronetUrlRequestContext requestContext) { 129 private long getContextAdapter(CronetUrlRequestContext requestContext) {
148 return requestContext.getUrlRequestContextAdapter(); 130 return requestContext.getUrlRequestContextAdapter();
149 } 131 }
150 132
151 private TestUrlRequestCallback startAndWaitForComplete(CronetEngine cronetEn gine, String url) 133 private TestUrlRequestCallback startAndWaitForComplete(CronetEngine cronetEn gine, String url)
152 throws Exception { 134 throws Exception {
153 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 135 TestUrlRequestCallback callback = new TestUrlRequestCallback();
154 UrlRequest.Builder builder = 136 UrlRequest.Builder builder =
155 cronetEngine.newUrlRequestBuilder(url, callback, callback.getExe cutor()); 137 cronetEngine.newUrlRequestBuilder(url, callback, callback.getExe cutor());
156 builder.build().start(); 138 builder.build().start();
157 callback.blockForDone(); 139 callback.blockForDone();
158 return callback; 140 return callback;
159 } 141 }
160 142
161 // Returns whether a file contains a particular string. 143 // Returns whether a file contains a particular string.
162 private boolean fileContainsString(String filename, String content) throws I OException { 144 private boolean fileContainsString(String filename, String content) throws I OException {
163 BufferedReader reader = new BufferedReader(new FileReader( 145 BufferedReader reader = new BufferedReader(
164 CronetTestFramework.getTestStorage(getContext()) + "/prefs/" + f ilename)); 146 new FileReader(getTestStorage(getContext()) + "/prefs/" + filena me));
165 String line; 147 String line;
166 while ((line = reader.readLine()) != null) { 148 while ((line = reader.readLine()) != null) {
167 if (line.contains(content)) { 149 if (line.contains(content)) {
168 reader.close(); 150 reader.close();
169 return true; 151 return true;
170 } 152 }
171 } 153 }
172 reader.close(); 154 reader.close();
173 return false; 155 return false;
174 } 156 }
175 } 157 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698