mirror of
https://github.com/containers/podman.git
synced 2025-12-10 15:47:46 +08:00
This PR is a mishmash of updates needed so that the hyperv provider can begin to passd the machine e2e tests. Summary as follows: * Added custom error handling for machine errors so that all providers can generate the same formatted error messages. The ones implemented thus far are needed for the basic and init tests. More will come as they are identified. * Vendored new libhvee for better memory inspection. The memory type changed from uint32 to uint64. * Some machine e2e tests used linux-specific utilities to check various error conditions and messages (like pgrep). Those were made into functions and implemented on an operating system level. [NO NEW TESTS NEEDED] Signed-off-by: Brent Baude <bbaude@redhat.com>
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package e2e_test
|
|
|
|
import (
|
|
"fmt"
|
|
"os/exec"
|
|
"strings"
|
|
|
|
"github.com/containers/podman/v4/pkg/machine"
|
|
"github.com/containers/podman/v4/pkg/machine/wsl"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
)
|
|
|
|
const podmanBinary = "../../../bin/windows/podman.exe"
|
|
|
|
func getDownloadLocation(_ machine.VirtProvider) string {
|
|
fd, err := wsl.NewFedoraDownloader(machine.WSLVirt, "", defaultStream.String())
|
|
if err != nil {
|
|
Fail("unable to get WSL virtual image")
|
|
}
|
|
return fd.Get().URL.String()
|
|
}
|
|
|
|
// pgrep emulates the pgrep linux command
|
|
func pgrep(n string) (string, error) {
|
|
// add filter to find the process and do no display a header
|
|
args := []string{"/fi", fmt.Sprintf("IMAGENAME eq %s", n), "/nh"}
|
|
out, err := exec.Command("tasklist.exe", args...).Output()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
strOut := string(out)
|
|
// in pgrep, if no running process is found, it exits 1 and the output is zilch
|
|
if strings.Contains(strOut, "INFO: No tasks are running which match the specified search") {
|
|
return "", fmt.Errorf("no task found")
|
|
}
|
|
return strOut, nil
|
|
}
|