Commit a0e2d7ef authored by Lily Houghton's avatar Lily Houghton Committed by Commit Bot

Reland "Convert Chromedriver tests to use the HttpServer class from the network service."

This is a reland of 85765d50

Original change's description:
> Convert Chromedriver tests to use the HttpServer class from the network service.
>
> This refactors the chromedriver unit tests, particularly those in net_util_unittest,
> sync_websocket_unittest, and websocket_unittest, as well as the TestHttpServer class,
> to use the network service's HttpServer class (instead of the one in net/).
>
> Bug: 821000
> Change-Id: Icc4479b656936f38e86d104004d1dd703d845dda
> Reviewed-on: https://chromium-review.googlesource.com/1038544
> Commit-Queue: Lily Houghton <lilyhoughton@chromium.org>
> Reviewed-by: John Chen <johnchen@chromium.org>
> Reviewed-by: Helen Li <xunjieli@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#560310}

Bug: 821000,2433
Change-Id: I6ec7ac84b988f90a93c86c6eeecfb2d7ee53bad5
Reviewed-on: https://chromium-review.googlesource.com/1070349Reviewed-by: default avatarHelen Li <xunjieli@chromium.org>
Reviewed-by: default avatarJohn Chen <johnchen@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561858}
parent 6f6289e0
...@@ -424,6 +424,7 @@ test("chromedriver_tests") { ...@@ -424,6 +424,7 @@ test("chromedriver_tests") {
"net/test_http_server.cc", "net/test_http_server.cc",
"net/test_http_server.h", "net/test_http_server.h",
"net/websocket_unittest.cc", "net/websocket_unittest.cc",
"run_all_unittests.cc",
] ]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations. # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
...@@ -432,10 +433,12 @@ test("chromedriver_tests") { ...@@ -432,10 +433,12 @@ test("chromedriver_tests") {
deps = [ deps = [
":lib", ":lib",
"//base", "//base",
"//base/test:run_all_unittests", "//mojo/edk",
"//net", "//net",
"//net:http_server",
"//net:test_support", "//net:test_support",
"//services/network:network_service",
"//services/network/public/cpp",
"//services/network/public/mojom",
"//testing/gtest", "//testing/gtest",
"//ui/events:test_support", "//ui/events:test_support",
"//url", "//url",
......
...@@ -15,23 +15,27 @@ ...@@ -15,23 +15,27 @@
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/synchronization/waitable_event.h" #include "base/synchronization/waitable_event.h"
#include "base/test/bind_test_util.h"
#include "base/test/scoped_task_environment.h" #include "base/test/scoped_task_environment.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "chrome/test/chromedriver/net/url_request_context_getter.h" #include "chrome/test/chromedriver/net/url_request_context_getter.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "net/base/ip_endpoint.h" #include "net/base/ip_endpoint.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "net/log/net_log_source.h" #include "net/log/net_log_source.h"
#include "net/server/http_server.h"
#include "net/server/http_server_request_info.h"
#include "net/socket/tcp_server_socket.h" #include "net/socket/tcp_server_socket.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "net/url_request/url_request_context_getter.h" #include "net/url_request/url_request_context_getter.h"
#include "services/network/network_context.h"
#include "services/network/network_service.h"
#include "services/network/public/cpp/server/http_server.h"
#include "services/network/public/cpp/server/http_server_request_info.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace { namespace {
class FetchUrlTest : public testing::Test, class FetchUrlTest : public testing::Test,
public net::HttpServer::Delegate { public network::server::HttpServer::Delegate {
public: public:
FetchUrlTest() FetchUrlTest()
: io_thread_("io"), : io_thread_("io"),
...@@ -41,44 +45,79 @@ class FetchUrlTest : public testing::Test, ...@@ -41,44 +45,79 @@ class FetchUrlTest : public testing::Test,
base::Thread::Options options(base::MessageLoop::TYPE_IO, 0); base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
CHECK(io_thread_.StartWithOptions(options)); CHECK(io_thread_.StartWithOptions(options));
context_getter_ = new URLRequestContextGetter(io_thread_.task_runner()); context_getter_ = new URLRequestContextGetter(io_thread_.task_runner());
}
void StartOnServerThread(base::WaitableEvent* event) {
network_service_ = network::NetworkService::CreateForTesting();
network::mojom::NetworkContextParamsPtr context_params =
network::mojom::NetworkContextParams::New();
// Use a fixed proxy config, to avoid dependencies on local network
// configuration.
context_params->initial_proxy_config =
net::ProxyConfigWithAnnotation::CreateDirect();
network_context_ = std::make_unique<network::NetworkContext>(
network_service_.get(), mojo::MakeRequest(&network_context_ptr_),
std::move(context_params));
int net_error = net::ERR_FAILED;
base::Optional<net::IPEndPoint> local_address;
network::mojom::TCPServerSocketPtr server_socket;
base::RunLoop run_loop;
network_context_->CreateTCPServerSocket(
net::IPEndPoint(net::IPAddress::IPv6Localhost(), 0), 1 /* backlog */,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
mojo::MakeRequest(&server_socket),
base::BindLambdaForTesting(
[&](int result, const base::Optional<net::IPEndPoint>& local_addr) {
net_error = result;
local_address = local_addr;
run_loop.Quit();
}));
run_loop.Run();
EXPECT_EQ(net::OK, net_error);
server_url_ = base::StringPrintf("http://[::1]:%d", local_address->port());
server_.reset(
new network::server::HttpServer(std::move(server_socket), this));
event->Signal();
}
void StopOnServerThread(base::WaitableEvent* event) {
server_.reset(nullptr);
network_context_.reset(nullptr);
network_service_.reset(nullptr);
event->Signal();
}
void SetUp() override {
base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED); base::WaitableEvent::InitialState::NOT_SIGNALED);
io_thread_.task_runner()->PostTask( io_thread_.task_runner()->PostTask(
FROM_HERE, base::BindOnce(&FetchUrlTest::InitOnIO, FROM_HERE, base::BindOnce(&FetchUrlTest::StartOnServerThread,
base::Unretained(this), &event)); base::Unretained(this), &event));
event.Wait(); event.Wait();
} }
~FetchUrlTest() override { void TearDown() override {
if (!io_thread_.IsRunning())
return;
base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
base::WaitableEvent::InitialState::NOT_SIGNALED); base::WaitableEvent::InitialState::NOT_SIGNALED);
io_thread_.task_runner()->PostTask( io_thread_.task_runner()->PostTask(
FROM_HERE, base::BindOnce(&FetchUrlTest::DestroyServerOnIO, FROM_HERE, base::BindOnce(&FetchUrlTest::StopOnServerThread,
base::Unretained(this), &event)); base::Unretained(this), &event));
event.Wait(); event.Wait();
io_thread_.Stop();
} }
void InitOnIO(base::WaitableEvent* event) { // Overridden from network::server::HttpServer::Delegate:
std::unique_ptr<net::ServerSocket> server_socket(
new net::TCPServerSocket(NULL, net::NetLogSource()));
server_socket->ListenWithAddressAndPort("127.0.0.1", 0, 1);
server_.reset(new net::HttpServer(std::move(server_socket), this));
net::IPEndPoint address;
CHECK_EQ(net::OK, server_->GetLocalAddress(&address));
server_url_ = base::StringPrintf("http://127.0.0.1:%d", address.port());
event->Signal();
}
void DestroyServerOnIO(base::WaitableEvent* event) {
server_.reset(NULL);
event->Signal();
}
// Overridden from net::HttpServer::Delegate:
void OnConnect(int connection_id) override {} void OnConnect(int connection_id) override {}
void OnHttpRequest(int connection_id, void OnHttpRequest(
const net::HttpServerRequestInfo& info) override { int connection_id,
const network::server::HttpServerRequestInfo& info) override {
switch (response_) { switch (response_) {
case kSendHello: case kSendHello:
server_->Send200(connection_id, "hello", "text/plain", server_->Send200(connection_id, "hello", "text/plain",
...@@ -95,8 +134,9 @@ class FetchUrlTest : public testing::Test, ...@@ -95,8 +134,9 @@ class FetchUrlTest : public testing::Test,
} }
} }
void OnWebSocketRequest(int connection_id, void OnWebSocketRequest(
const net::HttpServerRequestInfo& info) override {} int connection_id,
const network::server::HttpServerRequestInfo& info) override {}
void OnWebSocketMessage(int connection_id, const std::string& data) override { void OnWebSocketMessage(int connection_id, const std::string& data) override {
} }
void OnClose(int connection_id) override {} void OnClose(int connection_id) override {}
...@@ -110,15 +150,20 @@ class FetchUrlTest : public testing::Test, ...@@ -110,15 +150,20 @@ class FetchUrlTest : public testing::Test,
base::Thread io_thread_; base::Thread io_thread_;
ServerResponse response_; ServerResponse response_;
std::unique_ptr<net::HttpServer> server_; std::unique_ptr<network::server::HttpServer> server_;
base::test::ScopedTaskEnvironment scoped_task_environment_;
std::unique_ptr<network::NetworkService> network_service_;
std::unique_ptr<network::NetworkContext> network_context_;
network::mojom::NetworkContextPtr network_context_ptr_;
scoped_refptr<URLRequestContextGetter> context_getter_; scoped_refptr<URLRequestContextGetter> context_getter_;
std::string server_url_; std::string server_url_;
base::test::ScopedTaskEnvironment scoped_task_environment_;
}; };
} // namespace } // namespace
TEST_F(FetchUrlTest, Http200) { TEST_F(FetchUrlTest, Http200) {
response_ = kSendHello;
std::string response("stuff"); std::string response("stuff");
ASSERT_TRUE(FetchUrl(server_url_, context_getter_.get(), &response)); ASSERT_TRUE(FetchUrl(server_url_, context_getter_.get(), &response));
ASSERT_STREQ("hello", response.c_str()); ASSERT_STREQ("hello", response.c_str());
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "base/test/scoped_task_environment.h"
#include "base/threading/platform_thread.h" #include "base/threading/platform_thread.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "base/time/time.h" #include "base/time/time.h"
...@@ -23,7 +24,9 @@ namespace { ...@@ -23,7 +24,9 @@ namespace {
class SyncWebSocketImplTest : public testing::Test { class SyncWebSocketImplTest : public testing::Test {
protected: protected:
SyncWebSocketImplTest() SyncWebSocketImplTest()
: client_thread_("ClientThread"), : task_environment_(
base::test::ScopedTaskEnvironment::MainThreadType::IO),
client_thread_("ClientThread"),
long_timeout_(base::TimeDelta::FromMinutes(1)) {} long_timeout_(base::TimeDelta::FromMinutes(1)) {}
~SyncWebSocketImplTest() override {} ~SyncWebSocketImplTest() override {}
...@@ -38,6 +41,7 @@ class SyncWebSocketImplTest : public testing::Test { ...@@ -38,6 +41,7 @@ class SyncWebSocketImplTest : public testing::Test {
Timeout long_timeout() const { return Timeout(long_timeout_); } Timeout long_timeout() const { return Timeout(long_timeout_); }
base::test::ScopedTaskEnvironment task_environment_;
base::Thread client_thread_; base::Thread client_thread_;
TestHttpServer server_; TestHttpServer server_;
scoped_refptr<URLRequestContextGetter> context_getter_; scoped_refptr<URLRequestContextGetter> context_getter_;
......
...@@ -10,15 +10,18 @@ ...@@ -10,15 +10,18 @@
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
#include "base/location.h" #include "base/location.h"
#include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
#include "base/test/bind_test_util.h"
#include "base/test/scoped_task_environment.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "net/base/ip_endpoint.h" #include "net/base/ip_endpoint.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "net/log/net_log_source.h" #include "net/log/net_log_source.h"
#include "net/server/http_server_request_info.h"
#include "net/socket/tcp_server_socket.h" #include "net/socket/tcp_server_socket.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "services/network/network_context.h"
#include "services/network/network_service.h"
#include "services/network/public/cpp/server/http_server_request_info.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
const int kBufferSize = 100 * 1024 * 1024; // 100 MB const int kBufferSize = 100 * 1024 * 1024; // 100 MB
...@@ -92,7 +95,7 @@ void TestHttpServer::OnConnect(int connection_id) { ...@@ -92,7 +95,7 @@ void TestHttpServer::OnConnect(int connection_id) {
void TestHttpServer::OnWebSocketRequest( void TestHttpServer::OnWebSocketRequest(
int connection_id, int connection_id,
const net::HttpServerRequestInfo& info) { const network::server::HttpServerRequestInfo& info) {
WebSocketRequestAction action; WebSocketRequestAction action;
{ {
base::AutoLock lock(action_lock_); base::AutoLock lock(action_lock_);
...@@ -145,26 +148,53 @@ void TestHttpServer::OnClose(int connection_id) { ...@@ -145,26 +148,53 @@ void TestHttpServer::OnClose(int connection_id) {
void TestHttpServer::StartOnServerThread(bool* success, void TestHttpServer::StartOnServerThread(bool* success,
base::WaitableEvent* event) { base::WaitableEvent* event) {
std::unique_ptr<net::ServerSocket> server_socket( network_service_ = network::NetworkService::CreateForTesting();
new net::TCPServerSocket(NULL, net::NetLogSource()));
server_socket->ListenWithAddressAndPort("127.0.0.1", 0, 1);
server_.reset(new net::HttpServer(std::move(server_socket), this));
network::mojom::NetworkContextParamsPtr context_params =
network::mojom::NetworkContextParams::New();
// Use a fixed proxy config, to avoid dependencies on local network
// configuration.
context_params->initial_proxy_config =
net::ProxyConfigWithAnnotation::CreateDirect();
network_context_ = std::make_unique<network::NetworkContext>(
network_service_.get(), mojo::MakeRequest(&network_context_ptr_),
std::move(context_params));
int net_error = net::ERR_FAILED;
net::IPEndPoint address; net::IPEndPoint address;
int error = server_->GetLocalAddress(&address); base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
EXPECT_EQ(net::OK, error); network::mojom::TCPServerSocketPtr server_socket;
if (error == net::OK) { network_context_ptr_->CreateTCPServerSocket(
net::IPEndPoint(net::IPAddress::IPv6Localhost(), 0), 1 /* backlog */,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS),
mojo::MakeRequest(&server_socket),
base::BindLambdaForTesting(
[&](int result, const base::Optional<net::IPEndPoint>& local_addr) {
net_error = result;
address = local_addr.value();
run_loop.Quit();
}));
run_loop.Run();
EXPECT_EQ(net::OK, net_error);
server_ = std::make_unique<network::server::HttpServer>(
std::move(server_socket), this);
if (net_error == net::OK) {
base::AutoLock lock(url_lock_); base::AutoLock lock(url_lock_);
web_socket_url_ = GURL(base::StringPrintf("ws://127.0.0.1:%d", web_socket_url_ = GURL(base::StringPrintf("ws://[::1]:%d", address.port()));
address.port()));
} else { } else {
server_.reset(NULL); server_.reset(nullptr);
} }
*success = server_.get(); *success = server_.get();
event->Signal(); event->Signal();
} }
void TestHttpServer::StopOnServerThread(base::WaitableEvent* event) { void TestHttpServer::StopOnServerThread(base::WaitableEvent* event) {
server_.reset(NULL); server_ = nullptr;
network_context_ptr_.reset();
network_context_ = nullptr;
network_service_ = nullptr;
event->Signal(); event->Signal();
} }
...@@ -12,8 +12,11 @@ ...@@ -12,8 +12,11 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/synchronization/lock.h" #include "base/synchronization/lock.h"
#include "base/synchronization/waitable_event.h" #include "base/synchronization/waitable_event.h"
#include "base/test/scoped_task_environment.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "net/server/http_server.h" #include "services/network/network_context.h"
#include "services/network/network_service.h"
#include "services/network/public/cpp/server/http_server.h"
#include "url/gurl.h" #include "url/gurl.h"
namespace base { namespace base {
...@@ -23,7 +26,7 @@ class WaitableEvent; ...@@ -23,7 +26,7 @@ class WaitableEvent;
// HTTP server for web socket testing purposes that runs on its own thread. // HTTP server for web socket testing purposes that runs on its own thread.
// All public methods are thread safe and may be called on any thread, unless // All public methods are thread safe and may be called on any thread, unless
// noted otherwise. // noted otherwise.
class TestHttpServer : public net::HttpServer::Delegate { class TestHttpServer : public network::server::HttpServer::Delegate {
public: public:
enum WebSocketRequestAction { enum WebSocketRequestAction {
kAccept, kAccept,
...@@ -63,12 +66,14 @@ class TestHttpServer : public net::HttpServer::Delegate { ...@@ -63,12 +66,14 @@ class TestHttpServer : public net::HttpServer::Delegate {
// Returns the web socket URL that points to the server. // Returns the web socket URL that points to the server.
GURL web_socket_url() const; GURL web_socket_url() const;
// Overridden from net::HttpServer::Delegate: // Overridden from network::server::HttpServer::Delegate:
void OnConnect(int connection_id) override; void OnConnect(int connection_id) override;
void OnHttpRequest(int connection_id, void OnHttpRequest(
const net::HttpServerRequestInfo& info) override {} int connection_id,
void OnWebSocketRequest(int connection_id, const network::server::HttpServerRequestInfo& info) override {}
const net::HttpServerRequestInfo& info) override; void OnWebSocketRequest(
int connection_id,
const network::server::HttpServerRequestInfo& info) override;
void OnWebSocketMessage(int connection_id, const std::string& data) override; void OnWebSocketMessage(int connection_id, const std::string& data) override;
void OnClose(int connection_id) override; void OnClose(int connection_id) override;
...@@ -79,7 +84,7 @@ class TestHttpServer : public net::HttpServer::Delegate { ...@@ -79,7 +84,7 @@ class TestHttpServer : public net::HttpServer::Delegate {
base::Thread thread_; base::Thread thread_;
// Access only on the server thread. // Access only on the server thread.
std::unique_ptr<net::HttpServer> server_; std::unique_ptr<network::server::HttpServer> server_;
// Access only on the server thread. // Access only on the server thread.
std::set<int> connections_; std::set<int> connections_;
...@@ -90,6 +95,11 @@ class TestHttpServer : public net::HttpServer::Delegate { ...@@ -90,6 +95,11 @@ class TestHttpServer : public net::HttpServer::Delegate {
mutable base::Lock url_lock_; mutable base::Lock url_lock_;
GURL web_socket_url_; GURL web_socket_url_;
std::unique_ptr<network::NetworkService> network_service_;
std::unique_ptr<network::NetworkContext> network_context_;
network::mojom::NetworkContextPtr network_context_ptr_;
// Protects the action flags and |message_callback_|. // Protects the action flags and |message_callback_|.
base::Lock action_lock_; base::Lock action_lock_;
WebSocketRequestAction request_action_; WebSocketRequestAction request_action_;
......
...@@ -31,12 +31,6 @@ void OnConnectFinished(base::RunLoop* run_loop, int* save_error, int error) { ...@@ -31,12 +31,6 @@ void OnConnectFinished(base::RunLoop* run_loop, int* save_error, int error) {
run_loop->Quit(); run_loop->Quit();
} }
void RunPending(base::MessageLoop* loop) {
base::RunLoop run_loop;
loop->task_runner()->PostTask(FROM_HERE, run_loop.QuitClosure());
run_loop.Run();
}
class Listener : public WebSocketListener { class Listener : public WebSocketListener {
public: public:
explicit Listener(const std::vector<std::string>& messages) explicit Listener(const std::vector<std::string>& messages)
...@@ -80,7 +74,9 @@ class CloseListener : public WebSocketListener { ...@@ -80,7 +74,9 @@ class CloseListener : public WebSocketListener {
class WebSocketTest : public testing::Test { class WebSocketTest : public testing::Test {
public: public:
WebSocketTest() {} WebSocketTest()
: task_environment_(
base::test::ScopedTaskEnvironment::MainThreadType::IO) {}
~WebSocketTest() override {} ~WebSocketTest() override {}
void SetUp() override { ASSERT_TRUE(server_.Start()); } void SetUp() override { ASSERT_TRUE(server_.Start()); }
...@@ -94,8 +90,8 @@ class WebSocketTest : public testing::Test { ...@@ -94,8 +90,8 @@ class WebSocketTest : public testing::Test {
std::unique_ptr<WebSocket> sock(new WebSocket(url, listener)); std::unique_ptr<WebSocket> sock(new WebSocket(url, listener));
base::RunLoop run_loop; base::RunLoop run_loop;
sock->Connect(base::Bind(&OnConnectFinished, &run_loop, &error)); sock->Connect(base::Bind(&OnConnectFinished, &run_loop, &error));
loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
base::TimeDelta::FromSeconds(10)); FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
run_loop.Run(); run_loop.Run();
if (error == net::OK) if (error == net::OK)
return sock; return sock;
...@@ -115,12 +111,12 @@ class WebSocketTest : public testing::Test { ...@@ -115,12 +111,12 @@ class WebSocketTest : public testing::Test {
ASSERT_TRUE(sock->Send(messages[i])); ASSERT_TRUE(sock->Send(messages[i]));
} }
base::RunLoop run_loop; base::RunLoop run_loop;
loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
base::TimeDelta::FromSeconds(10)); FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
run_loop.Run(); run_loop.Run();
} }
base::MessageLoopForIO loop_; base::test::ScopedTaskEnvironment task_environment_;
TestHttpServer server_; TestHttpServer server_;
}; };
...@@ -134,7 +130,6 @@ TEST_F(WebSocketTest, CreateDestroy) { ...@@ -134,7 +130,6 @@ TEST_F(WebSocketTest, CreateDestroy) {
TEST_F(WebSocketTest, Connect) { TEST_F(WebSocketTest, Connect) {
CloseListener listener(NULL); CloseListener listener(NULL);
ASSERT_TRUE(CreateWebSocket(server_.web_socket_url(), &listener)); ASSERT_TRUE(CreateWebSocket(server_.web_socket_url(), &listener));
RunPending(&loop_);
ASSERT_TRUE(server_.WaitForConnectionsToClose()); ASSERT_TRUE(server_.WaitForConnectionsToClose());
} }
...@@ -147,7 +142,6 @@ TEST_F(WebSocketTest, Connect404) { ...@@ -147,7 +142,6 @@ TEST_F(WebSocketTest, Connect404) {
server_.SetRequestAction(TestHttpServer::kNotFound); server_.SetRequestAction(TestHttpServer::kNotFound);
CloseListener listener(NULL); CloseListener listener(NULL);
ASSERT_FALSE(CreateWebSocket(server_.web_socket_url(), NULL)); ASSERT_FALSE(CreateWebSocket(server_.web_socket_url(), NULL));
RunPending(&loop_);
ASSERT_TRUE(server_.WaitForConnectionsToClose()); ASSERT_TRUE(server_.WaitForConnectionsToClose());
} }
...@@ -164,8 +158,8 @@ TEST_F(WebSocketTest, CloseOnReceive) { ...@@ -164,8 +158,8 @@ TEST_F(WebSocketTest, CloseOnReceive) {
std::unique_ptr<WebSocket> sock(CreateConnectedWebSocket(&listener)); std::unique_ptr<WebSocket> sock(CreateConnectedWebSocket(&listener));
ASSERT_TRUE(sock); ASSERT_TRUE(sock);
ASSERT_TRUE(sock->Send("hi")); ASSERT_TRUE(sock->Send("hi"));
loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
base::TimeDelta::FromSeconds(10)); FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
run_loop.Run(); run_loop.Run();
} }
...@@ -177,8 +171,8 @@ TEST_F(WebSocketTest, CloseOnSend) { ...@@ -177,8 +171,8 @@ TEST_F(WebSocketTest, CloseOnSend) {
server_.Stop(); server_.Stop();
sock->Send("hi"); sock->Send("hi");
loop_.task_runner()->PostDelayedTask(FROM_HERE, run_loop.QuitClosure(), task_environment_.GetMainThreadTaskRunner()->PostDelayedTask(
base::TimeDelta::FromSeconds(10)); FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromSeconds(10));
run_loop.Run(); run_loop.Run();
ASSERT_FALSE(sock->Send("hi")); ASSERT_FALSE(sock->Send("hi"));
} }
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <memory>
#include "base/bind.h"
#include "base/message_loop/message_loop.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/test/test_io_thread.h"
#include "base/test/test_suite.h"
#include "build/build_config.h"
#include "mojo/edk/embedder/embedder.h"
int main(int argc, char** argv) {
base::TestSuite test_suite(argc, argv);
mojo::edk::Init();
return base::LaunchUnitTests(
argc, argv,
base::BindOnce(&base::TestSuite::Run, base::Unretained(&test_suite)));
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment