blob: 2a8e031562d477095836592da012f4baac1be430 [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;
}