blob: 0c1411773e88935ee6225721a0f7b65a1b6c69e2 [file] [log] [blame]
// Copyright 2020 The Fuchsia 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 <fuchsia/sys/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/sys/cpp/service_directory.h>
#include <gtest/gtest.h>
#include "launcher.h"
namespace {
void TestSingleComponent(std::string url) {
async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
auto svc = sys::ServiceDirectory::CreateFromNamespace();
fuchsia::sys::LauncherPtr launcher;
zx_status_t status = svc->Connect(launcher.NewRequest());
ASSERT_EQ(ZX_OK, status);
fuchsia::sys::LaunchInfo info{
.url = std::move(url),
};
fuchsia::sys::ComponentControllerPtr controller;
launcher->CreateComponent(std::move(info), controller.NewRequest());
controller.events().OnTerminated = [&loop](int64_t code, fuchsia::sys::TerminationReason reason) {
loop.Quit();
ASSERT_EQ(0, code);
ASSERT_EQ(fuchsia::sys::TerminationReason::EXITED, reason);
};
loop.Run();
}
} // namespace
TEST(IntegrationTest, HlcppSync) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-hlcpp-client-sync#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-hlcpp-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, HlcppAsync) {
ASSERT_EQ(LaunchComponents("fuchsia-pkg://fuchsia.com/echo-hlcpp-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-hlcpp-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, HlcppService) {
TestSingleComponent("fuchsia-pkg://fuchsia.com/echo-hlcpp-service-client#meta/echo-client.cmx");
}
TEST(IntegrationTest, HlcppMultipleClients) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-hlcpp-multi-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-hlcpp-multi-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, HlcppPipelining) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-launcher-hlcpp-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-launcher-hlcpp-server#meta/echo-server.cmx",
{"fuchsia.examples.EchoLauncher"}),
0);
}
TEST(IntegrationTest, LlcppAsync) {
ASSERT_EQ(LaunchComponents("fuchsia-pkg://fuchsia.com/echo-llcpp-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-llcpp-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, LlcppSync) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-llcpp-client-sync#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-llcpp-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, LlcppService) {
TestSingleComponent("fuchsia-pkg://fuchsia.com/echo-llcpp-service-client#meta/echo-client.cmx");
}
TEST(IntegrationTest, LlcppPipelining) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-launcher-llcpp-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-launcher-llcpp-server#meta/echo-server.cmx",
{"fuchsia.examples.EchoLauncher"}),
0);
}
TEST(IntegrationTest, LlcppAsyncCompleter) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-llcpp-client-async#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-llcpp-server-async#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, RustAsync) {
ASSERT_EQ(LaunchComponents("fuchsia-pkg://fuchsia.com/echo-rust-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-rust-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, RustSync) {
ASSERT_EQ(LaunchComponents("fuchsia-pkg://fuchsia.com/echo-rust-client-sync#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-rust-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, RustService) {
TestSingleComponent("fuchsia-pkg://fuchsia.com/echo-rust-service-client#meta/echo-client.cmx");
}
TEST(IntegrationTest, RustPipelining) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-launcher-rust-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-launcher-rust-server#meta/echo-server.cmx",
{"fuchsia.examples.EchoLauncher"}),
0);
}
TEST(IntegrationTest, GoSync) {
ASSERT_EQ(LaunchComponents("fuchsia-pkg://fuchsia.com/echo-go-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-go-server#meta/echo-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, GoPipelining) {
ASSERT_EQ(
LaunchComponents("fuchsia-pkg://fuchsia.com/echo-launcher-go-client#meta/echo-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-launcher-go-server#meta/echo-server.cmx",
{"fuchsia.examples.EchoLauncher"}),
0);
}
TEST(IntegrationTest, DartAsync) {
ASSERT_EQ(LaunchComponents("fuchsia-pkg://fuchsia.com/echo-dart-client#meta/echo-dart-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-dart-server#meta/echo-dart-server.cmx",
{"fuchsia.examples.Echo"}),
0);
}
TEST(IntegrationTest, DartPipelining) {
ASSERT_EQ(
LaunchComponents(
"fuchsia-pkg://fuchsia.com/echo-launcher-dart-client#meta/echo-launcher-dart-client.cmx",
"fuchsia-pkg://fuchsia.com/echo-launcher-dart-server#meta/echo-launcher-dart-server.cmx",
{"fuchsia.examples.EchoLauncher"}),
0);
}