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

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

Issue 1273173002: Added Network Quality Estimator Real-time interface to Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed remaining comments Created 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.content.Context; 7 import android.content.Context;
8 import android.content.ContextWrapper; 8 import android.content.ContextWrapper;
9 import android.os.ConditionVariable; 9 import android.os.ConditionVariable;
10 import android.os.Handler; 10 import android.os.Handler;
11 import android.os.Looper; 11 import android.os.Looper;
12 import android.test.suitebuilder.annotation.SmallTest; 12 import android.test.suitebuilder.annotation.SmallTest;
13 13
14 import org.chromium.base.PathUtils; 14 import org.chromium.base.PathUtils;
15 import org.chromium.base.test.util.Feature; 15 import org.chromium.base.test.util.Feature;
16 import org.chromium.net.TestUrlRequestListener.ResponseStep; 16 import org.chromium.net.TestUrlRequestListener.ResponseStep;
17 17
18 import java.io.BufferedReader; 18 import java.io.BufferedReader;
19 import java.io.File; 19 import java.io.File;
20 import java.io.FileReader; 20 import java.io.FileReader;
21 import java.util.LinkedList;
22 import java.util.NoSuchElementException;
23 import java.util.concurrent.Executor;
21 24
22 /** 25 /**
23 * Test CronetUrlRequestContext. 26 * Test CronetUrlRequestContext.
24 */ 27 */
25 public class CronetUrlRequestContextTest extends CronetTestBase { 28 public class CronetUrlRequestContextTest extends CronetTestBase {
26 // URLs used for tests. 29 // URLs used for tests.
27 private static final String TEST_URL = "http://127.0.0.1:8000"; 30 private static final String TEST_URL = "http://127.0.0.1:8000";
28 private static final String URL_404 = "http://127.0.0.1:8000/notfound404"; 31 private static final String URL_404 = "http://127.0.0.1:8000/notfound404";
29 private static final String MOCK_CRONET_TEST_FAILED_URL = 32 private static final String MOCK_CRONET_TEST_FAILED_URL =
30 "http://mock.failed.request/-2"; 33 "http://mock.failed.request/-2";
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 75
73 @Override 76 @Override
74 public void onFailed(UrlRequest request, 77 public void onFailed(UrlRequest request,
75 ResponseInfo info, 78 ResponseInfo info,
76 UrlRequestException error) { 79 UrlRequestException error) {
77 super.onFailed(request, info, error); 80 super.onFailed(request, info, error);
78 mActivity.mUrlRequestContext.shutdown(); 81 mActivity.mUrlRequestContext.shutdown();
79 } 82 }
80 } 83 }
81 84
85 static class TestExecutor implements Executor {
86 private final LinkedList<Runnable> mTaskQueue = new LinkedList<Runnable> ();
87
88 @Override
89 public void execute(Runnable task) {
90 mTaskQueue.add(task);
91 }
92
93 public void runAllTasks() {
94 try {
95 while (mTaskQueue.size() > 0) {
96 mTaskQueue.remove().run();
97 }
98 } catch (NoSuchElementException e) {
99 }
100 }
101 }
102
103 static class TestNetworkQualityObserver
104 implements NetworkQualityRttObserver, NetworkQualityThroughputObserv er {
105 int mRttObservationCount;
106 int mThroughputObservationCount;
107
108 public void onRttObservation(int rttMs, long when, int source) {
109 mRttObservationCount++;
110 }
111
112 public void onThroughputObservation(int throughputKbps, long when, int s ource) {
113 mThroughputObservationCount++;
114 }
115
116 public int rttObservationCount() {
117 return mRttObservationCount;
118 }
119
120 public int throughputObservationCount() {
121 return mThroughputObservationCount;
122 }
123 }
124
82 @SmallTest 125 @SmallTest
83 @Feature({"Cronet"}) 126 @Feature({"Cronet"})
84 public void testConfigUserAgent() throws Exception { 127 public void testConfigUserAgent() throws Exception {
85 String userAgentName = "User-Agent"; 128 String userAgentName = "User-Agent";
86 String userAgentValue = "User-Agent-Value"; 129 String userAgentValue = "User-Agent-Value";
87 UrlRequestContextConfig config = new UrlRequestContextConfig(); 130 UrlRequestContextConfig config = new UrlRequestContextConfig();
88 config.setUserAgent(userAgentValue); 131 config.setUserAgent(userAgentValue);
89 config.setLibraryName("cronet_tests"); 132 config.setLibraryName("cronet_tests");
90 String[] commandLineArgs = { 133 String[] commandLineArgs = {
91 CronetTestActivity.CONFIG_KEY, config.toString() 134 CronetTestActivity.CONFIG_KEY, config.toString()
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 // Proxy logic configured to use the test server as its proxy. 190 // Proxy logic configured to use the test server as its proxy.
148 assertEquals(200, listener.mResponseInfo.getHttpStatusCode()); 191 assertEquals(200, listener.mResponseInfo.getHttpStatusCode());
149 assertEquals(serverHostPort, listener.mResponseInfo.getProxyServer()); 192 assertEquals(serverHostPort, listener.mResponseInfo.getProxyServer());
150 assertEquals( 193 assertEquals(
151 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt", 194 "http://DomainThatDoesnt.Resolve/datareductionproxysuccess.txt",
152 listener.mResponseInfo.getUrl()); 195 listener.mResponseInfo.getUrl());
153 } 196 }
154 197
155 @SmallTest 198 @SmallTest
156 @Feature({"Cronet"}) 199 @Feature({"Cronet"})
200 public void testRealTimeNetworkQualityObservationsNotEnabled() throws Except ion {
201 mActivity = launchCronetTestApp();
202 TestNetworkQualityObserver networkQualityObserver = new TestNetworkQuali tyObserver();
203 mActivity.mUrlRequestContext.addRttObserver(networkQualityObserver);
204 mActivity.mUrlRequestContext.addThroughputObserver(networkQualityObserve r);
205 TestUrlRequestListener listener = new TestUrlRequestListener();
206 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
207 TEST_URL, listener, listener.getExecutor());
208 urlRequest.start();
209 listener.blockForDone();
210 assertEquals(0, networkQualityObserver.rttObservationCount());
211 assertEquals(0, networkQualityObserver.throughputObservationCount());
212 mActivity.mUrlRequestContext.shutdown();
213 }
214
215 @SmallTest
216 @Feature({"Cronet"})
217 public void testRealTimeNetworkQualityObservationsObserverRemoved() throws E xception {
218 mActivity = launchCronetTestApp();
219 TestExecutor testExecutor = new TestExecutor();
220 TestNetworkQualityObserver networkQualityObserver = new TestNetworkQuali tyObserver();
221 mActivity.mUrlRequestContext.enableNetworkQualityEstimator(true, true, t estExecutor);
222 mActivity.mUrlRequestContext.addRttObserver(networkQualityObserver);
223 mActivity.mUrlRequestContext.addThroughputObserver(networkQualityObserve r);
224 mActivity.mUrlRequestContext.removeRttObserver(networkQualityObserver);
225 mActivity.mUrlRequestContext.removeThroughputObserver(networkQualityObse rver);
226 TestUrlRequestListener listener = new TestUrlRequestListener();
227 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
228 TEST_URL, listener, listener.getExecutor());
229 urlRequest.start();
230 listener.blockForDone();
231 testExecutor.runAllTasks();
232 assertEquals(0, networkQualityObserver.rttObservationCount());
233 assertEquals(0, networkQualityObserver.throughputObservationCount());
234 mActivity.mUrlRequestContext.shutdown();
235 }
236
237 @SmallTest
238 @Feature({"Cronet"})
239 public void testRealTimeNetworkQualityObservations() throws Exception {
240 mActivity = launchCronetTestApp();
241 TestExecutor testExecutor = new TestExecutor();
242 TestNetworkQualityObserver networkQualityObserver = new TestNetworkQuali tyObserver();
243 mActivity.mUrlRequestContext.enableNetworkQualityEstimator(true, true, t estExecutor);
244 mActivity.mUrlRequestContext.addRttObserver(networkQualityObserver);
245 mActivity.mUrlRequestContext.addThroughputObserver(networkQualityObserve r);
246 TestUrlRequestListener listener = new TestUrlRequestListener();
247 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
248 TEST_URL, listener, listener.getExecutor());
249 urlRequest.start();
250 listener.blockForDone();
251 testExecutor.runAllTasks();
252 assertTrue(networkQualityObserver.rttObservationCount() > 0);
253 assertTrue(networkQualityObserver.throughputObservationCount() > 0);
254 mActivity.mUrlRequestContext.shutdown();
255 }
256
257 @SmallTest
258 @Feature({"Cronet"})
157 public void testShutdown() throws Exception { 259 public void testShutdown() throws Exception {
158 mActivity = launchCronetTestApp(); 260 mActivity = launchCronetTestApp();
159 TestUrlRequestListener listener = new ShutdownTestUrlRequestListener(); 261 TestUrlRequestListener listener = new ShutdownTestUrlRequestListener();
160 // Block listener when response starts to verify that shutdown fails 262 // Block listener when response starts to verify that shutdown fails
161 // if there are active requests. 263 // if there are active requests.
162 listener.setAutoAdvance(false); 264 listener.setAutoAdvance(false);
163 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest( 265 UrlRequest urlRequest = mActivity.mUrlRequestContext.createRequest(
164 TEST_URL, listener, listener.getExecutor()); 266 TEST_URL, listener, listener.getExecutor());
165 urlRequest.start(); 267 urlRequest.start();
166 try { 268 try {
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 new CronetUrlRequestContext(mActivity, mActivity.getContextConfi g()); 770 new CronetUrlRequestContext(mActivity, mActivity.getContextConfi g());
669 CronetUrlRequestContext secondContext = new CronetUrlRequestContext( 771 CronetUrlRequestContext secondContext = new CronetUrlRequestContext(
670 mActivity.getApplicationContext(), mActivity.getContextConfig()) ; 772 mActivity.getApplicationContext(), mActivity.getContextConfig()) ;
671 CronetUrlRequestContext thirdContext = new CronetUrlRequestContext( 773 CronetUrlRequestContext thirdContext = new CronetUrlRequestContext(
672 new ContextWrapper(mActivity), mActivity.getContextConfig()); 774 new ContextWrapper(mActivity), mActivity.getContextConfig());
673 firstContext.shutdown(); 775 firstContext.shutdown();
674 secondContext.shutdown(); 776 secondContext.shutdown();
675 thirdContext.shutdown(); 777 thirdContext.shutdown();
676 } 778 }
677 } 779 }
OLDNEW
« no previous file with comments | « components/cronet/android/java/src/org/chromium/net/UrlRequestContext.java ('k') | net/base/network_quality_estimator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698