blob: 97cfa0c2df449eb0d66fb1c2e02b5080724b45bc [file] [log] [blame]
// Copyright 2018 The Chromium 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 CHROMEOS_DBUS_FAKE_CONCIERGE_CLIENT_H_
#define CHROMEOS_DBUS_FAKE_CONCIERGE_CLIENT_H_
#include "base/observer_list.h"
#include "chromeos/dbus/concierge_client.h"
namespace chromeos {
// FakeConciergeClient is a light mock of ConciergeClient used for testing.
class CHROMEOS_EXPORT FakeConciergeClient : public ConciergeClient {
public:
FakeConciergeClient();
~FakeConciergeClient() override;
// Adds an observer.
void AddObserver(Observer* observer) override;
// Removes an observer if added.
void RemoveObserver(Observer* observer) override;
// IsContainerStartupFailedSignalConnected must return true before
// StartContainer is called.
bool IsContainerStartupFailedSignalConnected() override;
// Fake version of the method that creates a disk image for the Termina VM.
// Sets create_disk_image_called_. |callback| is called after the method
// call finishes.
void CreateDiskImage(
const vm_tools::concierge::CreateDiskImageRequest& request,
DBusMethodCallback<vm_tools::concierge::CreateDiskImageResponse> callback)
override;
// Fake version of the method that destroys a Termina VM and removes its disk
// image. Sets destroy_disk_image_called_. |callback| is called after the
// method call finishes.
void DestroyDiskImage(
const vm_tools::concierge::DestroyDiskImageRequest& request,
DBusMethodCallback<vm_tools::concierge::DestroyDiskImageResponse>
callback) override;
// Fake version of the method that lists Termina VM disks. Sets
// list_vm_disks_called_. |callback| is called after the method call
// finishes.
void ListVmDisks(const vm_tools::concierge::ListVmDisksRequest& request,
DBusMethodCallback<vm_tools::concierge::ListVmDisksResponse>
callback) override;
// Fake version of the method that starts a Termina VM. Sets
// start_termina_vm_called_. |callback| is called after the method call
// finishes.
void StartTerminaVm(const vm_tools::concierge::StartVmRequest& request,
DBusMethodCallback<vm_tools::concierge::StartVmResponse>
callback) override;
// Fake version of the method that stops the named Termina VM if it is
// running. Sets stop_vm_called_. |callback| is called after the method
// call finishes.
void StopVm(const vm_tools::concierge::StopVmRequest& request,
DBusMethodCallback<vm_tools::concierge::StopVmResponse> callback)
override;
// Fake version of the method that starts a Container inside an existing
// Termina VM. Sets start_container_called_. |callback| is called after the
// method call finishes.
void StartContainer(
const vm_tools::concierge::StartContainerRequest& request,
DBusMethodCallback<vm_tools::concierge::StartContainerResponse> callback)
override;
// Fake version of the method that waits for the Concierge service to be
// availble. |callback| is called after the method call finishes.
void WaitForServiceToBeAvailable(
dbus::ObjectProxy::WaitForServiceToBeAvailableCallback callback) override;
// Fake version of the method that fetches ssh key information.
// |callback| is called after the method call finishes.
void GetContainerSshKeys(
const vm_tools::concierge::ContainerSshKeysRequest& request,
DBusMethodCallback<vm_tools::concierge::ContainerSshKeysResponse>
callback) override;
// Indicates whether CreateDiskImage has been called
bool create_disk_image_called() const { return create_disk_image_called_; }
// Indicates whether DestroyDiskImage has been called
bool destroy_disk_image_called() const { return destroy_disk_image_called_; }
// Indicates whether ListVmDisks has been called
bool list_vm_disks_called() const { return list_vm_disks_called_; }
// Indicates whether StartTerminaVm has been called
bool start_termina_vm_called() const { return start_termina_vm_called_; }
// Indicates whether StopVm has been called
bool stop_vm_called() const { return stop_vm_called_; }
// Indicates whether StartContainer has been called
bool start_container_called() const { return start_container_called_; }
// Set ContainerStartupFailedSignalConnected state
void set_container_startup_failed_signal_connected(bool connected) {
is_container_startup_failed_signal_connected_ = connected;
}
void set_create_disk_image_response(
const vm_tools::concierge::CreateDiskImageResponse&
create_disk_image_response) {
create_disk_image_response_ = create_disk_image_response;
}
void set_destroy_disk_image_response(
const vm_tools::concierge::DestroyDiskImageResponse&
destroy_disk_image_response) {
destroy_disk_image_response_ = destroy_disk_image_response;
}
void set_list_vm_disks_response(
const vm_tools::concierge::ListVmDisksResponse& list_vm_disks_response) {
list_vm_disks_response_ = list_vm_disks_response;
}
void set_start_vm_response(
const vm_tools::concierge::StartVmResponse& start_vm_response) {
start_vm_response_ = start_vm_response;
}
void set_stop_vm_response(
const vm_tools::concierge::StopVmResponse& stop_vm_response) {
stop_vm_response_ = stop_vm_response;
}
void set_start_container_response(
const vm_tools::concierge::StartContainerResponse&
start_container_response) {
start_container_response_ = start_container_response;
}
void set_container_ssh_keys_response(
const vm_tools::concierge::ContainerSshKeysResponse&
container_ssh_keys_response) {
container_ssh_keys_response_ = container_ssh_keys_response;
}
protected:
void Init(dbus::Bus* bus) override {}
private:
void InitializeProtoResponses();
bool create_disk_image_called_ = false;
bool destroy_disk_image_called_ = false;
bool list_vm_disks_called_ = false;
bool start_termina_vm_called_ = false;
bool stop_vm_called_ = false;
bool start_container_called_ = false;
bool is_container_startup_failed_signal_connected_ = true;
vm_tools::concierge::CreateDiskImageResponse create_disk_image_response_;
vm_tools::concierge::DestroyDiskImageResponse destroy_disk_image_response_;
vm_tools::concierge::ListVmDisksResponse list_vm_disks_response_;
vm_tools::concierge::StartVmResponse start_vm_response_;
vm_tools::concierge::StopVmResponse stop_vm_response_;
vm_tools::concierge::StartContainerResponse start_container_response_;
vm_tools::concierge::ContainerSshKeysResponse container_ssh_keys_response_;
base::ObserverList<Observer> observer_list_;
DISALLOW_COPY_AND_ASSIGN(FakeConciergeClient);
};
} // namespace chromeos
#endif // CHROMEOS_DBUS_FAKE_CONCIERGE_CLIENT_H_