Repository navigation
test(e2e): migrate the features and drivers suites to testkit - #5137
Open
matthewgrossman wants to merge 8 commits into
Open
matthewgrossman wants to merge 8 commits into
matthewgrossman wants to merge 8 commits into
Conversation
|
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. |
|
🌿 Preview your docs: https://nvidia-preview-pr-5137.docs.buildwithfern.com/openshell |
Member
Author
|
/ok to test b07fbc4 |
|
Label |
Member
Author
|
/ok to test 78af387 |
matthewgrossman
force-pushed
the
test/3954-migrate-features-drivers/matthewgrossman
branch
from
November 2, 2026 21:06
78af387 to
7a8d936
Compare
Member
Author
|
/ok to test 7a8d936 |
4 of 6 tasks
Member
Author
|
/ok to test e9281a5 |
matthewgrossman
force-pushed
the
test/3954-migrate-features-drivers/matthewgrossman
branch
from
November 2, 2026 23:07
7a8d936 to
e9281a5
Compare
Base automatically changed from
test/3954-host-lanes-to-testkit/matthewgrossman
to
main
November 3, 2026 02:26
Add the container-engine and podman support crates for suites that build images into the gateway's store or compare against Podman's own containers, and add expect_compute_driver and base_image to testkit. Run the support crates' unit tests in the Rust test lists. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Rewrite tests/suites/features/oci-image as testkit tests (package oci-image) that build their images through OPENSHELL_TEST_CONTAINER_ENGINE, which the Docker and Podman environments now publish. Run it through e2e-suites.yml on the Docker rootful, Podman rootful and Podman rootless rows, and retire the tmachine oci-image testsuite, its playbook and its archive. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Add fedora-podman-{rootful,rootless}-keycloak environments and run keycloak-provider-refresh there with the rpm installer, replacing the old provider-refresh crate, its tmachine testsuite and its archive. Podman has no daemon to restart Keycloak at boot, so start the container with --restart always and enable podman-restart.service for the user that runs it.
feature-specific-integration now runs the features family through e2e-suites.yml in Branch E2E, Release Dev and Release Qualification, and absorbs Branch E2E's separate e2e-suites job.
Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Rewrite tests/suites/drivers/podman as a testkit test (package podman-driver) that compares a sandbox's UID map with the one Podman gives a container in the same user-namespace mode. Each fedora-podman-{rootful,rootless}-userns-<mode> environment configures that mode for the binaries installer's gateway and publishes it; the packaged installers refuse such environments rather than test without the mode.
driver-specific-integration now runs the drivers family through e2e-suites.yml, and the e2e-podman tmachine row moves to its own podman-e2e-integration job. Retire the driver-podman testsuite, its playbooks, fixtures and archive.
Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Every suite that used the CLI conformance library now runs on testkit, so remove the crate, its lockfile entry and its row in the AGENTS.md architecture table. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
…andbox In auto mode Podman gives each running container its own UID range. The ported test ran the reference container while the sandbox still held the first range, so the reference got the next one and the auto rows failed. Run the reference first, as the old playbooks did, and let it pull the base image if it is missing. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
The old default-userns baseline asserted that gateway.toml had no userns, uidmap or gidmap settings. The driver fragment is now their only source, so remove it in default mode instead of only skipping the write. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Member
Author
|
/ok to test d0d6e10 |
matthewgrossman
force-pushed
the
test/3954-migrate-features-drivers/matthewgrossman
branch
from
November 3, 2026 02:29
e9281a5 to
d0d6e10
Compare
matthewgrossman
marked this pull request as ready for review
November 3, 2026 06:16
matthewgrossman
requested review from
a team,
derekwaynecarr,
mrunalp and
sjenning
as code owners
November 3, 2026 06:16
Replace the per-package cargo fmt and cargo clippy lines for the conformance, drivers and features test workspaces with one line per workspace, in the Branch Checks Format and Lint steps and in the rust:lint, rust:format and rust:format:check tasks. New suite crates are covered without editing the lint lists, and the features workspace's kubernetes-updates crate is now linted; it raises no warnings. Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
Member
Author
|
/ok to test 988d5c3 |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Port the remaining suites that still use
crates/openshell-conformance(features/oci-image,features/provider-refresh/keycloakand the Podman user-namespace suite indrivers/podman) to testkit, and run them throughe2e-suites.ymlwith explicit CI rows. This is a parity change: each suite keeps its current environments and installers. The last commit deletescrates/openshell-conformance.Related Issue
Part of #3954
Changes
tests/support):container-enginebuilds images into the gateway's image store throughOPENSHELL_TEST_CONTAINER_ENGINE.podmanreadsOPENSHELL_TEST_PODMAN_USERNSand computes Podman's own UID map for a mode. testkit gainsContext::expect_compute_driverandtestkit::base_image()(OPENSHELL_TEST_BASE_IMAGE, or the default sandbox image). The support unit tests run in the Rust test lists.tests/suites/features/oci-image, package renamed tooci-image): rewritten as#[testkit::test]tests. The Docker, rootful Podman and rootless Podman environments publishOPENSHELL_TEST_CONTAINER_ENGINE(docker,sudo -n podman,podman).mise run e2e:oci-image(:podman)and the ARM64 Docker lane use the new package name.keycloak-provider-refresh, from test(features): run feature tests against environment services, starting with Keycloak #4891) already matches the old test. This PR adds thefedora-podman-{rootful,rootless}-keycloakenvironments for it and deletes the oldprovider-refresh/keycloakcrate. On Podman, thekeycloakrole now starts the container with--restart alwaysand enablespodman-restart.service(the system unit when rootful, tmachine's user unit when rootless), so Keycloak comes back when a cached disk boots. Docker keepsunless-stopped.tests/suites/drivers/podman, packagepodman-driver, becausepodmanis the support crate's name): one test compares the sandbox's UID map with Podman's for the configured mode and checks that the non-root workload owns and can write/sandbox. As in the old playbooks, the reference container runs and is removed before the sandbox is created: inautomode Podman gives each running container its own range, so the sandbox gets the range the reference released.fedora-podman-{rootful,rootless}-userns-{default,auto,keep-id,private}, runplaybooks/drivers/podman/userns.yaml. It writes the mode's[openshell.drivers.podman]settings to/etc/openshell-test/podman-driver.tomland publishesOPENSHELL_TEST_PODMAN_USERNS. Indefaultmode it removes that file, sogateway.tomlhas nouserns,uidmaporgidmapsettings (the old baseline asserted this).openshell_gatewayrole (binariesinstaller) adds those settings togateway.tomlbefore the gateway starts. The packaged installers fail on such an environment instead of testing without the mode.default-userns-baseline.yaml,tests.yamland theuserns-*.yamlplaybooks.feature-specific-integration(Branch E2E, Release Dev, Release Qualification; job ID kept) now callse2e-suites.ymlwithfamily: features. Branch E2E's separatee2e-suitesjob is folded into it.driver-specific-integration(Branch E2E) calls it withfamily: drivers.e2e-podmanrow is unchanged and moves to its ownpodman-e2e-integrationjob, which is added to the Core E2E result.e2e-podmanrow.oci-image,provider-refreshanddriver-podmantestsuites, their playbooks, fixtures and test archives.tests/suites/driversis added toALIGNED_WORKSPACES. The fmt/clippy lists (Branch Checks Format and Lint steps,rust:lint,rust:format,rust:format:check) now run once per test workspace (conformance,drivers,features) instead of once per package, so new suite crates need no lint-list edit. This also lintsfeatures/kubernetes-updatesfor the first time; it raises no warnings.TESTING.mdandCI.mdare updated.CI rows after this PR (
e2e-suites.yml):keycloak-provider-refreshubuntu-docker-rootful-keycloakkeycloak-provider-refreshfedora-podman-{rootful,rootless}-keycloakoci-imageubuntu-docker-rootfuloci-imagefedora-podman-{rootful,rootless}podman-driverfedora-podman-{rootful,rootless}-userns-{default,auto,keep-id,private}The drivers family runs only in Branch E2E, as
driver-specific-integrationdoes today. The Docker Keycloak row now also runs in Release Dev and Release Qualification, because it belongs to the features family.Still to come in this PR: nothing. The last commit deletes
crates/openshell-conformance, itsCargo.lockentry and itsAGENTS.mdarchitecture row. No other code used the crate. tmachine'stestsuiteslist is now justshell(interactive) ande2e-podman.nextest.yamlstays because the runner rows still run nextest in the guest.Cleanup of providers, settings and fixture resources stays inline, as in the old suites, so a panic can leak them. Names are unique and the VMs are throwaway.
Testing
cargo fmtandcargo clippy -D warningsfor every list entry, including each whole test workspace,cargo check --workspace --locked, lockfile checks and alignment,mise run rust:deny:policy,mise run license:check,markdownlint-cli2, actionlint (no new findings), zizmor (no new findings against main),ansible-playbook --syntax-checkon the changed playbooks, andnix build .#tmachine-configtests/supportUID-map normalizationLocal runs:
mise run e2e:oci-imageagainst a local Docker gateway: 6/6 passed, with no images or sandboxes left behind. Changing an expected UID made the test fail and still clean up.gateway-podman.toml.j2template rendered for the default andprivatemodes and parsed as TOML.sudo -n podmancompared with the old playbooks' context, in a Fedora 44 container:sudo -nsetsHOME=/rootand dropsXDG_RUNTIME_DIR, but rootful Podman's graph root, run root, temp directory and socket are identical to the oldHOME=/root XDG_RUNTIME_DIR=/run/user/0context. Rootless runs astmachineover SSH, where PAM setsXDG_RUNTIME_DIR.Not verified locally (tmachine needs an amd64 KVM host): every tmachine row in the table above, including the Podman OCI rows, the eight user-namespace rows, the Fedora Keycloak rows, and Keycloak restarting after a cached-disk boot.
Checklist