blob: fa31934c4da7af77ece1bde01b07a130ce0a8589 [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.
#ifndef LIB_VIRTUALIZATION_TESTING_FAKE_MANAGER_H_
#define LIB_VIRTUALIZATION_TESTING_FAKE_MANAGER_H_
#include <fuchsia/virtualization/cpp/fidl.h>
#include <fuchsia/virtualization/cpp/fidl_test_base.h>
#include <lib/fidl/cpp/binding.h>
#include <lib/fidl/cpp/binding_set.h>
#include <lib/virtualization/testing/fake_guest_vsock.h>
#include <lib/virtualization/testing/fake_host_vsock.h>
namespace guest {
namespace testing {
// Provides an implementation of |fuchsia::virtualization::Manager| that
// can create a single Environment/Guest. This is intended to make testing the
// common case of a single component creating a single guest.
class FakeManager : public fuchsia::virtualization::testing::Manager_TestBase,
public fuchsia::virtualization::testing::Realm_TestBase,
public fuchsia::virtualization::testing::Guest_TestBase {
public:
FakeGuestVsock* GuestVsock() { return &guest_vsock_; }
fidl::InterfaceRequestHandler<fuchsia::virtualization::Manager> GetHandler() {
return manager_bindings_.GetHandler(this);
}
private:
// |fuchsia::virtualization::Manager|
void Create(fidl::StringPtr label,
fidl::InterfaceRequest<fuchsia::virtualization::Realm> env) override;
// |fuchsia::virtualization::Realm|
void LaunchInstance(std::string url, fidl::StringPtr label,
fuchsia::virtualization::GuestConfig guest_config,
fidl::InterfaceRequest<fuchsia::virtualization::Guest> controller,
LaunchInstanceCallback callback) override;
void GetHostVsockEndpoint(
fidl::InterfaceRequest<fuchsia::virtualization::HostVsockEndpoint> endpoint) override;
void NotImplemented_(const std::string& name) override;
FakeHostVsock host_vsock_{&guest_vsock_};
FakeGuestVsock guest_vsock_{&host_vsock_};
fidl::BindingSet<fuchsia::virtualization::Manager> manager_bindings_;
fidl::Binding<fuchsia::virtualization::Realm> realm_binding_{this};
fidl::Binding<fuchsia::virtualization::Guest> guest_binding_{this};
};
} // namespace testing
} // namespace guest
#endif // LIB_VIRTUALIZATION_TESTING_FAKE_MANAGER_H_