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

Unified Diff: components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java

Issue 2416473004: Add functionality for embedders to configure NQE (Closed)
Patch Set: rebased Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java b/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
index 4bf2631d5e9c845980ca4b7d0be57cc8aeba9dc5..5ae8c0aa35f845292b46236e26f2fcf879cb13a8 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java
@@ -8,6 +8,8 @@ import android.os.ConditionVariable;
import android.os.StrictMode;
import android.support.test.filters.SmallTest;
+import org.json.JSONObject;
+
import org.chromium.base.Log;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.SuppressFBWarnings;
@@ -230,4 +232,75 @@ public class NQETest extends CronetTestBase {
testFramework.mCronetEngine.shutdown();
assertTrue(writeCountHistogram.getDelta() > 0);
}
+
+ @SmallTest
+ @Feature({"Cronet"})
+ public void testQuicDisabledWithParams() throws Exception {
+ ExperimentalCronetEngine.Builder mCronetEngineBuilder =
+ new ExperimentalCronetEngine.Builder(getContext());
+ Executor listenersExecutor = Executors.newSingleThreadExecutor(new ExecutorThreadFactory());
+ ConditionVariable waitForThroughput = new ConditionVariable();
+ TestNetworkQualityRttListener rttListener =
+ new TestNetworkQualityRttListener(listenersExecutor);
+ TestNetworkQualityThroughputListener throughputListener =
+ new TestNetworkQualityThroughputListener(listenersExecutor, waitForThroughput);
+
+ // Force the effective connection type to "2G".
+ JSONObject nqeOptions = new JSONObject().put("force_effective_connection_type", "2G");
+ // Add one more extra param two times to ensure robustness.
+ nqeOptions.put("some_other_param_1", "value1");
+ nqeOptions.put("some_other_param_2", "value2");
+ JSONObject experimentalOptions =
+ new JSONObject().put("NetworkQualityEstimator", nqeOptions);
+ experimentalOptions.put("SomeOtherFieldTrialName", new JSONObject());
+
+ mCronetEngineBuilder.enableHttp2(true).enableQuic(false).enableNetworkQualityEstimator(
+ true);
+ mCronetEngineBuilder.setExperimentalOptions(experimentalOptions.toString());
+ final CronetTestFramework testFramework =
+ startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCronetEngineBuilder);
+ testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(true, true, false);
+
+ testFramework.mCronetEngine.addRttListener(rttListener);
+ testFramework.mCronetEngine.addThroughputListener(throughputListener);
+
+ TestUrlRequestCallback callback = new TestUrlRequestCallback();
+ UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBuilder(
+ mUrl, callback, callback.getExecutor());
+
+ UrlRequest urlRequest = builder.build();
+ urlRequest.start();
+ callback.blockForDone();
+
+ // Throughput observation is posted to the network quality estimator on the network thread
+ // after the UrlRequest is completed. The observations are then eventually posted to
+ // throughput listeners on the executor provided to network quality.
+ waitForThroughput.block();
+ assertTrue(throughputListener.throughputObservationCount() > 0);
+
+ // Check RTT observation count after throughput observation has been received. This ensures
+ // that executor has finished posting the RTT observation to the RTT listeners.
+ assertTrue(rttListener.rttObservationCount() > 0);
+
+ // NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST
+ assertTrue(rttListener.rttObservationCount(0) > 0);
+
+ // NETWORK_QUALITY_OBSERVATION_SOURCE_TCP
+ assertTrue(rttListener.rttObservationCount(1) > 0);
+
+ // NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC
+ assertEquals(0, rttListener.rttObservationCount(2));
+
+ // Verify that the listeners were notified on the expected thread.
+ assertEquals(mNetworkQualityThread, rttListener.getThread());
+ assertEquals(mNetworkQualityThread, throughputListener.getThread());
+
+ // Verify that effective connection type callback is received and effective connection type
+ // is correctly set to the forced value. This also verifies that the configuration params
+ // from Cronet embedders were correctly read by NetworkQualityEstimator.
+ assertEquals(EffectiveConnectionType.TYPE_2G,
+ testFramework.mCronetEngine.getEffectiveConnectionType());
+
+ testFramework.mCronetEngine.shutdown();
+ }
}

Powered by Google App Engine
This is Rietveld 408576698