Skip to content

test(e2e): add VM-backed E2E suite runner - #2473

Draft
drew wants to merge 2 commits into
drew/e2e-vm-examplefrom
drew/vm-e2e-integ
Draft

test(e2e): add VM-backed E2E suite runner#2473
drew wants to merge 2 commits into
drew/e2e-vm-examplefrom
drew/vm-e2e-integ

Conversation

@drew

@drew drew commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Add a local E2E runner that can build OpenShell from the current checkout, launch the gateway in a disposable QEMU VM provided by #2471, and execute a named host-side suite against a consistent loopback endpoint. The same entry point also supports running the gateway directly on the host.

Stack

Child of #2471, which provides the base QEMU VM infrastructure.

Related Issue

N/A — internal E2E infrastructure slice.

Changes

  • Add repeatable loopback-only QEMU port forwarding with validation before VM realization
  • Add e2e/run.sh with explicit host and VM modes, native and cross builds, portable supervisor staging, isolated gateway metadata, lifecycle management, and readiness checks
  • Add the initial portable Docker gateway configuration and driver-neutral smoke suite
  • Add the independent mise run e2e:run -- ... passthrough task
  • Document mode selection, build targets and prerequisites, configuration and suite extension points, forwarding, and retained state

Testing

  • mise run pre-commit passes
  • Unit tests added/updated (not applicable; production Rust behavior is unchanged)
  • E2E tests added/updated (host and Ubuntu/Docker VM smoke both pass)
  • bash -n nix/vm/run.sh e2e/run.sh e2e/suites/smoke.sh
  • shellcheck nix/vm/run.sh e2e/run.sh e2e/suites/smoke.sh
  • nix fmt
  • git diff --check
  • Argument, suite, catalog, and port-forward validation cases
  • Host/VM suite contract, exact suite exit status, cleanup, retained state, and byte-identical guest configuration checks

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • VM developer workflow documentation updated
  • Parent PR is linked

Podman VM coverage

  • Add VM-only guest setup hooks for checkout-specific preparation before gateway startup
  • Build the checkout supervisor image in the Ubuntu guest through the rootless Podman API service
  • Relay the rootless netavark bridge to the VM-host gateway for supervisor callbacks
  • Add a reusable Podman sandbox shutdown suite with opt-in transport-close classification assertions for stacked changes

Validated with the Ubuntu ARM64 Nix VM, rootless Podman 4.9.3, and a real sandbox create/delete lifecycle.

@drew
drew requested review from a team, derekwaynecarr, maxamillion and mrunalp as code owners July 24, 2026 21:20
@drew
drew changed the base branch from drew/fedora-release-canary-vms to drew/e2e-vm-example July 24, 2026 21:29
@drew drew changed the title feat(e2e): add host and Nix test-VM runner test(e2e): add VM-backed E2E suite runner Jul 24, 2026
@drew
drew marked this pull request as draft July 24, 2026 22:32
@copy-pr-bot

copy-pr-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@drew
drew force-pushed the drew/vm-e2e-integ branch from 0bcfd1a to b23f969 Compare July 24, 2026 23:16
@drew
drew force-pushed the drew/e2e-vm-example branch from a9988d0 to 41f2720 Compare July 24, 2026 23:17
@copy-pr-bot

copy-pr-bot Bot commented Jul 27, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@drew
drew force-pushed the drew/vm-e2e-integ branch from 36bebe9 to 526ca3c Compare July 28, 2026 18:57
drew added 2 commits July 28, 2026 12:28
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
@drew
drew force-pushed the drew/vm-e2e-integ branch from 526ca3c to f2a2bd2 Compare July 28, 2026 19:29
@drew
drew force-pushed the drew/e2e-vm-example branch from 4f528ef to 52cb5e1 Compare July 28, 2026 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant