diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3660730..0041304e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,15 +54,8 @@ jobs: - name: Run fast tests run: go test -v -race ./internal/... - - name: Set up Lima - uses: lima-vm/lima-actions/setup@03b96d61959e83b2c737e44162c3088e81de0886 # v1.0.1 - id: lima-actions-setup - - - name: Cache ~/.cache/lima - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 - with: - path: ~/.cache/lima - key: lima-${{ steps.lima-actions-setup.outputs.version }} + - name: Install podman + run: sudo apt-get update -qq && sudo apt-get install -y podman - name: Run e2e tests - run: go test -v ./e2e/... + run: go test -v -timeout 5m ./e2e/... diff --git a/e2e/limavm/debian.go b/e2e/limavm/debian.go deleted file mode 100644 index 6a865c31..00000000 --- a/e2e/limavm/debian.go +++ /dev/null @@ -1,13 +0,0 @@ -package limavm - -type Debian struct { - VM -} - -func NewDebian() (Debian, error) { - vm, err := newVM("debian") - if err != nil { - return Debian{}, err - } - return Debian{VM: vm}, nil -} diff --git a/e2e/limavm/docker.go b/e2e/limavm/docker.go deleted file mode 100644 index 3817ee30..00000000 --- a/e2e/limavm/docker.go +++ /dev/null @@ -1,21 +0,0 @@ -package limavm - -import ( - "github.com/arm/remoteproc-runtime/e2e/limavm/scripts" -) - -type Docker struct { - VM -} - -func NewDocker() (Docker, error) { - vm, err := newVM("docker") - if err != nil { - return Docker{}, err - } - return Docker{VM: vm}, nil -} - -func (vm Docker) BuildImage(buildContext string, imageName string) error { - return scripts.BuildImage(vm.name, "docker", buildContext, imageName) -} diff --git a/e2e/limavm/limavm.go b/e2e/limavm/limavm.go deleted file mode 100644 index 87ee6352..00000000 --- a/e2e/limavm/limavm.go +++ /dev/null @@ -1,149 +0,0 @@ -package limavm - -import ( - "bytes" - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" - "testing" - - "github.com/arm/remoteproc-runtime/e2e/limavm/scripts" -) - -type VM struct { - name string -} - -var BinBuildEnv = map[string]string{ - "GOOS": "linux", -} - -func newVM(template string) (VM, error) { - vmName, err := scripts.PrepareLimaVM(template) - return VM{name: vmName}, err -} - -func (vm VM) InstallBin(binToInstall string) (InstalledBin, error) { - installPath, err := scripts.InstallBin(vm.name, binToInstall) - if err != nil { - return InstalledBin{}, err - } - return InstalledBin{vm: vm, pathToBin: installPath}, nil -} - -func (vm VM) Cleanup() { - _ = scripts.TeardownLimaVM(vm.name) -} - -func (vm VM) Copy(sourcePathInHost string, destPathInVM string) (string, error) { - if err := os.CopyFS(destPathInVM, os.DirFS(sourcePathInHost)); err != nil { - return "", fmt.Errorf("failed to copy files to temporary location: %w: %s", err, destPathInVM) - } - - limaCopyCommand := exec.Command("limactl", "copy", "--recursive", destPathInVM, vm.name+":"+filepath.Dir(destPathInVM)+"/") - copyOutput, err := limaCopyCommand.CombinedOutput() - if err != nil { - return "", fmt.Errorf("failed to copy files to VM: %w: %s", err, copyOutput) - } - - err = os.RemoveAll(destPathInVM) - if err != nil { - return "", fmt.Errorf("failed to remove temporary copied files: %w: %s", err, destPathInVM) - } - return destPathInVM, nil -} - -func (vm VM) RemoveFile(pathInVM string) error { - _, stderr, err := vm.RunCommand("rm", "-rf", pathInVM) - if err != nil { - return fmt.Errorf("failed to remove file %s: %w: %s", pathInVM, err, stderr) - } - return nil -} - -func (vm VM) cmd(name string, args ...string) *exec.Cmd { - allArgs := append([]string{"shell", vm.name, name}, args...) - return exec.Command("limactl", allArgs...) -} - -func (vm VM) RunCommand(name string, args ...string) (stdout, stderr string, err error) { - cmd := vm.cmd(name, args...) - - var stdoutBuf, stderrBuf bytes.Buffer - cmd.Stdout = &stdoutBuf - cmd.Stderr = &stderrBuf - - err = cmd.Run() - stdout = stdoutBuf.String() - stderr = stderrBuf.String() - - if err != nil { - return stdout, stderr, fmt.Errorf("cmd failed: %w\nstdout:\n%s\nstderr:\n%s", err, stdout, stderr) - } - return stdout, stderr, nil -} - -func (vm VM) ReadFileAsString(path string) (string, error) { - stdout, stderr, err := vm.RunCommand("cat", path) - if err != nil { - return "", fmt.Errorf("failed to read file %s: %w\nstderr:\n%s", path, err, stderr) - } - return stdout, nil -} - -func (vm VM) ReadDir(path string) ([]string, error) { - stdout, stderr, err := vm.RunCommand("ls", "-1", path) - if err != nil { - return nil, fmt.Errorf("failed to read directory %s: %w\nstderr:\n%s", path, err, stderr) - } - entries := []string{} - for _, line := range strings.Split(stdout, "\n") { - line = strings.TrimSpace(line) - if line != "" { - entries = append(entries, line) - } - } - return entries, nil -} - -type Runnable interface { - Run(args ...string) (stdout, stderr string, err error) -} - -type InstalledBin struct { - vm VM - pathToBin string -} - -func (b InstalledBin) Run(args ...string) (stdout, stderr string, err error) { - return b.vm.RunCommand(b.pathToBin, args...) -} - -func (b InstalledBin) Command(args ...string) *exec.Cmd { - return b.vm.cmd(b.pathToBin, args...) -} - -func (b InstalledBin) Path() string { - return b.pathToBin -} - -type Sudo struct { - vm VM - pathToBin string -} - -func NewSudo(b InstalledBin) Sudo { - return Sudo(b) -} - -func (r Sudo) Run(args ...string) (stdout, stderr string, err error) { - return r.vm.RunCommand("sudo", append([]string{r.pathToBin}, args...)...) -} - -func Require(t *testing.T) { - if _, err := exec.LookPath("limactl"); err != nil { - t.Skip("limactl not found. Install limavm: https://lima-vm.io/") - } -} diff --git a/e2e/limavm/podman.go b/e2e/limavm/podman.go deleted file mode 100644 index 65e55641..00000000 --- a/e2e/limavm/podman.go +++ /dev/null @@ -1,21 +0,0 @@ -package limavm - -import ( - "github.com/arm/remoteproc-runtime/e2e/limavm/scripts" -) - -type Podman struct { - VM -} - -func NewPodman() (Podman, error) { - vm, err := newVM("podman") - if err != nil { - return Podman{}, err - } - return Podman{VM: vm}, nil -} - -func (vm Podman) BuildImage(buildContext string, imageName string) error { - return scripts.BuildImage(vm.name, "podman", buildContext, imageName) -} diff --git a/e2e/limavm/scripts/build-image.sh b/e2e/limavm/scripts/build-image.sh deleted file mode 100755 index ea9f4cd6..00000000 --- a/e2e/limavm/scripts/build-image.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash - -set -e - -VM_NAME="" -TEMPLATE="" -BUILD_CONTEXT="" -IMAGE_NAME="" - -usage() { - echo "Usage: $0