blob: 06e50c0f8cabb73af6f7f7762a3c14ae61583b7b [file] [log] [blame]
// Copyright 2017 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.
#ifndef PERIDOT_BIN_LEDGER_TESTS_CLOUD_PROVIDER_LAUNCHER_VALIDATION_TESTS_LAUNCHER_H_
#define PERIDOT_BIN_LEDGER_TESTS_CLOUD_PROVIDER_LAUNCHER_VALIDATION_TESTS_LAUNCHER_H_
#include <functional>
#include <string>
#include <fuchsia/ledger/cloud/cpp/fidl.h>
#include <fuchsia/sys/cpp/fidl.h>
#include <lib/component/cpp/service_provider_impl.h>
#include <lib/component/cpp/startup_context.h>
namespace cloud_provider {
// Helper for building launcher apps for the validation tests.
class ValidationTestsLauncher {
public:
// The constructor.
//
// |factory| is called to produce instances of the cloud provider under test.
ValidationTestsLauncher(
component::StartupContext* startup_context,
std::function<
void(fidl::InterfaceRequest<fuchsia::ledger::cloud::CloudProvider>)>
factory);
// Starts the tests.
//
// |arguments| are passed to the test binary.
// |callback| is called after the tests are finished and passed the exit code
// of the test binary.
void Run(const std::vector<std::string>& arguments,
std::function<void(int32_t)> callback);
private:
component::StartupContext* const startup_context_;
std::function<void(
fidl::InterfaceRequest<fuchsia::ledger::cloud::CloudProvider>)>
factory_;
component::ServiceProviderImpl service_provider_impl_;
fuchsia::sys::ComponentControllerPtr validation_tests_controller_;
std::function<void(int32_t)> callback_;
};
} // namespace cloud_provider
#endif // PERIDOT_BIN_LEDGER_TESTS_CLOUD_PROVIDER_LAUNCHER_VALIDATION_TESTS_LAUNCHER_H_