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

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

Issue 2850873002: Disable flaky NQE test in Cronet (Closed)
Patch Set: ps 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/CronetUrlRequestContextTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
index afaf89932175462a21e77f9dfe12b53481e02eb7..e0f7186c14df82134c55cc15ae153caaaf79eb29 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
@@ -9,7 +9,6 @@ import android.content.ContextWrapper;
import android.os.ConditionVariable;
import android.os.Handler;
import android.os.Looper;
-import android.os.StrictMode;
import android.support.test.filters.SmallTest;
import org.json.JSONObject;
@@ -17,14 +16,9 @@ import org.json.JSONObject;
import static org.chromium.net.CronetEngine.Builder.HTTP_CACHE_IN_MEMORY;
import org.chromium.base.FileUtils;
-import org.chromium.base.Log;
import org.chromium.base.PathUtils;
import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.annotations.SuppressFBWarnings;
-import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature;
-import org.chromium.base.test.util.MetricsUtils.HistogramDelta;
-import org.chromium.net.MetricsTestUtil.TestExecutor;
import org.chromium.net.TestUrlRequestCallback.ResponseStep;
import org.chromium.net.impl.CronetEngineBase;
import org.chromium.net.impl.CronetEngineBuilderImpl;
@@ -34,15 +28,10 @@ import org.chromium.net.test.EmbeddedTestServer;
import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileReader;
-import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -65,9 +54,6 @@ public class CronetUrlRequestContextTest extends CronetTestBase {
private String mUrl404;
private String mUrl500;
- // Thread on which network quality listeners should be notified.
- private Thread mNetworkQualityThread;
-
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -141,28 +127,6 @@ public class CronetUrlRequestContextTest extends CronetTestBase {
}
}
- private class ExecutorThreadFactory implements ThreadFactory {
- public Thread newThread(final Runnable r) {
- mNetworkQualityThread = new Thread(new Runnable() {
- @Override
- public void run() {
- StrictMode.ThreadPolicy threadPolicy = StrictMode.getThreadPolicy();
- try {
- StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
- .detectNetwork()
- .penaltyLog()
- .penaltyDeath()
- .build());
- r.run();
- } finally {
- StrictMode.setThreadPolicy(threadPolicy);
- }
- }
- });
- return mNetworkQualityThread;
- }
- }
-
@SmallTest
@Feature({"Cronet"})
@SuppressWarnings("deprecation")
@@ -190,170 +154,6 @@ public class CronetUrlRequestContextTest extends CronetTestBase {
@SmallTest
@Feature({"Cronet"})
- @DisabledTest(message = "Disabled due to flaky assert. See crbug.com/710626")
- public void testRealTimeNetworkQualityObservationsNotEnabled() throws Exception {
- ExperimentalCronetEngine.Builder mCronetEngineBuilder =
- new ExperimentalCronetEngine.Builder(getContext());
- final CronetTestFramework testFramework =
- startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCronetEngineBuilder);
- Executor networkQualityExecutor = Executors.newSingleThreadExecutor();
- TestNetworkQualityRttListener rttListener =
- new TestNetworkQualityRttListener(networkQualityExecutor);
- TestNetworkQualityThroughputListener throughputListener =
- new TestNetworkQualityThroughputListener(networkQualityExecutor, null);
- try {
- testFramework.mCronetEngine.addRttListener(rttListener);
- fail("Should throw an exception.");
- } catch (IllegalStateException e) {
- }
- try {
- testFramework.mCronetEngine.addThroughputListener(throughputListener);
- fail("Should throw an exception.");
- } catch (IllegalStateException e) {
- }
- TestUrlRequestCallback callback = new TestUrlRequestCallback();
- UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBuilder(
- mUrl, callback, callback.getExecutor());
- UrlRequest urlRequest = builder.build();
-
- urlRequest.start();
- callback.blockForDone();
- assertEquals(0, rttListener.rttObservationCount());
- assertEquals(0, throughputListener.throughputObservationCount());
- testFramework.mCronetEngine.shutdown();
- }
-
- @SmallTest
- @Feature({"Cronet"})
- public void testRealTimeNetworkQualityObservationsListenerRemoved() throws Exception {
- ExperimentalCronetEngine.Builder mCronetEngineBuilder =
- new ExperimentalCronetEngine.Builder(getContext());
- TestExecutor networkQualityExecutor = new TestExecutor();
- TestNetworkQualityRttListener rttListener =
- new TestNetworkQualityRttListener(networkQualityExecutor);
- mCronetEngineBuilder.enableNetworkQualityEstimator(true);
- final CronetTestFramework testFramework =
- startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCronetEngineBuilder);
- testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(true, true, false);
-
- testFramework.mCronetEngine.addRttListener(rttListener);
- testFramework.mCronetEngine.removeRttListener(rttListener);
- TestUrlRequestCallback callback = new TestUrlRequestCallback();
- UrlRequest.Builder builder = testFramework.mCronetEngine.newUrlRequestBuilder(
- mUrl, callback, callback.getExecutor());
- UrlRequest urlRequest = builder.build();
- urlRequest.start();
- callback.blockForDone();
- networkQualityExecutor.runAllTasks();
- assertEquals(0, rttListener.rttObservationCount());
- testFramework.mCronetEngine.shutdown();
- }
-
- // Returns whether a file contains a particular string.
- @SuppressFBWarnings("OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE")
- private boolean fileContainsString(String filename, String content) throws IOException {
- File file =
- new File(CronetTestFramework.getTestStorage(getContext()) + "/prefs/" + filename);
- FileInputStream fileInputStream = new FileInputStream(file);
- byte[] data = new byte[(int) file.length()];
- fileInputStream.read(data);
- fileInputStream.close();
- return new String(data, "UTF-8").contains(content);
- }
-
- @SmallTest
- @Feature({"Cronet"})
- public void testRealTimeNetworkQualityObservationsQuicDisabled() throws Exception {
- ExperimentalCronetEngine.Builder mCronetEngineBuilder =
- new ExperimentalCronetEngine.Builder(getContext());
- assert RttThroughputValues.INVALID_RTT_THROUGHPUT < 0;
- Executor listenersExecutor = Executors.newSingleThreadExecutor(new ExecutorThreadFactory());
- ConditionVariable waitForThroughput = new ConditionVariable();
- TestNetworkQualityRttListener rttListener =
- new TestNetworkQualityRttListener(listenersExecutor);
- TestNetworkQualityThroughputListener throughputListener =
- new TestNetworkQualityThroughputListener(listenersExecutor, waitForThroughput);
- mCronetEngineBuilder.enableNetworkQualityEstimator(true).enableHttp2(true).enableQuic(
- false);
- mCronetEngineBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext()));
- final CronetTestFramework testFramework =
- startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, mCronetEngineBuilder);
- testFramework.mCronetEngine.configureNetworkQualityEstimatorForTesting(true, true, true);
-
- testFramework.mCronetEngine.addRttListener(rttListener);
- testFramework.mCronetEngine.addThroughputListener(throughputListener);
-
- HistogramDelta writeCountHistogram = new HistogramDelta("NQE.Prefs.WriteCount", 1);
- assertEquals(0, writeCountHistogram.getDelta()); // Sanity check.
-
- HistogramDelta readCountHistogram = new HistogramDelta("NQE.Prefs.ReadCount", 1);
- assertEquals(0, readCountHistogram.getDelta()); // Sanity check.
-
- 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);
-
- // Prefs must be read at startup.
- assertTrue(readCountHistogram.getDelta() > 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.
- assertTrue(testFramework.mCronetEngine.getEffectiveConnectionType()
- != EffectiveConnectionType.TYPE_UNKNOWN);
-
- // Verify that the HTTP RTT, transport RTT and downstream throughput
- // estimates are available.
- assertTrue(testFramework.mCronetEngine.getHttpRttMs() >= 0);
- assertTrue(testFramework.mCronetEngine.getTransportRttMs() >= 0);
- assertTrue(testFramework.mCronetEngine.getDownstreamThroughputKbps() >= 0);
-
- // Verify that the cached estimates were written to the prefs.
- while (true) {
- Log.i(TAG, "Still waiting for pref file update.....");
- Thread.sleep(12000);
- try {
- if (fileContainsString("local_prefs.json", "network_qualities")) {
- break;
- }
- } catch (FileNotFoundException e) {
- // Ignored this exception since the file will only be created when updates are
- // flushed to the disk.
- }
- }
- assertTrue(fileContainsString("local_prefs.json", "network_qualities"));
-
- testFramework.mCronetEngine.shutdown();
- assertTrue(writeCountHistogram.getDelta() > 0);
- }
-
- @SmallTest
- @Feature({"Cronet"})
// TODO: Remove the annotation after fixing http://crbug.com/637979 & http://crbug.com/637972
@OnlyRunNativeCronet
public void testShutdown() throws Exception {
« no previous file with comments | « components/cronet/android/BUILD.gn ('k') | components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698