vm-import-controller/pkg/source/openstack/client_test.go
PoAn Yang 148cec8766 fix: golangci-lint error
Signed-off-by: PoAn Yang <poan.yang@suse.com>
2024-01-12 10:55:44 +08:00

127 lines
3.5 KiB
Go

package openstack
import (
"context"
"os"
"testing"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/require"
migration "github.com/harvester/vm-import-controller/pkg/apis/migration.harvesterhci.io/v1beta1"
"github.com/harvester/vm-import-controller/pkg/server"
)
var (
c *Client
)
func TestMain(t *testing.M) {
var err error
// skip tests, needed for current builds
_, ok := os.LookupEnv("USE_EXISTING_CLUSTER")
if !ok {
logrus.Warn("skipping tests")
return
}
s, err := SetupOpenstackSecretFromEnv("devstack")
if err != nil {
logrus.Fatal(err)
}
endpoint, region, err := SetupOpenstackSourceFromEnv()
if err != nil {
logrus.Fatal(err)
}
c, err = NewClient(context.TODO(), endpoint, region, s)
if err != nil {
logrus.Fatal(err)
}
go func() {
if err = server.NewServer(context.TODO()); err != nil {
logrus.Fatalf("error creating server: %v", err)
}
}()
if err != nil {
logrus.Fatal(err)
}
code := t.Run()
os.Exit(code)
}
func Test_NewClient(t *testing.T) {
assert := require.New(t)
err := c.Verify()
assert.NoError(err, "expect no error during verify of client")
}
func Test_checkOrGetUUID(t *testing.T) {
assert := require.New(t)
vmName, ok := os.LookupEnv("OS_VM_NAME")
assert.True(ok, "expected env variable VM_NAME to be set")
_, err := c.checkOrGetUUID(vmName)
assert.NoError(err, "expected no error during checkOrGetUUID")
}
func Test_IsPoweredOff(t *testing.T) {
assert := require.New(t)
vmName, ok := os.LookupEnv("OS_VM_NAME")
assert.True(ok, "expected env variable VM_NAME to be set")
vm := &migration.VirtualMachineImport{
Spec: migration.VirtualMachineImportSpec{
VirtualMachineName: vmName,
},
}
_, err := c.IsPoweredOff(vm)
assert.NoError(err, "expected no error during check of power status")
}
func Test_PowerOffVirtualMachine(t *testing.T) {
assert := require.New(t)
vmName, ok := os.LookupEnv("OS_VM_NAME")
assert.True(ok, "expected env variable VM_NAME to be set")
vm := &migration.VirtualMachineImport{
Spec: migration.VirtualMachineImportSpec{
VirtualMachineName: vmName,
},
}
err := c.PowerOffVirtualMachine(vm)
assert.NoError(err, "expected no error during check of power status")
}
func Test_ExportVirtualMachine(t *testing.T) {
assert := require.New(t)
vmName, ok := os.LookupEnv("OS_VM_NAME")
assert.True(ok, "expected env variable VM_NAME to be set")
vm := &migration.VirtualMachineImport{
Spec: migration.VirtualMachineImportSpec{
VirtualMachineName: vmName,
},
}
err := c.ExportVirtualMachine(vm)
assert.NoError(err, "expected no error during exportvirtualmachines")
assert.NotEmpty(vm.Status.DiskImportStatus, "expected diskimportstatus to be populated")
t.Log(vm.Status.DiskImportStatus)
}
func Test_GenerateVirtualMachine(t *testing.T) {
assert := require.New(t)
vmName := os.Getenv("OS_VM_NAME")
assert.NotEmpty(vmName, "expected env variable VM_NAME to be set")
vm := &migration.VirtualMachineImport{
Spec: migration.VirtualMachineImportSpec{
VirtualMachineName: vmName,
},
}
newVM, err := c.GenerateVirtualMachine(vm)
assert.NoError(err, "expected no error during GenerateVirtualMachine")
assert.NotEmpty(newVM.Spec.Template.Spec.Domain.CPU, "expected CPU's to not be empty")
assert.NotEmpty(newVM.Spec.Template.Spec.Domain.Resources.Limits.Memory(), "expected memory limit to not be empty")
assert.NotEmpty(newVM.Spec.Template.Spec.Networks, "expected to find atleast 1 network as pod network should have been applied")
assert.NotEmpty(newVM.Spec.Template.Spec.Domain.Devices.Interfaces, "expected to find atleast 1 interface for pod-network")
}