summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohannad Farrag <aymanm@google.com>2024-01-16 11:19:54 +0000
committerMohannad Farrag <aymanm@google.com>2024-01-17 19:08:44 +0000
commit34b3ec101cb50ce6f2dcf61a8aa3bd2d1e66f9a3 (patch)
tree83e71be75aa49acde72ce540d2f736be3a2c9491
parent85df65e544adb55193339418571fab7bd3fbf911 (diff)
downloadcronet-34b3ec101cb50ce6f2dcf61a8aa3bd2d1e66f9a3.tar.gz
Apply crrev/c/5177031
Bug: 304217500 Change-Id: Ib74b816862f4f853b3aeffdb9f1647c11ed3f00f
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java13
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java45
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java7
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/NQETest.java9
-rw-r--r--components/cronet/android/test/javatests/src/org/chromium/net/RequestFinishedInfoTest.java9
-rw-r--r--components/cronet/android/test/native_test_server.cc14
-rw-r--r--components/cronet/android/test/src/org/chromium/net/NativeTestServer.java28
-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
10 files changed, 70 insertions, 81 deletions
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 94e7dd090..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
@@ -54,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;
@@ -81,23 +80,21 @@ public class CronetUrlRequestContextTest {
private static final String MOCK_CRONET_TEST_SUCCESS_URL = "http://mock.http/success.txt";
private static final int MAX_FILE_SIZE = 1000000000;
- private EmbeddedTestServer mTestServer;
private String mUrl;
private String mUrl404;
private String mUrl500;
@Before
public void setUp() throws Exception {
- mTestServer =
- EmbeddedTestServer.createAndStartServer(mTestRule.getTestFramework().getContext());
- mUrl = mTestServer.getURL("/echo?status=200");
- mUrl404 = mTestServer.getURL("/echo?status=404");
- mUrl500 = mTestServer.getURL("/echo?status=500");
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
+ mUrl = NativeTestServer.getSuccessURL();
+ mUrl404 = NativeTestServer.getNotFoundURL();
+ mUrl500 = NativeTestServer.getServerErrorURL();
}
@After
public void tearDown() throws Exception {
- mTestServer.stopAndDestroyServer();
+ NativeTestServer.shutdownNativeTestServer();
}
class RequestThread extends Thread {
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 1bcb2fc6e..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
@@ -42,9 +42,7 @@ import org.chromium.net.apihelpers.UploadDataProviders;
import org.chromium.net.impl.CronetUrlRequest;
import org.chromium.net.impl.NetworkExceptionImpl;
import org.chromium.net.impl.UrlResponseInfoImpl;
-import org.chromium.net.test.EmbeddedTestServer;
import org.chromium.net.test.FailurePhase;
-import org.chromium.net.test.ServerCertificate;
import java.io.IOException;
import java.net.ConnectException;
@@ -1017,49 +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
- @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("/"), 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/ExperimentalOptionsTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/ExperimentalOptionsTest.java
index 6e0ae498b..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
@@ -39,7 +39,6 @@ import org.chromium.net.CronetTestRule.CronetImplementation;
import org.chromium.net.CronetTestRule.DisableAutomaticNetLog;
import org.chromium.net.CronetTestRule.IgnoreFor;
import org.chromium.net.impl.CronetUrlRequestContext;
-import org.chromium.net.test.EmbeddedTestServer;
import java.io.File;
import java.io.FileInputStream;
@@ -231,10 +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 {
- EmbeddedTestServer testServer =
- EmbeddedTestServer.createAndStartServer(mTestRule.getTestFramework().getContext());
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
- String realUrl = testServer.getURL("/echo?status=200");
+ String realUrl = NativeTestServer.getFileURL("/echo?status=200");
URL javaUrl = new URL(realUrl);
String realHost = javaUrl.getHost();
int realPort = javaUrl.getPort();
@@ -286,6 +284,7 @@ public class ExperimentalOptionsTest {
callback.blockForDone();
assertThat(callback.getResponseInfoWithChecks()).hasHttpStatusCodeThat().isEqualTo(200);
context.shutdown();
+ NativeTestServer.shutdownNativeTestServer();
}
@Test
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 7710ecad2..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
@@ -29,7 +29,6 @@ import org.chromium.base.test.util.HistogramWatcher;
import org.chromium.net.CronetTestRule.CronetImplementation;
import org.chromium.net.CronetTestRule.IgnoreFor;
import org.chromium.net.MetricsTestUtil.TestExecutor;
-import org.chromium.net.test.EmbeddedTestServer;
import java.io.File;
import java.io.FileInputStream;
@@ -50,7 +49,6 @@ public class NQETest {
@Rule public final CronetTestRule mTestRule = CronetTestRule.withManualEngineStartup();
- private EmbeddedTestServer mTestServer;
private String mUrl;
// Thread on which network quality listeners should be notified.
@@ -58,14 +56,13 @@ public class NQETest {
@Before
public void setUp() throws Exception {
- mTestServer =
- EmbeddedTestServer.createAndStartServer(mTestRule.getTestFramework().getContext());
- mUrl = mTestServer.getURL("/echo?status=200");
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
+ mUrl = NativeTestServer.getFileURL("/echo?status=200");
}
@After
public void tearDown() throws Exception {
- mTestServer.stopAndDestroyServer();
+ NativeTestServer.shutdownNativeTestServer();
}
private class ExecutorThreadFactory implements ThreadFactory {
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 d55e8af3e..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
@@ -26,7 +26,6 @@ import org.chromium.net.CronetTestRule.IgnoreFor;
import org.chromium.net.CronetTestRule.RequiresMinApi;
import org.chromium.net.MetricsTestUtil.TestExecutor;
import org.chromium.net.impl.CronetMetrics;
-import org.chromium.net.test.EmbeddedTestServer;
import java.util.ArrayList;
import java.util.Date;
@@ -44,7 +43,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class RequestFinishedInfoTest {
@Rule public final CronetTestRule mTestRule = CronetTestRule.withAutomaticEngineStartup();
- private EmbeddedTestServer mTestServer;
private String mUrl;
// A subclass of TestRequestFinishedListener to additionally assert that UrlRequest.Callback's
@@ -70,14 +68,13 @@ public class RequestFinishedInfoTest {
@Before
public void setUp() throws Exception {
- mTestServer =
- EmbeddedTestServer.createAndStartServer(mTestRule.getTestFramework().getContext());
- mUrl = mTestServer.getURL("/echo?status=200");
+ NativeTestServer.startNativeTestServer(mTestRule.getTestFramework().getContext());
+ mUrl = NativeTestServer.getFileURL("/echo?status=200");
}
@After
public void tearDown() throws Exception {
- mTestServer.stopAndDestroyServer();
+ NativeTestServer.shutdownNativeTestServer();
}
static class DirectExecutor implements Executor {
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/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/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();