plugins/vendor/github.com/Microsoft/hcsshim/test/functional/utilities/createuvm.go
Nathan Gieseker 9a429d8d25 Windows: Updates Windows Vendoring
Updates windows dependent libraries for vendoing.
2019-01-23 18:43:18 -08:00

77 lines
2.0 KiB
Go

package testutilities
import (
"os"
"testing"
"github.com/Microsoft/hcsshim/internal/uvm"
)
// CreateWCOWUVM creates a WCOW utility VM with all default options. Returns the
// UtilityVM object; folder used as its scratch
func CreateWCOWUVM(t *testing.T, id, image string) (*uvm.UtilityVM, []string, string) {
return CreateWCOWUVMFromOptsWithImage(t, uvm.NewDefaultOptionsWCOW(id, ""), image)
}
// CreateWCOWUVMFromOpts creates a WCOW utility VM with the passed opts.
func CreateWCOWUVMFromOpts(t *testing.T, opts *uvm.OptionsWCOW) *uvm.UtilityVM {
if opts == nil || len(opts.LayerFolders) < 2 {
t.Fatalf("opts must bet set with LayerFolders")
}
uvm, err := uvm.CreateWCOW(opts)
if err != nil {
t.Fatal(err)
}
if err := uvm.Start(); err != nil {
uvm.Close()
t.Fatal(err)
}
return uvm
}
// CreateWCOWUVMFromOptsWithImage creates a WCOW utility VM with the passed opts
// builds the LayerFolders based on `image`. Returns the UtilityVM object;
// folder used as its scratch
func CreateWCOWUVMFromOptsWithImage(t *testing.T, opts *uvm.OptionsWCOW, image string) (*uvm.UtilityVM, []string, string) {
if opts == nil {
t.Fatal("opts must be set")
}
uvmLayers := LayerFolders(t, image)
scratchDir := CreateTempDir(t)
defer func() {
if t.Failed() {
os.RemoveAll(scratchDir)
}
}()
opts.LayerFolders = append(opts.LayerFolders, uvmLayers...)
opts.LayerFolders = append(opts.LayerFolders, scratchDir)
return CreateWCOWUVMFromOpts(t, opts), uvmLayers, scratchDir
}
// CreateLCOWUVM with all default options.
func CreateLCOWUVM(t *testing.T, id string) *uvm.UtilityVM {
return CreateLCOWUVMFromOpts(t, uvm.NewDefaultOptionsLCOW(id, ""))
}
// CreateLCOWUVMFromOpts creates an LCOW utility VM with the specified options.
func CreateLCOWUVMFromOpts(t *testing.T, opts *uvm.OptionsLCOW) *uvm.UtilityVM {
if opts == nil {
t.Fatal("opts must be set")
}
uvm, err := uvm.CreateLCOW(opts)
if err != nil {
t.Fatal(err)
}
if err := uvm.Start(); err != nil {
uvm.Close()
t.Fatal(err)
}
return uvm
}