Skip to content

Commit

Permalink
[tests] make stub az classes and put them where they are needed
Browse files Browse the repository at this point in the history
  • Loading branch information
andrei-toterman committed Feb 7, 2025
1 parent 62b268d commit 014d2c5
Show file tree
Hide file tree
Showing 34 changed files with 529 additions and 215 deletions.
9 changes: 6 additions & 3 deletions tests/blueprint_test_lambdas.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,19 @@ mpt::fetch_image_lambda(const std::string& release, const std::string& remote, c
};
}

std::function<
mp::VirtualMachine::UPtr(const mp::VirtualMachineDescription&, const mp::SSHKeyProvider&, mp::VMStatusMonitor&)>
std::function<mp::VirtualMachine::UPtr(const mp::VirtualMachineDescription&,
const mp::SSHKeyProvider&,
mp::VMStatusMonitor&,
const mp::AvailabilityZoneManager& az_manager)>
mpt::create_virtual_machine_lambda(const int& num_cores,
const mp::MemorySize& mem_size,
const mp::MemorySize& disk_space,
const std::string& name)
{
return [&num_cores, &mem_size, &disk_space, &name](const mp::VirtualMachineDescription& vm_desc,
const mp::SSHKeyProvider&,
mp::VMStatusMonitor&) {
mp::VMStatusMonitor&,
const mp::AvailabilityZoneManager& az_manager) {
EXPECT_EQ(vm_desc.num_cores, num_cores);
EXPECT_EQ(vm_desc.mem_size, mem_size);
EXPECT_EQ(vm_desc.disk_space, disk_space);
Expand Down
6 changes: 5 additions & 1 deletion tests/blueprint_test_lambdas.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#define MULTIPASS_BLUEPRINT_TEST_LAMBDAS_H

#include <multipass/alias_definition.h>
#include <multipass/availability_zone_manager.h>
#include <multipass/fetch_type.h>
#include <multipass/virtual_machine_description.h>
#include <multipass/vm_image_vault.h>
Expand Down Expand Up @@ -48,7 +49,10 @@ std::function<VMImage(const FetchType&,
const multipass::Path&)>
fetch_image_lambda(const std::string& release, const std::string& remote, const bool must_have_checksum = false);

std::function<VirtualMachine::UPtr(const VirtualMachineDescription&, const SSHKeyProvider&, VMStatusMonitor&)>
std::function<VirtualMachine::UPtr(const VirtualMachineDescription&,
const SSHKeyProvider&,
VMStatusMonitor&,
const AvailabilityZoneManager&)>
create_virtual_machine_lambda(const int& num_cores,
const MemorySize& mem_size,
const MemorySize& disk_space,
Expand Down
39 changes: 21 additions & 18 deletions tests/libvirt/test_libvirt_backend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "tests/mock_logger.h"
#include "tests/mock_ssh.h"
#include "tests/mock_status_monitor.h"
#include "tests/stub_availability_zone_manager.h"
#include "tests/stub_ssh_key_provider.h"
#include "tests/stub_status_monitor.h"
#include "tests/temp_dir.h"
Expand Down Expand Up @@ -52,6 +53,7 @@ struct LibVirtBackend : public Test
"pied-piper-valley",
"",
{},
{},
"ubuntu",
{dummy_image.name(), "", "", "", "", {}},
dummy_cloud_init_iso.name(),
Expand All @@ -61,6 +63,7 @@ struct LibVirtBackend : public Test
{}};
mpt::TempDir data_dir;
mpt::StubSSHKeyProvider key_provider;
mpt::StubAvailabilityZoneManager az_manager{};

// This indicates that LibvirtWrapper should open the test executable
std::string fake_libvirt_path{""};
Expand Down Expand Up @@ -111,7 +114,7 @@ TEST_F(LibVirtBackend, creates_in_off_state)
mp::LibVirtVirtualMachineFactory backend{data_dir.path(), fake_libvirt_path};
mpt::StubVMStatusMonitor stub_monitor;

auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor, az_manager);

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::off));
}
Expand All @@ -122,7 +125,7 @@ TEST_F(LibVirtBackend, creates_in_suspended_state_with_managed_save)
backend.libvirt_wrapper->virDomainHasManagedSaveImage = [](auto...) { return 1; };

mpt::StubVMStatusMonitor stub_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor, az_manager);

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::suspended));
}
Expand All @@ -144,7 +147,7 @@ TEST_F(LibVirtBackend, machine_sends_monitoring_events)
};

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_CALL(mock_monitor, on_resume());
machine->start();
Expand All @@ -167,7 +170,7 @@ TEST_F(LibVirtBackend, machine_persists_and_sets_state_on_start)
{
mp::LibVirtVirtualMachineFactory backend{data_dir.path(), fake_libvirt_path};
NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_CALL(mock_monitor, persist_state_for(_, _));
machine->start();
Expand All @@ -189,7 +192,7 @@ TEST_F(LibVirtBackend, machine_persists_and_sets_state_on_shutdown)
};

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_CALL(mock_monitor, persist_state_for(_, _));
machine->shutdown();
Expand All @@ -210,7 +213,7 @@ TEST_F(LibVirtBackend, machine_persists_and_sets_state_on_suspend)
};

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_CALL(mock_monitor, persist_state_for(_, _));
machine->suspend();
Expand All @@ -230,7 +233,7 @@ TEST_F(LibVirtBackend, start_with_broken_libvirt_connection_throws)
backend.libvirt_wrapper->virConnectOpen = [](auto...) -> virConnectPtr { return nullptr; };

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_THROW(machine->start(), std::runtime_error);

Expand All @@ -243,7 +246,7 @@ TEST_F(LibVirtBackend, shutdown_with_broken_libvirt_connection_throws)
backend.libvirt_wrapper->virConnectOpen = [](auto...) -> virConnectPtr { return nullptr; };

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_THROW(machine->shutdown(), std::runtime_error);

Expand All @@ -256,7 +259,7 @@ TEST_F(LibVirtBackend, suspend_with_broken_libvirt_connection_throws)
backend.libvirt_wrapper->virConnectOpen = [](auto...) -> virConnectPtr { return nullptr; };

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_THROW(machine->suspend(), std::runtime_error);

Expand All @@ -269,7 +272,7 @@ TEST_F(LibVirtBackend, current_state_with_broken_libvirt_unknown)
backend.libvirt_wrapper->virConnectOpen = [](auto...) -> virConnectPtr { return nullptr; };

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::unknown));
}
Expand All @@ -283,7 +286,7 @@ TEST_F(LibVirtBackend, current_state_delayed_shutdown_domain_running)
};

NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);
machine->state = mp::VirtualMachine::State::delayed_shutdown;

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::delayed_shutdown));
Expand All @@ -293,7 +296,7 @@ TEST_F(LibVirtBackend, current_state_delayed_shutdown_domain_off)
{
mp::LibVirtVirtualMachineFactory backend{data_dir.path(), fake_libvirt_path};
NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);
machine->state = mp::VirtualMachine::State::delayed_shutdown;

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::off));
Expand All @@ -303,7 +306,7 @@ TEST_F(LibVirtBackend, current_state_off_domain_starts_running)
{
mp::LibVirtVirtualMachineFactory backend{data_dir.path(), fake_libvirt_path};
NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::off));

Expand Down Expand Up @@ -386,7 +389,7 @@ TEST_F(LibVirtBackend, ssh_hostname_returns_expected_value)
return static_virNetworkGetDHCPLeases(network, mac, leases, flags);
};

auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor, az_manager);
machine->start();

backend.libvirt_wrapper->virDomainGetState = [](auto, auto state, auto, auto) {
Expand All @@ -404,7 +407,7 @@ TEST_F(LibVirtBackend, ssh_hostname_timeout_throws_and_sets_unknown_state)

backend.libvirt_wrapper->virNetworkGetDHCPLeases = [](auto...) { return 0; };

auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor, az_manager);
machine->start();

backend.libvirt_wrapper->virDomainGetState = [](auto, auto state, auto, auto) {
Expand Down Expand Up @@ -437,7 +440,7 @@ TEST_F(LibVirtBackend, shutdown_while_starting_throws_and_sets_correct_state)

backend.libvirt_wrapper->virDomainDestroy = [](virDomainPtr domain) { return static_virDomainDestroy(domain); };

auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, stub_monitor, az_manager);

machine->start();

Expand All @@ -464,7 +467,7 @@ TEST_F(LibVirtBackend, machineInOffStateLogsAndIgnoresShutdown)
{
mp::LibVirtVirtualMachineFactory backend{data_dir.path(), fake_libvirt_path};
NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

EXPECT_THAT(machine->current_state(), Eq(mp::VirtualMachine::State::off));

Expand All @@ -487,7 +490,7 @@ TEST_F(LibVirtBackend, machineNoForceCannotShutdownLogsAndThrows)

mp::LibVirtVirtualMachineFactory backend{data_dir.path(), fake_libvirt_path};
NiceMock<mpt::MockVMStatusMonitor> mock_monitor;
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor);
auto machine = backend.create_virtual_machine(default_description, key_provider, mock_monitor, az_manager);

backend.libvirt_wrapper->virDomainGetState = [](auto, auto state, auto, auto) {
*state = VIR_DOMAIN_RUNNING;
Expand Down
Loading

0 comments on commit 014d2c5

Please sign in to comment.