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

Unified Diff: blimp/test/fake_engine/fake_engine_app_tests.cc

Issue 2626423004: Remove all //blimp code. (Closed)
Patch Set: One last(?) `git merge` for good measure. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/test/fake_engine/fake_engine.cc ('k') | blimp/test/fake_engine/fake_engine_main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/test/fake_engine/fake_engine_app_tests.cc
diff --git a/blimp/test/fake_engine/fake_engine_app_tests.cc b/blimp/test/fake_engine/fake_engine_app_tests.cc
deleted file mode 100644
index 21beb8738f8882b1fba0eaf9dcf4733907777437..0000000000000000000000000000000000000000
--- a/blimp/test/fake_engine/fake_engine_app_tests.cc
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2016 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 "blimp/test/fake_engine/fake_engine.h"
-
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/files/file_util.h"
-#include "base/synchronization/waitable_event.h"
-#include "base/test/launcher/unit_test_launcher.h"
-#include "base/test/test_suite.h"
-#include "blimp/test/fake_engine/proto/engine.grpc.pb.h"
-#include "blimp/test/fake_engine/proto/lifetime.grpc.pb.h"
-#include "blimp/test/fake_engine/proto/logging.grpc.pb.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/grpc/include/grpc++/create_channel_posix.h"
-#include "third_party/grpc/include/grpc++/grpc++.h"
-#include "third_party/grpc/include/grpc++/server_posix.h"
-
-using ::testing::_;
-
-namespace blimp {
-
-namespace {
-
-bool SocketPair(int* fd1, int* fd2) {
- int pipe_fds[2];
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, pipe_fds) != 0) {
- PLOG(ERROR) << "socketpair()";
- return false;
- }
-
- // Set both ends to be non-blocking.
- if (fcntl(pipe_fds[0], F_SETFL, O_NONBLOCK) == -1 ||
- fcntl(pipe_fds[1], F_SETFL, O_NONBLOCK) == -1) {
- PLOG(ERROR) << "fcntl(O_NONBLOCK)";
- if (IGNORE_EINTR(close(pipe_fds[0])) < 0)
- PLOG(ERROR) << "close";
- if (IGNORE_EINTR(close(pipe_fds[1])) < 0)
- PLOG(ERROR) << "close";
- return false;
- }
-
- *fd1 = pipe_fds[0];
- *fd2 = pipe_fds[1];
-
- return true;
-}
-
-class MockLifetimeService : public Lifetime::Service {
- public:
- MOCK_METHOD3(EngineReady, grpc::Status(
- grpc::ServerContext*, const EngineReadyRequest*, EngineReadyResponse*));
-};
-
-class MockLoggingService : public Logging::Service {
- public:
- MOCK_METHOD3(Log, grpc::Status(
- grpc::ServerContext*, const LogRequest*, LogResponse*));
-};
-
-// The FakeEngineAppTest suite sets up a simple interface resembling the
-// Service, which is required by the Fake Engine. This allows testing whether
-// the Fake Engine serves its purpose of simulating the real Engine as spawned
-// by the Service.
-class FakeEngineAppTest : public testing::Test {
- public:
- FakeEngineAppTest()
- : engine_ready_(base::WaitableEvent::ResetPolicy::MANUAL,
- base::WaitableEvent::InitialState::NOT_SIGNALED) {}
-
- protected:
- void SetUp() override {
- CHECK(SocketPair(&rendering_server_connect_fd_, &engine_listen_fd_));
- CHECK(SocketPair(&rendering_server_listen_fd_, &engine_connect_fd_));
-
- grpc::ServerBuilder builder;
- builder.RegisterService(&mock_lifetime_service_);
- builder.RegisterService(&mock_logging_service_);
- grpc_server_ = builder.BuildAndStart();
-
- // TODO(xyzzyz): Remove fcntl when https://github.com/grpc/grpc/pull/8051 is
- // merged and added to Chromium.
- int flags = fcntl(rendering_server_listen_fd_, F_GETFL, 0);
- CHECK_EQ(0, fcntl(rendering_server_listen_fd_, F_SETFL,
- flags | O_NONBLOCK));
-
- grpc::AddInsecureChannelFromFd(grpc_server_.get(),
- rendering_server_listen_fd_);
- }
-
- // This function spawns a Fake Engine as a child process, and sets up the file
- // descriptor mappings for it, resembling the mappings in the Service
- // environment. It also sets up the handler for the EngineReady function that
- // will be called by the Fake Engine upon startup.
- base::Process SpawnEngine() {
- // Find the path of the Engine.
- base::CommandLine current_cmd = *base::CommandLine::ForCurrentProcess();
- base::FilePath current_program_path = base::MakeAbsoluteFilePath(
- current_cmd.GetProgram());
- base::FilePath current_dir = current_program_path.DirName();
- base::FilePath fake_engine_path = current_dir.Append("fake_engine_app");
-
- base::CommandLine engine_cmd(fake_engine_path);
-
- base::LaunchOptions options;
- base::FileHandleMappingVector fds_to_remap = {
- { engine_listen_fd_, kEngineListenFd },
- { engine_connect_fd_, kRenderingServerListenFd }
- };
- options.fds_to_remap = &fds_to_remap;
-
- ON_CALL(mock_lifetime_service_, EngineReady(_, _, _))
- .WillByDefault(
- testing::Invoke(this, &FakeEngineAppTest::EngineReadyHandler));
- return base::LaunchProcess(engine_cmd, options);
- }
-
- grpc::Status EngineReadyHandler(
- grpc::ServerContext*, const EngineReadyRequest*, EngineReadyResponse*) {
- engine_ready_.Signal();
- return grpc::Status::OK;
- }
-
- bool WaitForEngineReady(base::TimeDelta timeout) {
- return engine_ready_.TimedWait(timeout);
- }
-
- std::unique_ptr<Engine::Stub> GetEngineStub() {
- CHECK(!engine_channel_);
- engine_channel_ = grpc::CreateInsecureChannelFromFd(
- "fake_engine", rendering_server_connect_fd_);
- CHECK(engine_channel_);
- return Engine::NewStub(engine_channel_);
- }
-
- private:
- int engine_listen_fd_;
- int rendering_server_connect_fd_;
-
- int rendering_server_listen_fd_;
- int engine_connect_fd_;
-
- std::unique_ptr<grpc::Server> grpc_server_;
- MockLifetimeService mock_lifetime_service_;
- MockLoggingService mock_logging_service_;
-
- std::shared_ptr<grpc::Channel> engine_channel_;
- base::WaitableEvent engine_ready_;
-
- DISALLOW_COPY_AND_ASSIGN(FakeEngineAppTest);
-};
-
-
-TEST_F(FakeEngineAppTest, Basic) {
- base::Process engine_process = SpawnEngine();
- EXPECT_TRUE(WaitForEngineReady(base::TimeDelta::FromSeconds(5)));
-
- std::unique_ptr<Engine::Stub> engine_stub = GetEngineStub();
- {
- CheckHealthRequest request;
- CheckHealthResponse response;
-
- grpc::ClientContext context;
- grpc::Status status = engine_stub->CheckHealth(
- &context, request, &response);
- EXPECT_TRUE(status.ok());
- EXPECT_EQ(response.status(), CheckHealthResponse::OK);
- }
-
- {
- ShutDownRequest request;
- ShutDownResponse response;
-
- grpc::ClientContext context;
- grpc::CompletionQueue cq;
- // We do async call, as the Fake Engine doesn't send any reply to the
- // ShutDown RPC, so it makes no sense to wait for it.
- auto rpc = engine_stub->AsyncShutDown(&context, request, &cq);
-
- EXPECT_TRUE(engine_process.WaitForExitWithTimeout(
- base::TimeDelta::FromSeconds(5), nullptr /* exit_code */));
- }
-}
-
-class FakeEngineTestSuite : public base::TestSuite {
- public:
- FakeEngineTestSuite(int argc, char** argv) : base::TestSuite(argc, argv) {}
-
- protected:
- void Initialize() override {
- base::TestSuite::Initialize();
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(FakeEngineTestSuite);
-};
-
-} // namespace
-
-} // namespace blimp
-
-int main(int argc, char** argv) {
- blimp::FakeEngineTestSuite test_suite(argc, argv);
- return base::LaunchUnitTests(
- argc, argv,
- base::Bind(&base::TestSuite::Run, base::Unretained(&test_suite)));
-}
« no previous file with comments | « blimp/test/fake_engine/fake_engine.cc ('k') | blimp/test/fake_engine/fake_engine_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698