blob: b59d7fede8e79574e00abe831be61f74087e2f8a [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/ledger/cloud/cpp/fidl.h>
#include <lib/async-loop/cpp/loop.h>
#include <lib/async/cpp/task.h>
#include <lib/sys/cpp/component_context.h>
#include <lib/sys/cpp/service_directory.h>
#include <iostream>
#include "src/ledger/bin/tests/cloud_provider/launcher/validation_tests_launcher.h"
#include "src/lib/fxl/logging.h"
#include "src/lib/fxl/strings/string_view.h"
namespace {
constexpr fxl::StringView kCloudProviderUrl =
"fuchsia-pkg://fuchsia.com/cloud_provider_memory_diff#meta/"
"cloud_provider_memory_diff.cmx";
} // namespace
int main(int argc, char** argv) {
async::Loop loop(&kAsyncLoopConfigAttachToThread);
std::unique_ptr<sys::ComponentContext> component_context =
sys::ComponentContext::Create();
fuchsia::sys::LauncherPtr component_launcher;
component_context->svc()->Connect(component_launcher.NewRequest());
cloud_provider::ValidationTestsLauncher launcher(
component_context.get(),
[component_launcher = std::move(component_launcher)](auto request) {
fuchsia::sys::LaunchInfo launch_info;
launch_info.url = kCloudProviderUrl.ToString();
auto cloud_provider_services = sys::ServiceDirectory::CreateWithRequest(
&launch_info.directory_request);
fuchsia::sys::ComponentControllerPtr cloud_instance;
component_launcher->CreateComponent(std::move(launch_info),
cloud_instance.NewRequest());
cloud_provider_services->Connect(
std::move(request), fuchsia::ledger::cloud::CloudProvider::Name_);
return cloud_instance;
});
int32_t return_code = -1;
async::PostTask(loop.dispatcher(), [&launcher, &return_code, &loop] {
launcher.Run({}, [&return_code, &loop](int32_t result) {
return_code = result;
loop.Quit();
});
});
loop.Run();
return return_code;
}