mirror of
https://github.com/containers/podman.git
synced 2025-11-01 22:32:50 +08:00
Add podman machine test suite
This PR introduces a test suite for podman machine. It can currently be run on developers' local machines and is not part of the official CI testing; however, the expectation is that any work on machine should come with an accompanying test. At present, the test must be run on Linux. It is untested on Darwin. There is no Makefile target for the test. It can be run like `ginkgo -v pkg/machine/test/.`. It should be run as a unprivileged user. Signed-off-by: Brent Baude <bbaude@redhat.com>
This commit is contained in:
101
pkg/machine/e2e/config_init.go
Normal file
101
pkg/machine/e2e/config_init.go
Normal file
@ -0,0 +1,101 @@
|
||||
package e2e
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type initMachine struct {
|
||||
/*
|
||||
--cpus uint Number of CPUs (default 1)
|
||||
--disk-size uint Disk size in GB (default 100)
|
||||
--ignition-path string Path to ignition file
|
||||
--image-path string Path to qcow image (default "testing")
|
||||
-m, --memory uint Memory in MB (default 2048)
|
||||
--now Start machine now
|
||||
--rootful Whether this machine should prefer rootful container exectution
|
||||
--timezone string Set timezone (default "local")
|
||||
-v, --volume stringArray Volumes to mount, source:target
|
||||
--volume-driver string Optional volume driver
|
||||
|
||||
*/
|
||||
cpus *uint
|
||||
diskSize *uint
|
||||
ignitionPath string
|
||||
imagePath string
|
||||
memory *uint
|
||||
now bool
|
||||
timezone string
|
||||
volumes []string
|
||||
|
||||
cmd []string
|
||||
}
|
||||
|
||||
func (i *initMachine) buildCmd(m *machineTestBuilder) []string {
|
||||
cmd := []string{"machine", "init"}
|
||||
if i.cpus != nil {
|
||||
cmd = append(cmd, "--cpus", strconv.Itoa(int(*i.cpus)))
|
||||
}
|
||||
if i.diskSize != nil {
|
||||
cmd = append(cmd, "--disk-size", strconv.Itoa(int(*i.diskSize)))
|
||||
}
|
||||
if l := len(i.ignitionPath); l > 0 {
|
||||
cmd = append(cmd, "--ignition-path", i.ignitionPath)
|
||||
}
|
||||
if l := len(i.imagePath); l > 0 {
|
||||
cmd = append(cmd, "--image-path", i.imagePath)
|
||||
}
|
||||
if i.memory != nil {
|
||||
cmd = append(cmd, "--memory", strconv.Itoa(int(*i.memory)))
|
||||
}
|
||||
if l := len(i.timezone); l > 0 {
|
||||
cmd = append(cmd, "--timezone", i.timezone)
|
||||
}
|
||||
for _, v := range i.volumes {
|
||||
cmd = append(cmd, "--volume", v)
|
||||
}
|
||||
if i.now {
|
||||
cmd = append(cmd, "--now")
|
||||
}
|
||||
cmd = append(cmd, m.name)
|
||||
i.cmd = cmd
|
||||
return cmd
|
||||
}
|
||||
|
||||
func (i *initMachine) withCPUs(num uint) *initMachine {
|
||||
i.cpus = &num
|
||||
return i
|
||||
}
|
||||
func (i *initMachine) withDiskSize(size uint) *initMachine {
|
||||
i.diskSize = &size
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *initMachine) withIgnitionPath(path string) *initMachine {
|
||||
i.ignitionPath = path
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *initMachine) withImagePath(path string) *initMachine {
|
||||
i.imagePath = path
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *initMachine) withMemory(num uint) *initMachine {
|
||||
i.memory = &num
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *initMachine) withNow() *initMachine {
|
||||
i.now = true
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *initMachine) withTimezone(tz string) *initMachine {
|
||||
i.timezone = tz
|
||||
return i
|
||||
}
|
||||
|
||||
func (i *initMachine) withVolume(v string) *initMachine {
|
||||
i.volumes = append(i.volumes, v)
|
||||
return i
|
||||
}
|
||||
Reference in New Issue
Block a user