binctr/vendor/github.com/Microsoft/hcsshim/functional/utilities/scratch.go
Jess Frazelle 94d1cfbfbf
update vendor
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
2018-09-25 12:27:46 -04:00

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
}