summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohannad Farrag <aymanm@google.com>2024-01-18 16:08:10 +0000
committerMohannad Farrag <aymanm@google.com>2024-01-18 16:08:10 +0000
commit5ab8eee2f1dd6a40a5bb6932f5ea6b7de5f0b5b5 (patch)
tree83e71be75aa49acde72ce540d2f736be3a2c9491
parent09524263b7675c639c1b0ef6ee6b0f30d3e2d06b (diff)
parent34b3ec101cb50ce6f2dcf61a8aa3bd2d1e66f9a3 (diff)
downloadcronet-5ab8eee2f1dd6a40a5bb6932f5ea6b7de5f0b5b5.tar.gz
Merge remote-tracking branch 'aosp/upstream-staging' into merge_main_remove_div_2
Bug: 304217500 Change-Id: I9075433ccdc9da69adb80cfe5d58ef14b7ad16dc
-rw-r--r--Android.extras.bp5
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java16
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java2
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java66
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java75
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java42
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java4
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java10
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/Http2TestServer.java130
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java6
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java1
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java4
-rw-r--r--components/cronet/android/test/mock_cert_verifier.cc2
-rw-r--r--components/cronet/android/test/native_test_server.cc14
-rw-r--r--components/cronet/android/test/proguard.cfg4
-rw-r--r--components/cronet/android/test/quic_test_server.cc8
-rw-r--r--components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java1
-rw-r--r--components/cronet/android/test/src/org/chromium/net/CronetTestUtil.java6
-rw-r--r--components/cronet/android/test/src/org/chromium/net/MockCertVerifier.java7
-rw-r--r--components/cronet/android/test/src/org/chromium/net/MockUrlRequestJobFactory.java2
-rw-r--r--components/cronet/android/test/src/org/chromium/net/NativeTestServer.java28
-rw-r--r--components/cronet/android/test/src/org/chromium/net/QuicTestServer.java6
-rw-r--r--components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java60
-rw-r--r--components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java1
-rw-r--r--components/cronet/testing/test_server/data/server_error.txt.mock-http-headers2
-rw-r--r--components/cronet/testing/test_server/test_server.cc13
-rw-r--r--components/cronet/testing/test_server/test_server.h11
27 files changed, 214 insertions, 312 deletions
diff --git a/Android.extras.bp b/Android.extras.bp
index d997ee12c..41888671f 100644
--- a/Android.extras.bp
+++ b/Android.extras.bp
@@ -167,6 +167,7 @@ filegroup {
name: "cronet_javatests_resources",
srcs: [
"net/data/ssl/certificates/**/*",
+ "components/cronet/testing/test_server/data/**/*",
],
visibility: [
"//packages/modules/Connectivity:__subpackages__",
@@ -175,10 +176,6 @@ filegroup {
android_library {
name: "cronet_java_tests",
- asset_dirs: [
- "components/cronet/testing/test_server/data/",
- "net/data/ssl/certificates/",
- ],
manifest: "components/cronet/android/test/src/org/chromium/net/AndroidManifest.xml",
srcs: [
":cronet_logger_tests_sources",
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java
index 81b88c03b..d172a433f 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/BrotliTest.java
@@ -15,7 +15,6 @@ import androidx.test.filters.SmallTest;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -51,15 +50,13 @@ public class BrotliTest {
builder, QuicTestServer.createMockCertVerifier());
});
}
- assertThat(NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext())).isTrue();
+ assertThat(Http2TestServer.startHttp2TestServer(mTestRule.getTestFramework().getContext()))
+ .isTrue();
}
@After
public void tearDown() throws Exception {
- NativeTestServer.shutdownNativeTestServer();
- if (mCronetEngine != null) {
- mCronetEngine.shutdown();
- }
+ assertThat(Http2TestServer.shutdownHttp2TestServer()).isTrue();
}
@Test
@@ -73,17 +70,17 @@ public class BrotliTest {
});
mCronetEngine = mTestRule.getTestFramework().startEngine();
- String url = NativeTestServer.getEchoAllHeadersURL();
+ String url = Http2TestServer.getEchoAllHeadersUrl();
TestUrlRequestCallback callback = startAndWaitForComplete(url);
assertThat(callback.getResponseInfoWithChecks()).hasHttpStatusCodeThat().isEqualTo(200);
- assertThat(callback.mResponseAsString).contains("Accept-Encoding: gzip, deflate, br");
+ assertThat(callback.mResponseAsString).contains("accept-encoding: gzip, deflate, br");
}
@Test
@SmallTest
public void testBrotliNotAdvertised() throws Exception {
mCronetEngine = mTestRule.getTestFramework().startEngine();
- String url = NativeTestServer.getEchoAllHeadersURL();
+ String url = Http2TestServer.getEchoAllHeadersUrl();
TestUrlRequestCallback callback = startAndWaitForComplete(url);
assertThat(callback.getResponseInfoWithChecks()).hasHttpStatusCodeThat().isEqualTo(200);
assertThat(callback.mResponseAsString).doesNotContain("br");
@@ -91,7 +88,6 @@ public class BrotliTest {
@Test
@SmallTest
- @Ignore // TODO(danstahr): Add test server support for setting the Brotli header
public void testBrotliDecoded() throws Exception {
mTestRule
.getTestFramework()
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java
index a5b3968c7..a23705034 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetStressTest.java
@@ -11,8 +11,6 @@ import static org.chromium.net.truth.UrlResponseInfoSubject.assertThat;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
-import org.chromium.base.test.util.Batch;
-import org.chromium.net.apihelpers.UploadDataProviders;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java
index 8190ab7f8..3fa22d155 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetTestRuleTest.java
@@ -26,6 +26,7 @@ import org.chromium.net.CronetTestRule.IgnoreFor;
import org.chromium.net.CronetTestRule.RequiresMinAndroidApi;
import org.chromium.net.CronetTestRule.RequiresMinApi;
import org.chromium.net.impl.CronetUrlRequestContext;
+import org.chromium.net.impl.JavaCronetEngine;
/** Tests features of CronetTestRule. */
@RunWith(AndroidJUnit4.class)
@@ -84,6 +85,34 @@ public class CronetTestRuleTest {
*/
@Test
@SmallTest
+ public void testAllImplsMustRun() {
+ assertThat(mTestWasRun).isFalse();
+ mTestWasRun = true;
+ mNumberOfReruns++;
+ assertThat(mNumberOfReruns).isLessThan(4);
+ switch (mTestRule.implementationUnderTest()) {
+ case STATICALLY_LINKED:
+ assertThat(mNativeImplWasRun).isFalse();
+ mNativeImplWasRun = true;
+ break;
+ case FALLBACK:
+ assertThat(mFallbackImplWasRun).isFalse();
+ mFallbackImplWasRun = true;
+ break;
+ case AOSP_PLATFORM:
+ assertThat(mPlatformImplWasRun).isFalse();
+ mPlatformImplWasRun = true;
+ break;
+ }
+ if (mNumberOfReruns == 3) {
+ assertThat(mFallbackImplWasRun).isTrue();
+ assertThat(mPlatformImplWasRun).isTrue();
+ assertThat(mNativeImplWasRun).isTrue();
+ }
+ }
+
+ @Test
+ @SmallTest
@IgnoreFor(
implementations = {CronetImplementation.FALLBACK, CronetImplementation.AOSP_PLATFORM},
reason = "Testing the rule")
@@ -96,4 +125,41 @@ public class CronetTestRuleTest {
assertThat(mTestRule.getTestFramework().getEngine())
.isInstanceOf(CronetUrlRequestContext.class);
}
+
+ @Test
+ @SmallTest
+ @IgnoreFor(
+ implementations = {
+ CronetImplementation.STATICALLY_LINKED,
+ CronetImplementation.AOSP_PLATFORM
+ },
+ reason = "Testing the rule")
+ public void testRunOnlyJavaMustRun() {
+ assertThat(mTestRule.testingJavaImpl()).isTrue();
+ assertThat(mTestRule.implementationUnderTest()).isEqualTo(CronetImplementation.FALLBACK);
+ assertThat(mTestWasRun).isFalse();
+ mTestWasRun = true;
+ assertThat(mTestRule.getTestFramework().getEngine()).isInstanceOf(JavaCronetEngine.class);
+ }
+
+ @Test
+ @SmallTest
+ @IgnoreFor(
+ implementations = {
+ CronetImplementation.STATICALLY_LINKED,
+ CronetImplementation.FALLBACK
+ },
+ reason = "Testing the rule")
+ @RequiresMinAndroidApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+ public void testRunOnlyAospPlatformMustRun() {
+ assertThat(mTestRule.testingJavaImpl()).isFalse();
+ assertThat(mTestRule.implementationUnderTest())
+ .isEqualTo(CronetImplementation.AOSP_PLATFORM);
+ assertThat(mTestWasRun).isFalse();
+ mTestWasRun = true;
+ assertThat(mTestRule.getTestFramework().getEngine())
+ .isNotInstanceOf(JavaCronetEngine.class);
+ assertThat(mTestRule.getTestFramework().getEngine())
+ .isNotInstanceOf(CronetUrlRequestContext.class);
+ }
}
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 5110bbb9d..f4cb0bb96 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
@@ -5,11 +5,13 @@
package org.chromium.net;
import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assume.assumeTrue;
+
import static org.chromium.net.CronetEngine.Builder.HTTP_CACHE_IN_MEMORY;
import static org.chromium.net.CronetTestRule.getTestStorage;
import static org.chromium.net.truth.UrlResponseInfoSubject.assertThat;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assume.assumeTrue;
import android.net.Network;
import android.os.Build;
@@ -18,9 +20,11 @@ import android.os.ConditionVariable;
import android.os.Handler;
import android.os.Looper;
import android.os.Process;
+
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import com.android.testutils.SkipPresubmit;
+
import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
import org.json.JSONObject;
@@ -31,7 +35,6 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.Log;
-import org.chromium.base.FileUtils;
import org.chromium.base.PathUtils;
import org.chromium.base.test.util.DoNotBatch;
import org.chromium.net.CronetTestRule.CronetImplementation;
@@ -51,7 +54,6 @@ import org.chromium.net.impl.CronetUrlRequestContext;
import org.chromium.net.impl.ImplVersion;
import org.chromium.net.impl.NativeCronetEngineBuilderImpl;
import org.chromium.net.impl.NetworkExceptionImpl;
-import org.chromium.net.test.EmbeddedTestServer;
import java.io.BufferedReader;
import java.io.File;
@@ -82,11 +84,11 @@ public class CronetUrlRequestContextTest {
private String mUrl404;
private String mUrl500;
- @Before
- public void setUp() throws Exception {
- assertThat(NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext())).isTrue();
- mUrl = NativeTestServer.getSuccessURL();
- mUrl404 = NativeTestServer.getNotFoundURL();
+ @Before
+ public void setUp() throws Exception {
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
+ mUrl = NativeTestServer.getSuccessURL();
+ mUrl404 = NativeTestServer.getNotFoundURL();
mUrl500 = NativeTestServer.getServerErrorURL();
}
@@ -784,7 +786,7 @@ public class CronetUrlRequestContextTest {
assertThat(logFile.exists()).isTrue();
assertThat(logFile.length()).isNotEqualTo(0);
assertThat(hasBytesInNetLog(logFile)).isFalse();
- FileUtils.recursivelyDeleteFile(netLogDir, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir);
assertThat(netLogDir.exists()).isFalse();
}
@@ -845,12 +847,13 @@ public class CronetUrlRequestContextTest {
assertThat(logFile.exists()).isTrue();
assertThat(logFile.length()).isNotEqualTo(0);
- FileUtils.recursivelyDeleteFile(netLogDir, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir);
assertThat(netLogDir.exists()).isFalse();
}
@Test
@SmallTest
+ @SkipPresubmit(reason = "b/293141085 flaky test")
@IgnoreFor(
implementations = {CronetImplementation.AOSP_PLATFORM},
reason = "ActiveRequestCount is not available in AOSP")
@@ -1270,9 +1273,9 @@ public class CronetUrlRequestContextTest {
assertThat(containsStringInNetLog(logFile2, mUrl404)).isTrue();
assertThat(containsStringInNetLog(logFile2, mUrl500)).isTrue();
- FileUtils.recursivelyDeleteFile(netLogDir1, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir1);
assertThat(netLogDir1.exists()).isFalse();
- FileUtils.recursivelyDeleteFile(netLogDir2, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir2);
assertThat(netLogDir2.exists()).isFalse();
}
@@ -1295,7 +1298,10 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @SkipPresubmit(reason = "b/293141085 flaky test")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "Fallback implementation does not have a network thread.")
// Tests that if CronetEngine is shut down on the network thread, an appropriate exception
// is thrown.
public void testShutDownEngineOnNetworkThread() throws Exception {
@@ -1353,7 +1359,10 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @SkipPresubmit(reason = "b/293141085 flaky test")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "Fallback implementation has no support for caches")
// Tests that if CronetEngine is shut down when reading from disk cache,
// there isn't a crash. See crbug.com/486120.
public void testShutDownEngineWhenReadingFromDiskCache() throws Exception {
@@ -1452,7 +1461,7 @@ public class CronetUrlRequestContextTest {
netLogDir.getPath(), false, MAX_FILE_SIZE));
assertThat(e).hasMessageThat().isEqualTo("Engine is shut down.");
assertThat(logFile.exists()).isFalse();
- FileUtils.recursivelyDeleteFile(netLogDir, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir);
assertThat(netLogDir.exists()).isFalse();
}
@@ -1514,7 +1523,7 @@ public class CronetUrlRequestContextTest {
assertThat(logFile.exists()).isTrue();
assertThat(logFile.length()).isNotEqualTo(0);
assertThat(hasBytesInNetLog(logFile)).isFalse();
- FileUtils.recursivelyDeleteFile(netLogDir, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir);
assertThat(netLogDir.exists()).isFalse();
}
@@ -1578,7 +1587,7 @@ public class CronetUrlRequestContextTest {
assertThat(logFile.exists()).isTrue();
assertThat(logFile.length()).isNotEqualTo(0);
assertThat(hasBytesInNetLog(logFile)).isFalse();
- FileUtils.recursivelyDeleteFile(netLogDir, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir);
assertThat(netLogDir.exists()).isFalse();
}
@@ -1634,7 +1643,7 @@ public class CronetUrlRequestContextTest {
assertThat(logFile.exists()).isTrue();
assertThat(logFile.length()).isNotEqualTo(0);
assertThat(hasBytesInNetLog(logFile)).isTrue();
- FileUtils.recursivelyDeleteFile(netLogDir, FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(netLogDir);
assertThat(netLogDir.exists()).isFalse();
}
@@ -1724,7 +1733,9 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "No caches support for fallback implementation")
public void testEnableHttpCacheDisk() throws Exception {
CronetEngine cronetEngine =
createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK);
@@ -1738,7 +1749,10 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @SkipPresubmit(reason = "b/293141085 flaky test")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "No caches support for fallback implementation")
public void testNoConcurrentDiskUsage() throws Exception {
CronetEngine cronetEngine =
createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK);
@@ -1759,7 +1773,10 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @SkipPresubmit(reason = "b/293141085 flaky test")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "No caches support for fallback implementation")
public void testEnableHttpCacheDiskNoHttp() throws Exception {
CronetEngine cronetEngine =
createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP);
@@ -1780,7 +1797,9 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "No caches support for fallback implementation")
public void testDisableCache() throws Exception {
CronetEngine cronetEngine =
createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK);
@@ -1819,7 +1838,9 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
- @SkipPresubmit(reason = "b/293141085 Tests that enable disk cache are flaky")
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK},
+ reason = "No caches support for fallback implementation")
public void testEnableHttpCacheDiskNewEngine() throws Exception {
CronetEngine cronetEngine =
createCronetEngineWithCache(CronetEngine.Builder.HTTP_CACHE_DISK);
@@ -2041,6 +2062,9 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK, CronetImplementation.AOSP_PLATFORM},
+ reason = "LibraryLoader is supported only by the native implementation")
public void testSetLibraryLoaderIsEnforcedByDefaultEmbeddedProvider() throws Exception {
CronetEngine.Builder builder =
new CronetEngine.Builder(mTestRule.getTestFramework().getContext());
@@ -2061,6 +2085,9 @@ public class CronetUrlRequestContextTest {
@Test
@SmallTest
+ @IgnoreFor(
+ implementations = {CronetImplementation.FALLBACK, CronetImplementation.AOSP_PLATFORM},
+ reason = "LibraryLoader is supported only by the native implementation")
public void testSetLibraryLoaderIsIgnoredInNativeCronetEngineBuilderImpl() throws Exception {
CronetEngine.Builder builder =
new CronetEngine.Builder(
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
index 876921d02..c32681ab4 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java
@@ -25,7 +25,6 @@ import androidx.test.filters.SmallTest;
import org.jni_zero.NativeMethods;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -1016,47 +1015,6 @@ public class CronetUrlRequestTest {
assertThat(callback.mResponseStep).isEqualTo(ResponseStep.ON_FAILED);
}
- /**
- * Tests that an SSL cert error with upload will be reported via {@link
- * UrlRequest.Callback#onFailed}.
- */
- @Test
- @SmallTest
- @Ignore ("b/267353182 "
- + "Figure out why EmbeddedTestServer was used instead of MockUrlForSSLCertificateError"
- + "since this is similar test to one above")
- @IgnoreFor(
- implementations = {CronetImplementation.FALLBACK},
- reason = "crbug.com/1495320: Refactor error checking")
- public void testSSLCertificateError() throws Exception {
- // EmbeddedTestServer sslServer = EmbeddedTestServer.createAndStartHTTPSServer(
- // mTestRule.getTestFramework().getContext(), ServerCertificate.CERT_EXPIRED);
-
- TestUrlRequestCallback callback = new TestUrlRequestCallback();
- UrlRequest.Builder builder = mTestRule.getTestFramework().getEngine().newUrlRequestBuilder(
- /* sslServer.getURL("/") */ null, callback, callback.getExecutor());
-
- TestUploadDataProvider dataProvider =
- new TestUploadDataProvider(
- TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExecutor());
- dataProvider.addRead("test".getBytes());
- builder.setUploadDataProvider(dataProvider, callback.getExecutor());
- builder.addHeader("Content-Type", "useless/string");
- builder.build().start();
- callback.blockForDone();
- dataProvider.assertClosed();
-
- assertThat(callback.getResponseInfo()).isNull();
- assertThat(callback.mOnErrorCalled).isTrue();
- assertThat(callback.mError)
- .hasMessageThat()
- .contains("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID");
- mTestRule.assertCronetInternalErrorCode((NetworkException) callback.mError, -201);
- assertThat(callback.mResponseStep).isEqualTo(ResponseStep.ON_FAILED);
-
- // sslServer.stopAndDestroyServer();
- }
-
/** Checks that the buffer is updated correctly, when starting at an offset. */
@Test
@SmallTest
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java
index d971d4f22..98dde3a68 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/DiskStorageTest.java
@@ -13,7 +13,6 @@ import static org.chromium.net.truth.UrlResponseInfoSubject.assertThat;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-
import com.android.testutils.SkipPresubmit;
import org.junit.After;
@@ -22,7 +21,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.chromium.base.FileUtils;
import org.chromium.base.PathUtils;
import org.chromium.base.test.util.DoNotBatch;
import org.chromium.net.CronetTestRule.CronetImplementation;
@@ -57,7 +55,7 @@ public class DiskStorageTest {
@After
public void tearDown() throws Exception {
if (mReadOnlyStoragePath != null) {
- FileUtils.recursivelyDeleteFile(new File(mReadOnlyStoragePath), FileUtils.DELETE_ALL);
+ FileUtils.recursivelyDeleteFile(new File(mReadOnlyStoragePath));
}
NativeTestServer.shutdownNativeTestServer();
}
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 01a63a591..1dc8ad69f 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
@@ -21,13 +21,11 @@ import androidx.test.filters.MediumTest;
import com.android.testutils.SkipPresubmit;
-import org.json.JSONException;
import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
import org.json.JSONObject;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -96,7 +94,6 @@ public class ExperimentalOptionsTest {
@Test
@MediumTest
- @Ignore("b/275345637 Needs HTTP2 Server")
@DisableAutomaticNetLog(reason = "Test is targeting NetLog")
// Tests that NetLog writes effective experimental options to NetLog.
public void testNetLog() throws Exception {
@@ -158,7 +155,6 @@ public class ExperimentalOptionsTest {
@Test
@MediumTest
- @Ignore("b/275345637 Needs HTTP2 Server")
public void testSetSSLKeyLogFile() throws Exception {
String url = Http2TestServer.getEchoMethodUrl();
File dir = new File(PathUtils.getDataDirectory());
@@ -234,9 +230,9 @@ public class ExperimentalOptionsTest {
// Tests that basic Cronet functionality works when host cache persistence is enabled, and that
// persistence works.
public void testHostCachePersistence() throws Exception {
- assertThat(NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext())).isTrue();
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
- String realUrl = NativeTestServer.getSuccessURL();
+ String realUrl = NativeTestServer.getFileURL("/echo?status=200");
URL javaUrl = new URL(realUrl);
String realHost = javaUrl.getHost();
int realPort = javaUrl.getPort();
@@ -316,7 +312,6 @@ public class ExperimentalOptionsTest {
@Test
@MediumTest
- @Ignore("b/275345637 Needs HTTP2 Server")
public void testDetectBrokenConnection() throws Exception {
String url = Http2TestServer.getEchoMethodUrl();
mTestRule
@@ -348,7 +343,6 @@ public class ExperimentalOptionsTest {
@DisabledTest(message = "crbug.com/1320725")
@Test
@LargeTest
- @Ignore("b/275345637 Needs HTTP2 Server")
public void testDetectBrokenConnectionOnNetworkFailure() throws Exception {
// HangingRequestUrl stops the server from replying until mHangingUrlLatch is opened,
// simulating a network failure between client and server.
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/Http2TestServer.java b/components/cronet/android/test/javatests/src/org/chromium/net/Http2TestServer.java
deleted file mode 100644
index 55c36010a..000000000
--- a/components/cronet/android/test/javatests/src/org/chromium/net/Http2TestServer.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.chromium.net;
-
-import android.content.Context;
-
-import java.io.File;
-import java.util.concurrent.CountDownLatch;
-
-
-/**
- * This is a STUB AOSP-only version of org.chromium.net.test.Http2TestServer. This will allow us
- * to not have comment out the tests but rather simply @Ignore them till we figure out what the
- * plan for a H2 server is.
- */
-public final class Http2TestServer {
-
- public static boolean shutdownHttp2TestServer() throws Exception {
- return true;
- }
-
- public static String getServerHost() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static int getServerPort() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static String getServerUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static ReportingCollector getReportingCollector() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static String getEchoAllHeadersUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static String getEchoHeaderUrl(String headerName) {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static String getEchoMethodUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * When using this you must provide a CountDownLatch in the call to startHttp2TestServer.
- * The request handler will continue to hang until the provided CountDownLatch reaches 0.
- *
- * @return url of the server resource which will hang indefinitely.
- */
- public static String getHangingRequestUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * @return url of the server resource which will echo every received stream data frame.
- */
- public static String getEchoStreamUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * @return url of the server resource which will echo request headers as response trailers.
- */
- public static String getEchoTrailersUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * @return url of a brotli-encoded server resource.
- */
- public static String getServeSimpleBrotliResponse() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * @return url of the reporting collector
- */
- public static String getReportingCollectorUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * @return url of a resource that includes Reporting and NEL policy headers in its response
- */
- public static String getSuccessWithNELHeadersUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- /**
- * @return url of a resource that sends response headers with the same key
- */
- public static String getCombinedHeadersUrl() {
- throw new UnsupportedOperationException("This is a stub class");
- }
-
- public static boolean startHttp2TestServer(Context context) throws Exception {
- return true;
- }
-
- public static boolean startHttp2TestServer(Context context, CountDownLatch hangingUrlLatch)
- throws Exception {
- return true;
- }
-
- private Http2TestServer() {
- }
-
- private static class ReportingCollector {
- }
-}
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 1e490a7cb..2407da5f2 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
@@ -18,7 +18,6 @@ import androidx.test.filters.SmallTest;
import org.json.JSONObject;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -57,8 +56,8 @@ public class NQETest {
@Before
public void setUp() throws Exception {
- assertThat(NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext())).isTrue();
- mUrl = NativeTestServer.getSuccessURL();
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
+ mUrl = NativeTestServer.getFileURL("/echo?status=200");
}
@After
@@ -277,7 +276,6 @@ public class NQETest {
@Test
@SmallTest
- @Ignore("b/267353182 Permission denied error")
public void testPrefsWriteRead() throws Exception {
// When the loop is run for the first time, network quality is written to the disk. The
// test verifies that in the next loop, the network quality is read back.
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
index b8d7442a7..2f2959e63 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/QuicTest.java
@@ -13,7 +13,6 @@ import static org.chromium.net.truth.UrlResponseInfoSubject.assertThat;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import androidx.test.filters.SmallTest;
-
import com.android.testutils.SkipPresubmit;
import org.json.JSONObject;
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
index 1b0b0fd77..b0b4f6aea 100644
--- a/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
+++ b/components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java
@@ -68,8 +68,8 @@ public class RequestFinishedInfoTest {
@Before
public void setUp() throws Exception {
- assertThat(NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext())).isTrue();
- mUrl = NativeTestServer.getSuccessURL();
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
+ mUrl = NativeTestServer.getFileURL("/echo?status=200");
}
@After
diff --git a/components/cronet/android/test/mock_cert_verifier.cc b/components/cronet/android/test/mock_cert_verifier.cc
index 3fac267cd..21558fb00 100644
--- a/components/cronet/android/test/mock_cert_verifier.cc
+++ b/components/cronet/android/test/mock_cert_verifier.cc
@@ -62,7 +62,7 @@ static jlong JNI_MockCertVerifier_CreateMockCertVerifier(
for (const auto& cert : certs) {
net::CertVerifyResult verify_result;
verify_result.verified_cert =
- net::ImportCertFromFile(test_data_dir, cert);
+ net::ImportCertFromFile(net::GetTestCertsDirectory(), cert);
// By default, HPKP verification is enabled for known trust roots only.
verify_result.is_issued_by_known_root = jknown_root;
diff --git a/components/cronet/android/test/native_test_server.cc b/components/cronet/android/test/native_test_server.cc
index 157ab0239..e18cbecee 100644
--- a/components/cronet/android/test/native_test_server.cc
+++ b/components/cronet/android/test/native_test_server.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <jni.h>
+
#include <memory>
#include <string>
#include <utility>
@@ -12,6 +14,7 @@
#include "base/test/test_support_android.h"
#include "components/cronet/android/cronet_test_apk_jni/NativeTestServer_jni.h"
#include "components/cronet/testing/test_server/test_server.h"
+#include "net/test/embedded_test_server/embedded_test_server.h"
using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
@@ -21,14 +24,21 @@ namespace cronet {
jboolean JNI_NativeTestServer_StartNativeTestServer(
JNIEnv* env,
const JavaParamRef<jstring>& jtest_files_root,
- const JavaParamRef<jstring>& jtest_data_dir) {
+ const JavaParamRef<jstring>& jtest_data_dir,
+ jboolean juse_https,
+ jint jserver_certificate) {
base::FilePath test_data_dir(
base::android::ConvertJavaStringToUTF8(env, jtest_data_dir));
base::InitAndroidTestPaths(test_data_dir);
base::FilePath test_files_root(
base::android::ConvertJavaStringToUTF8(env, jtest_files_root));
- return cronet::TestServer::StartServeFilesFromDirectory(test_files_root);
+ return cronet::TestServer::StartServeFilesFromDirectory(
+ test_files_root,
+ (juse_https ? net::test_server::EmbeddedTestServer::TYPE_HTTPS
+ : net::test_server::EmbeddedTestServer::TYPE_HTTP),
+ static_cast<net::EmbeddedTestServer::ServerCertificate>(
+ jserver_certificate));
}
void JNI_NativeTestServer_ShutdownNativeTestServer(JNIEnv* env) {
diff --git a/components/cronet/android/test/proguard.cfg b/components/cronet/android/test/proguard.cfg
index 5df6efe76..797504ab4 100644
--- a/components/cronet/android/test/proguard.cfg
+++ b/components/cronet/android/test/proguard.cfg
@@ -11,6 +11,10 @@
# https://android.googlesource.com/platform/sdk/+/marshmallow-mr1-release/files/proguard-android.txt#54
-dontwarn android.support.**
+# Do not obfuscate this class for testing since some of the tests check the class
+# name in order to check that an instantiated engine is the Java one.
+-keepnames class org.chromium.net.impl.JavaCronetEngine
+
# These classes should be explicitly kept to avoid failure if
# class/merging/horizontal proguard optimization is enabled.
# NOTE: make sure that only test classes are added to this list.
diff --git a/components/cronet/android/test/quic_test_server.cc b/components/cronet/android/test/quic_test_server.cc
index d0c65cb9e..6e6a0daa7 100644
--- a/components/cronet/android/test/quic_test_server.cc
+++ b/components/cronet/android/test/quic_test_server.cc
@@ -71,12 +71,12 @@ void StartOnServerThread(const base::FilePath& test_files_root,
quic::QuicConfig config;
// Set up server certs.
+ base::FilePath directory = test_data_dir.Append("net/data/ssl/certificates");
std::unique_ptr<net::ProofSourceChromium> proof_source(
new net::ProofSourceChromium());
- CHECK(proof_source->Initialize(
- test_data_dir.Append("quic-chain.pem"),
- test_data_dir.Append("quic-leaf-cert.key"),
- base::FilePath()));
+ CHECK(proof_source->Initialize(directory.Append("quic-chain.pem"),
+ directory.Append("quic-leaf-cert.key"),
+ base::FilePath()));
g_quic_server = std::make_unique<net::QuicSimpleServer>(
std::move(proof_source), config,
quic::QuicCryptoServerConfig::ConfigOptions(),
diff --git a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java
index 9701ac50a..fcebecd0f 100644
--- a/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java
+++ b/components/cronet/android/test/smoketests/src/org/chromium/net/smoke/MissingNativeLibraryTest.java
@@ -19,6 +19,7 @@ import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.chromium.net.CronetEngine;
+import org.chromium.net.CronetProvider;
import org.chromium.net.ExperimentalCronetEngine;
import java.util.List;
diff --git a/components/cronet/android/test/src/org/chromium/net/CronetTestUtil.java b/components/cronet/android/test/src/org/chromium/net/CronetTestUtil.java
index 20225d81a..c85e3a359 100644
--- a/components/cronet/android/test/src/org/chromium/net/CronetTestUtil.java
+++ b/components/cronet/android/test/src/org/chromium/net/CronetTestUtil.java
@@ -5,8 +5,6 @@
package org.chromium.net;
import android.net.Network;
-import org.chromium.net.CronetEngine;
-import org.chromium.net.UrlRequest;
import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
@@ -92,11 +90,11 @@ public class CronetTestUtil {
}
public static void setMockCertVerifierForTesting(
- ExperimentalCronetEngine.Builder builder, long mockCertVerifier) {
+ ExperimentalCronetEngine.Builder builder, long mockCertVerifier) {
getCronetEngineBuilderImpl(builder).setMockCertVerifierForTesting(mockCertVerifier);
}
- public static CronetEngineBuilderImpl getCronetEngineBuilderImpl(
+ static CronetEngineBuilderImpl getCronetEngineBuilderImpl(
ExperimentalCronetEngine.Builder builder) {
return (CronetEngineBuilderImpl) ((ExperimentalOptionsTranslatingCronetEngineBuilder)
builder.getBuilderDelegate())
diff --git a/components/cronet/android/test/src/org/chromium/net/MockCertVerifier.java b/components/cronet/android/test/src/org/chromium/net/MockCertVerifier.java
index 80ae37f12..307ec81a5 100644
--- a/components/cronet/android/test/src/org/chromium/net/MockCertVerifier.java
+++ b/components/cronet/android/test/src/org/chromium/net/MockCertVerifier.java
@@ -7,7 +7,6 @@ package org.chromium.net;
import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
-import org.chromium.base.ContextUtils;
import org.chromium.base.test.util.UrlUtils;
/**
@@ -26,8 +25,8 @@ public class MockCertVerifier {
* @return a pointer to the newly created net::MockCertVerifier.
*/
public static long createMockCertVerifier(String[] certs, boolean knownRoot) {
- return MockCertVerifierJni.get().createMockCertVerifier(certs, knownRoot,
- TestFilesInstaller.getInstalledPath(ContextUtils.getApplicationContext()));
+ return MockCertVerifierJni.get().createMockCertVerifier(
+ certs, knownRoot, UrlUtils.getIsolatedTestRoot());
}
/**
@@ -40,7 +39,7 @@ public class MockCertVerifier {
}
@NativeMethods("cronet_tests")
- public interface Natives {
+ interface Natives {
long createMockCertVerifier(String[] certs, boolean knownRoot, String testDataDir);
long createFreeForAllMockCertVerifier();
}
diff --git a/components/cronet/android/test/src/org/chromium/net/MockUrlRequestJobFactory.java b/components/cronet/android/test/src/org/chromium/net/MockUrlRequestJobFactory.java
index 00d3feb4f..935ece42f 100644
--- a/components/cronet/android/test/src/org/chromium/net/MockUrlRequestJobFactory.java
+++ b/components/cronet/android/test/src/org/chromium/net/MockUrlRequestJobFactory.java
@@ -93,7 +93,7 @@ public final class MockUrlRequestJobFactory {
}
@NativeMethods("cronet_tests")
- public interface Natives {
+ interface Natives {
long addUrlInterceptors(long requestContextAdapter);
void removeUrlInterceptorJobFactory(long interceptorHandle);
String getMockUrlWithFailure(int phase, int netError);
diff --git a/components/cronet/android/test/src/org/chromium/net/NativeTestServer.java b/components/cronet/android/test/src/org/chromium/net/NativeTestServer.java
index 2c1301612..4723ac8d4 100644
--- a/components/cronet/android/test/src/org/chromium/net/NativeTestServer.java
+++ b/components/cronet/android/test/src/org/chromium/net/NativeTestServer.java
@@ -10,10 +10,12 @@ import org.jni_zero.JNINamespace;
import org.jni_zero.NativeMethods;
import org.chromium.base.test.util.UrlUtils;
+import org.chromium.net.test.ServerCertificate;
/**
- * Wrapper class to start an in-process native test server, and get URLs
- * needed to talk to it.
+ * Wrapper class to start an in-process native test server, and get URLs needed to talk to it.
+ *
+ * <p>NativeTestServer only supports HTTP/1.
*/
@JNINamespace("cronet")
public final class NativeTestServer {
@@ -23,7 +25,21 @@ public final class NativeTestServer {
public static boolean startNativeTestServer(Context context) {
TestFilesInstaller.installIfNeeded(context);
return NativeTestServerJni.get().startNativeTestServer(
- TestFilesInstaller.getInstalledPath(context), UrlUtils.getIsolatedTestRoot());
+ TestFilesInstaller.getInstalledPath(context),
+ UrlUtils.getIsolatedTestRoot(),
+ false, // useHttps
+ ServerCertificate.CERT_OK);
+ }
+
+ public static boolean startNativeTestServerWithHTTPS(
+ Context context, @ServerCertificate int serverCertificate) {
+ TestFilesInstaller.installIfNeeded(context);
+ return NativeTestServerJni.get()
+ .startNativeTestServer(
+ TestFilesInstaller.getInstalledPath(context),
+ UrlUtils.getIsolatedTestRoot(),
+ true, // useHttps
+ serverCertificate);
}
public static void shutdownNativeTestServer() {
@@ -92,7 +108,11 @@ public final class NativeTestServer {
@NativeMethods("cronet_tests")
interface Natives {
- boolean startNativeTestServer(String filePath, String testDataDir);
+ boolean startNativeTestServer(
+ String filePath,
+ String testDataDir,
+ boolean useHttps,
+ @ServerCertificate int certificate);
void shutdownNativeTestServer();
String getEchoBodyURL();
String getEchoHeaderURL(String header);
diff --git a/components/cronet/android/test/src/org/chromium/net/QuicTestServer.java b/components/cronet/android/test/src/org/chromium/net/QuicTestServer.java
index 3e60d8a17..fd6e6fe5e 100644
--- a/components/cronet/android/test/src/org/chromium/net/QuicTestServer.java
+++ b/components/cronet/android/test/src/org/chromium/net/QuicTestServer.java
@@ -33,10 +33,8 @@ public final class QuicTestServer {
throw new IllegalStateException("Quic server is already running");
}
TestFilesInstaller.installIfNeeded(context);
- String test_dir = TestFilesInstaller.getInstalledPath(context);
- // TestFilesInstaller implementation changed such that the test files and test data dir
- // are now the same. See aosp/2475670
- QuicTestServerJni.get().startQuicTestServer(test_dir, test_dir);
+ QuicTestServerJni.get().startQuicTestServer(
+ TestFilesInstaller.getInstalledPath(context), UrlUtils.getIsolatedTestRoot());
sServerRunning = true;
}
diff --git a/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java b/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
index 1e65dd5b1..42270824b 100644
--- a/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
+++ b/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
@@ -5,71 +5,29 @@
package org.chromium.net;
import android.content.Context;
-import android.content.res.AssetManager;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Files;
-import java.nio.file.StandardCopyOption;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Queue;
+
+import org.chromium.base.test.util.UrlUtils;
/**
- * Helper class to install test files. This moves the files to an accessible storage directory.
+ * Helper class to install test files.
*/
public final class TestFilesInstaller {
- private static final String INSTALLED_PATH_SUFFIX = "cronet_test_data";
+ // Name of the asset directory in which test files are stored.
+ private static final String TEST_FILE_ASSET_PATH = "components/cronet/testing/test_server/data";
/**
* Installs test files if files have not been installed.
*/
public static void installIfNeeded(Context context) {
- File testDataDir = new File(context.getCacheDir(), INSTALLED_PATH_SUFFIX);
-
- if (testDataDir.exists()) {
- return;
- }
-
- AssetManager assets = context.getAssets();
- try {
- for (String assetPath : listAllAssets(assets)) {
- File copiedAssetFile = new File(testDataDir, assetPath);
- copiedAssetFile.getParentFile().mkdirs();
- try (InputStream inputStream = assets.open(assetPath)) {
- Files.copy(inputStream, copiedAssetFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
- }
- }
- } catch (IOException e) {
- throw new AssertionError("Failed to copy test files", e);
- }
+ // Do nothing.
+ // NOTE(pauljensen): This hook is used (overridden) when tests are run in other
+ // configurations, so it should not be removed.
}
/**
* Returns the installed path of the test files.
*/
public static String getInstalledPath(Context context) {
- return new File(context.getCacheDir(), INSTALLED_PATH_SUFFIX).getAbsolutePath();
- }
-
- private static List<String> listAllAssets(AssetManager assets) throws IOException {
- Queue<String> toProcess = new ArrayDeque<>();
- toProcess.add("");
- List<String> result = new ArrayList<>();
- while (!toProcess.isEmpty()) {
- String parent = toProcess.remove();
- String[] children = assets.list(parent);
- if (children.length > 0) {
- // It's a folder
- for (String child : children) {
- toProcess.add(new File(parent, child).toString());
- }
- } else if (!parent.isEmpty()) {
- // It's a file
- result.add(parent);
- } // Else it's the empty root folder, in which case do nothing
- }
- return result;
+ return UrlUtils.getIsolatedTestRoot() + "/" + TEST_FILE_ASSET_PATH;
}
}
diff --git a/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java b/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java
index 2c166f53d..5010d4c94 100644
--- a/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java
+++ b/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java
@@ -7,7 +7,6 @@ package org.chromium.net;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
-import org.chromium.net.CronetEngine;
import android.os.ConditionVariable;
import org.jni_zero.CalledByNative;
diff --git a/components/cronet/testing/test_server/data/server_error.txt.mock-http-headers b/components/cronet/testing/test_server/data/server_error.txt.mock-http-headers
index 472aa4b9b..23bb3abed 100644
--- a/components/cronet/testing/test_server/data/server_error.txt.mock-http-headers
+++ b/components/cronet/testing/test_server/data/server_error.txt.mock-http-headers
@@ -1 +1 @@
-HTTP/1.1 500 INTERNAL SERVER ERROR
+HTTP/1.1 500 INTERNAL SERVER ERROR \ No newline at end of file
diff --git a/components/cronet/testing/test_server/test_server.cc b/components/cronet/testing/test_server/test_server.cc
index 6fbe746eb..113b7955c 100644
--- a/components/cronet/testing/test_server/test_server.cc
+++ b/components/cronet/testing/test_server/test_server.cc
@@ -170,17 +170,19 @@ namespace cronet {
/* static */
bool TestServer::StartServeFilesFromDirectory(
- const base::FilePath& test_files_root) {
+ const base::FilePath& test_files_root,
+ net::EmbeddedTestServer::Type server_type,
+ net::EmbeddedTestServer::ServerCertificate server_certificate) {
// Shouldn't happen.
if (g_test_server)
return false;
- g_test_server = std::make_unique<net::EmbeddedTestServer>(
- net::EmbeddedTestServer::TYPE_HTTP);
+ g_test_server = std::make_unique<net::EmbeddedTestServer>(server_type);
g_test_server->RegisterRequestHandler(
base::BindRepeating(&CronetTestRequestHandler));
g_test_server->ServeFilesFromDirectory(test_files_root);
net::test_server::RegisterDefaultHandlers(g_test_server.get());
+ g_test_server->SetSSLConfig(server_certificate);
CHECK(g_test_server->Start());
return true;
}
@@ -189,7 +191,10 @@ bool TestServer::StartServeFilesFromDirectory(
bool TestServer::Start() {
base::FilePath src_root;
CHECK(base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, &src_root));
- return StartServeFilesFromDirectory(src_root.Append(kTestDataRelativePath));
+ return StartServeFilesFromDirectory(
+ src_root.Append(kTestDataRelativePath),
+ net::test_server::EmbeddedTestServer::TYPE_HTTP,
+ net::test_server::EmbeddedTestServer::CERT_OK);
}
/* static */
diff --git a/components/cronet/testing/test_server/test_server.h b/components/cronet/testing/test_server/test_server.h
index 82a74acd6..cd4d3635b 100644
--- a/components/cronet/testing/test_server/test_server.h
+++ b/components/cronet/testing/test_server/test_server.h
@@ -7,6 +7,8 @@
#include <string>
+#include "net/test/embedded_test_server/embedded_test_server.h"
+
namespace base {
class FilePath;
} // namespace base
@@ -17,11 +19,18 @@ class TestServer {
public:
// Starts the server serving files from default test data directory.
// Returns true if started, false if server is already running.
+ // This will run the server in default mode (HTTP/1 with no SSL)
static bool Start();
+
// Starts the server serving files from |test_files_root| directory.
// Returns true if started, false if server is already running.
+ // The provided server will support either HTTP/1 or HTTPS/1 depending
+ // on the |type| provided.
static bool StartServeFilesFromDirectory(
- const base::FilePath& test_files_root);
+ const base::FilePath& test_files_root,
+ net::EmbeddedTestServer::Type type,
+ net::EmbeddedTestServer::ServerCertificate cert);
+
// Shuts down the server.
static void Shutdown();