mirror of
https://github.com/mulgadc/spinifex.git
synced 2026-10-20 19:25:52 +00:00
86 lines
1.5 KiB
Go
86 lines
1.5 KiB
Go
package vm
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestExecute(t *testing.T) {
|
|
|
|
cfg := Config{
|
|
Name: "test-vm",
|
|
}
|
|
|
|
cmd, err := cfg.Execute()
|
|
|
|
// Expect error, CPU count required
|
|
assert.Error(t, err)
|
|
assert.ErrorContains(t, err, "cpu count is required")
|
|
assert.Nil(t, cmd)
|
|
|
|
cfg.CPUCount = 2
|
|
|
|
cmd, err = cfg.Execute()
|
|
|
|
// Expect error, Memory required
|
|
assert.Error(t, err)
|
|
assert.ErrorContains(t, err, "memory is required")
|
|
assert.Nil(t, cmd)
|
|
|
|
cfg.Memory = 1024
|
|
|
|
cmd, err = cfg.Execute()
|
|
|
|
// Expect error, at least one drive required
|
|
assert.Error(t, err)
|
|
assert.ErrorContains(t, err, "at least one drive is required")
|
|
assert.Nil(t, cmd)
|
|
|
|
cfg.Drives = []Drive{
|
|
{
|
|
File: "disk.img",
|
|
Format: "qcow2",
|
|
},
|
|
}
|
|
|
|
cfg.Architecture = "x86_64"
|
|
cmd, err = cfg.Execute()
|
|
|
|
// Now expect no error
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, cmd)
|
|
|
|
expectedArgs := []string{
|
|
"-smp", "2",
|
|
"-m", "1024",
|
|
"-drive", "file=disk.img,format=qcow2",
|
|
}
|
|
|
|
assert.Contains(t, cmd.Path, "qemu-system-x86_64")
|
|
assert.Equal(t, expectedArgs, cmd.Args[1:])
|
|
|
|
// Toggle Instance type to ARM
|
|
cfg.InstanceType = "t4g.micro"
|
|
cfg.Architecture = "arm64"
|
|
|
|
cmd, err = cfg.Execute()
|
|
|
|
// Now expect no error
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, cmd)
|
|
|
|
assert.Contains(t, cmd.Path, "qemu-system-aarch64")
|
|
assert.Equal(t, expectedArgs, cmd.Args[1:])
|
|
|
|
}
|
|
|
|
func TestGenerateEC2InstanceID(t *testing.T) {
|
|
id := GenerateEC2InstanceID()
|
|
|
|
assert.Len(t, id, 19)
|
|
assert.True(t, strings.HasPrefix(id, "i-"))
|
|
|
|
}
|