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

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

Issue 2827673002: [Cronet] Fix ExperimentalOptionsTest flake (Closed)
Patch Set: Address comment 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
index cb47233dea4eebdaaa4e6d1fb7f6af3841346f68..505ee82c5fafc1fa8492c1cbd5e4e86c1d1c901f 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
@@ -4,16 +4,18 @@
package org.chromium.net;
-import android.support.test.filters.SmallTest;
+import android.support.test.filters.MediumTest;
import org.json.JSONObject;
+import org.chromium.base.Log;
import org.chromium.base.PathUtils;
import org.chromium.base.test.util.Feature;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
/**
* Tests for experimental options.
@@ -42,7 +44,7 @@ public class ExperimentalOptionsTest extends CronetTestBase {
super.tearDown();
}
- @SmallTest
+ @MediumTest
@Feature({"Cronet"})
@OnlyRunNativeCronet
// Tests that NetLog writes effective experimental options to NetLog.
@@ -66,27 +68,12 @@ public class ExperimentalOptionsTest extends CronetTestBase {
assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
assertEquals("GET", callback.mResponseAsString);
mTestFramework.mCronetEngine.stopNetLog();
- assertTrue(logfile.exists());
- assertTrue(logfile.length() != 0);
- BufferedReader logReader = new BufferedReader(new FileReader(logfile));
- boolean validFile = false;
- try {
- String logLine;
- while ((logLine = logReader.readLine()) != null) {
- if (logLine.contains("HostResolverRules")) {
- validFile = true;
- break;
- }
- }
- } finally {
- logReader.close();
- }
- assertTrue(validFile);
+ assertFileContainsString(logfile, "HostResolverRules");
assertTrue(logfile.delete());
- assertTrue(!logfile.exists());
+ assertFalse(logfile.exists());
}
- @SmallTest
+ @MediumTest
@Feature({"Cronet"})
@OnlyRunNativeCronet
public void testSetSSLKeyLogFile() throws Exception {
@@ -107,23 +94,47 @@ public class ExperimentalOptionsTest extends CronetTestBase {
assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
assertEquals("GET", callback.mResponseAsString);
- assertTrue(file.exists());
- assertTrue(file.length() != 0);
- BufferedReader logReader = new BufferedReader(new FileReader(file));
- boolean validFile = false;
+ assertFileContainsString(file, "CLIENT_RANDOM");
+ assertTrue(file.delete());
+ assertFalse(file.exists());
+ }
+
+ // Helper method to assert that file contains content. It retries 5 times
+ // with a 100ms interval.
+ private void assertFileContainsString(File file, String content) throws Exception {
+ boolean contains = false;
+ for (int i = 0; i < 5; i++) {
+ contains = fileContainsString(file, content);
+ if (contains) break;
+ Log.i(TAG, "Retrying...");
+ Thread.sleep(100);
+ }
+ assertTrue("file content doesn't match", contains);
+ }
+
+ // Returns whether a file contains a particular string.
+ private boolean fileContainsString(File file, String content) throws IOException {
+ FileInputStream fileInputStream = null;
+ Log.i(TAG, "looking for [%s] in %s", content, file.getName());
try {
- String logLine;
- while ((logLine = logReader.readLine()) != null) {
- if (logLine.contains("CLIENT_RANDOM")) {
- validFile = true;
- break;
- }
+ fileInputStream = new FileInputStream(file);
+ byte[] data = new byte[(int) file.length()];
+ fileInputStream.read(data);
+ String actual = new String(data, "UTF-8");
+ boolean contains = actual.contains(content);
+ if (!contains) {
+ Log.i(TAG, "file content [%s]", actual);
}
+ return contains;
+ } catch (FileNotFoundException e) {
+ // Ignored this exception since the file will only be created when updates are
+ // flushed to the disk.
+ Log.i(TAG, "file not found");
} finally {
- logReader.close();
+ if (fileInputStream != null) {
+ fileInputStream.close();
+ }
}
- assertTrue(validFile);
- assertTrue(file.delete());
- assertTrue(!file.exists());
+ return false;
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698