mirror of https://github.com/containers/podman.git
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package e2e_test
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
url2 "net/url"
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/containers/podman/v5/pkg/machine"
|
|
"github.com/containers/podman/v5/pkg/machine/compression"
|
|
"github.com/containers/podman/v5/pkg/machine/define"
|
|
"github.com/containers/podman/v5/pkg/machine/wsl"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
)
|
|
|
|
func pullWSLDisk() error {
|
|
downloadLocation := os.Getenv("MACHINE_IMAGE")
|
|
if downloadLocation == "" {
|
|
dl, _, _, _, err := wsl.GetFedoraDownloadForWSL()
|
|
if err != nil {
|
|
return errors.New("unable to determine WSL download")
|
|
}
|
|
downloadLocation = dl.String()
|
|
}
|
|
|
|
if downloadLocation == "" {
|
|
return errors.New("machine tests require a file reference to a disk image right now")
|
|
}
|
|
compressionExtension := ".zst"
|
|
suiteImageName = strings.TrimSuffix(path.Base(downloadLocation), compressionExtension)
|
|
fqImageName = filepath.Join(tmpDir, suiteImageName)
|
|
getMe, err := url2.Parse(downloadLocation)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to create url for download: %q", err)
|
|
}
|
|
now := time.Now()
|
|
if err := machine.DownloadVMImage(getMe, suiteImageName, fqImageName+compressionExtension); err != nil {
|
|
return fmt.Errorf("unable to download machine image: %q", err)
|
|
}
|
|
GinkgoWriter.Println("Download took: ", time.Since(now).String())
|
|
diskImage, err := define.NewMachineFile(fqImageName+compressionExtension, nil)
|
|
if err != nil {
|
|
return fmt.Errorf("unable to create vmfile %q: %v", fqImageName+compressionExtension, err)
|
|
}
|
|
compressionStart := time.Now()
|
|
if err := compression.Decompress(diskImage, fqImageName); err != nil {
|
|
return fmt.Errorf("unable to decompress image file: %q", err)
|
|
}
|
|
GinkgoWriter.Println("compression took: ", time.Since(compressionStart))
|
|
return nil
|
|
}
|