Skip to content

Commit 6015c8e

Browse files
committed
docs(podman): document and track the e2e-podman rootful coverage gap
Address the rootless/rootful-scope acceptance criterion in #3712: document why the e2e-podman archive runs rootless-only in branch CI (unlike driver-podman, which runs both), and file a tracking issue for the one confirmed gap. - podman_host_gateway was checked directly rather than assumed: the outer container's host-gateway alias uses Podman's own native "host-gateway" value (resolved identically in both modes), and the supervisor-side resolution defaults to a hardcoded 127.0.0.1 on Linux regardless of rootful/rootless. No real coverage gap there. - podman_resource_limits is the one confirmed exception: it reads real cgroup v2 state, and rootless cgroup delegation is the harder, already-covered case. Rootful is unverified. Tracked in #4163, which also notes the e2e-podman tmachine playbook hardcodes rootless-only values and would need the same tmachine_container_runtime role pattern #3663 already proved out for the driver-podman suite. - CI.md and tests/artifacts.nix both say plainly that closing #4163 means running the whole archive rootful, not just the one target that needs it -- nextest archive filters select whole binaries, so there's no cheaper way to isolate just podman_resource_limits. Signed-off-by: politerealism <burdcat17@gmail.com>
1 parent 7b272b5 commit 6015c8e

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

‎CI.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ naming any selected manual-only benchmarks separately, so a narrow run cannot
8888
be mistaken for full Podman coverage. See `nix run .#podman-e2e-coverage-summary`
8989
in TESTING.md.
9090

91+
The `driver-podman` testsuite runs both rootful and rootless Fedora Podman;
92+
`e2e-podman` runs rootless only. This is deliberate, not an oversight: see the
93+
comment on `podmanE2eArchive` in `tests/artifacts.nix` for which targets would
94+
and would not benefit from a rootful leg. Only `podman_resource_limits` does,
95+
but nextest archive filters select whole binaries, so closing that gap (tracked
96+
in #4163) means running this entire archive rootful too, not just that one
97+
target.
98+
9199
Three opt-in labels enable the long-running E2E suites:
92100

93101
- `test:e2e` runs the Docker, rootless Podman, Kubernetes, and VM E2E suites

‎tests/artifacts.nix‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,32 @@ let
252252
target = muslToolchain.target;
253253
output = "artifacts/test-archives/${muslToolchain.target}/openshell-podman-tests.tar";
254254
};
255+
# Runs rootless-only in branch CI today (see .github/workflows/branch-e2e.yml's
256+
# driver-specific-integration matrix), unlike podmanDriverArchive above, which
257+
# runs both rootful and rootless. This is a deliberate scoping decision, not an
258+
# oversight (#3712): most of this archive's selected targets (sandbox/workspace
259+
# lifecycle, labels, templates, port forwarding, uploads, settings) exercise
260+
# driver-agnostic gateway/policy logic with no privilege-model sensitivity, so a
261+
# rootful leg would duplicate coverage without catching anything new.
262+
#
263+
# podman_host_gateway was checked specifically (host.openshell.internal
264+
# resolution plausibly depends on the rootless pasta/slirp4netns vs. rootful
265+
# netavark/CNI network backend) and confirmed NOT privilege-sensitive: the
266+
# outer container's /etc/hosts entry uses Podman's own native "host-gateway"
267+
# alias value (container.rs), which Podman resolves identically in both
268+
# modes, and the supervisor-side resolution defaults to a hardcoded
269+
# 127.0.0.1 on Linux regardless of rootful/rootless
270+
# (PodmanComputeConfig::resolved_host_gateway_ip in config.rs). No rootful
271+
# coverage gap here.
272+
#
273+
# The one confirmed exception is podman_resource_limits, which reads real
274+
# cgroup v2 state from inside the sandbox: rootless cgroup delegation
275+
# depends on systemd-user `Delegate=` and can silently no-op if
276+
# misconfigured, making rootless the harder, higher-risk case -- already
277+
# covered here. Rootful is the lower-risk, currently-unverified path for
278+
# that one target. Tracked in #4163; since nextest archive filters select
279+
# whole binaries, closing that gap means running this entire archive
280+
# rootful too, not just the one target that needs it.
255281
podmanE2eArchive = mkTestArchive {
256282
name = "podman-e2e";
257283
workspacePath = "e2e/rust";

0 commit comments

Comments
 (0)