59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
package testutilities
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/hcs"
|
|
"github.com/Microsoft/hcsshim/internal/lcow"
|
|
"github.com/Microsoft/hcsshim/internal/uvm"
|
|
"github.com/Microsoft/hcsshim/internal/wclayer"
|
|
)
|
|
|
|
const lcowGlobalSVMID = "test.lcowglobalsvm"
|
|
|
|
var (
|
|
lcowGlobalSVM *uvm.UtilityVM
|
|
lcowCacheScratchFile string
|
|
)
|
|
|
|
func init() {
|
|
if hcsSystem, err := hcs.OpenComputeSystem(lcowGlobalSVMID); err == nil {
|
|
hcsSystem.Terminate()
|
|
}
|
|
}
|
|
|
|
// CreateWCOWBlankRWLayer uses HCS to create a temp test directory containing a
|
|
// read-write layer containing a disk that can be used as a containers scratch
|
|
// space. The VHD is created with VM group access
|
|
// TODO: This is wrong. Need to search the folders.
|
|
func CreateWCOWBlankRWLayer(t *testing.T, imageLayers []string) string {
|
|
|
|
// uvmFolder, err := LocateUVMFolder(imageLayers)
|
|
// if err != nil {
|
|
// t.Fatalf("failed to locate UVM folder from %+v: %s", imageLayers, err)
|
|
// }
|
|
|
|
tempDir := CreateTempDir(t)
|
|
if err := wclayer.CreateScratchLayer(tempDir, imageLayers); err != nil {
|
|
t.Fatalf("Failed CreateScratchLayer: %s", err)
|
|
}
|
|
return tempDir
|
|
}
|
|
|
|
// CreateLCOWBlankRWLayer uses an LCOW utility VM to create a blank
|
|
// VHDX and format it ext4. If vmID is supplied, it grants access to the
|
|
// destination file. This can then be used as a scratch space for a container,
|
|
// or for a "service VM".
|
|
func CreateLCOWBlankRWLayer(t *testing.T, vmID string) string {
|
|
if lcowGlobalSVM == nil {
|
|
lcowGlobalSVM = CreateLCOWUVM(t, lcowGlobalSVMID)
|
|
lcowCacheScratchFile = filepath.Join(CreateTempDir(t), "sandbox.vhdx")
|
|
}
|
|
tempDir := CreateTempDir(t)
|
|
|
|
if err := lcow.CreateScratch(lcowGlobalSVM, filepath.Join(tempDir, "sandbox.vhdx"), lcow.DefaultScratchSizeGB, lcowCacheScratchFile, vmID); err != nil {
|
|
t.Fatalf("failed to create EXT4 scratch for LCOW test cases: %s", err)
|
|
}
|
|
return tempDir
|
|
}
|