blob: 039139f3e463c41c1a09af9ca144112b070b1de1 [file] [log] [blame]
// Copyright 2019 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>
namespace fidl {
namespace {
TEST(IntegrationTest, Echo) {
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 = "fuchsia-pkg://fuchsia.com/echo_client#meta/echo_client.cmx",
};
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
} // namespace fidl