106 lines
2.5 KiB
Go
106 lines
2.5 KiB
Go
package driver
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/vmware/govmomi/simulator"
|
|
"github.com/vmware/govmomi/vim25/methods"
|
|
"github.com/vmware/govmomi/vim25/soap"
|
|
"github.com/vmware/govmomi/vim25/types"
|
|
)
|
|
|
|
// ReconfigureFail changes the behavior of simulator.VirtualMachine
|
|
type ReconfigureFail struct {
|
|
*simulator.VirtualMachine
|
|
}
|
|
|
|
// Override simulator.VirtualMachine.ReconfigVMTask to inject faults
|
|
func (vm *ReconfigureFail) ReconfigVMTask(req *types.ReconfigVM_Task) soap.HasFault {
|
|
task := simulator.CreateTask(req.This, "reconfigure", func(*simulator.Task) (types.AnyType, types.BaseMethodFault) {
|
|
return nil, &types.TaskInProgress{}
|
|
})
|
|
|
|
return &methods.ReconfigVM_TaskBody{
|
|
Res: &types.ReconfigVM_TaskResponse{
|
|
Returnval: task.Run(),
|
|
},
|
|
}
|
|
}
|
|
|
|
func TestVirtualMachineDriver_Configure(t *testing.T) {
|
|
sim, err := NewVCenterSimulator()
|
|
if err != nil {
|
|
t.Fatalf("should not fail: %s", err.Error())
|
|
}
|
|
defer sim.Close()
|
|
|
|
vm, machine := sim.ChooseSimulatorPreCreatedVM()
|
|
|
|
// Happy test
|
|
hardwareConfig := &HardwareConfig{
|
|
CPUs: 1,
|
|
CpuCores: 1,
|
|
CPUReservation: 2500,
|
|
CPULimit: 1,
|
|
RAM: 1024,
|
|
RAMReserveAll: true,
|
|
VideoRAM: 512,
|
|
VGPUProfile: "grid_m10-8q",
|
|
Firmware: "efi-secure",
|
|
ForceBIOSSetup: true,
|
|
}
|
|
if err = vm.Configure(hardwareConfig); err != nil {
|
|
t.Fatalf("should not fail: %s", err.Error())
|
|
}
|
|
|
|
//Fail test
|
|
//Wrap the existing vm object with the mocked reconfigure task which will return a fault
|
|
simulator.Map.Put(&ReconfigureFail{machine})
|
|
if err = vm.Configure(&HardwareConfig{}); err == nil {
|
|
t.Fatalf("Configure should fail")
|
|
}
|
|
}
|
|
|
|
func TestVirtualMachineDriver_CreateVM(t *testing.T) {
|
|
sim, err := NewVCenterSimulator()
|
|
if err != nil {
|
|
t.Fatalf("should not fail: %s", err.Error())
|
|
}
|
|
defer sim.Close()
|
|
|
|
_, datastore := sim.ChooseSimulatorPreCreatedDatastore()
|
|
|
|
config := &CreateConfig{
|
|
Annotation: "mock annotation",
|
|
Name: "mock name",
|
|
Host: "DC0_H0",
|
|
Datastore: datastore.Name,
|
|
NICs: []NIC{
|
|
{
|
|
Network: "VM Network",
|
|
NetworkCard: "vmxnet3",
|
|
},
|
|
},
|
|
StorageConfig: StorageConfig{
|
|
DiskControllerType: []string{"pvscsi"},
|
|
Storage: []Disk{
|
|
{
|
|
DiskSize: 3072,
|
|
DiskThinProvisioned: true,
|
|
ControllerIndex: 0,
|
|
},
|
|
{
|
|
DiskSize: 20480,
|
|
DiskThinProvisioned: true,
|
|
ControllerIndex: 0,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
_, err = sim.driver.CreateVM(config)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error %s", err.Error())
|
|
}
|
|
}
|