48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package functional
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/hcs"
|
|
"github.com/Microsoft/hcsshim/internal/hcsoci"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var pauseDurationOnCreateContainerFailure time.Duration
|
|
|
|
func init() {
|
|
if len(os.Getenv("HCSSHIM_FUNCTIONAL_TESTS_DEBUG")) > 0 {
|
|
logrus.SetLevel(logrus.DebugLevel)
|
|
logrus.SetFormatter(&logrus.TextFormatter{FullTimestamp: true})
|
|
}
|
|
|
|
// This allows for debugging a utility VM.
|
|
s := os.Getenv("HCSSHIM_FUNCTIONAL_TESTS_PAUSE_ON_CREATECONTAINER_FAIL_IN_MINUTES")
|
|
if s != "" {
|
|
if t, err := strconv.Atoi(s); err == nil {
|
|
pauseDurationOnCreateContainerFailure = time.Duration(t) * time.Minute
|
|
}
|
|
}
|
|
|
|
// Try to stop any pre-existing compute processes
|
|
cmd := exec.Command("powershell", `get-computeprocess | stop-computeprocess -force`)
|
|
cmd.Run()
|
|
|
|
}
|
|
|
|
func CreateContainerTestWrapper(options *hcsoci.CreateOptions) (*hcs.System, *hcsoci.Resources, error) {
|
|
if pauseDurationOnCreateContainerFailure != 0 {
|
|
options.DoNotReleaseResourcesOnFailure = true
|
|
}
|
|
s, r, err := hcsoci.CreateContainer(options)
|
|
if err != nil {
|
|
logrus.Warnf("Test is pausing for %s for debugging CreateContainer failure", pauseDurationOnCreateContainerFailure)
|
|
time.Sleep(pauseDurationOnCreateContainerFailure)
|
|
hcsoci.ReleaseResources(r, options.HostingSystem, true)
|
|
}
|
|
return s, r, err
|
|
}
|