Skip to main content
Version: master

Manual Testing

Driving an appengine container by hand, with no test harness involved — the quick loop while coding on pantavisor or on a container recipe. For the structured pvtest suite see Automated Testing.

This page covers the layer's half: building the image and getting it onto your docker host. Everything about the container once it exists — the entrypoint, its config, storage and log layout, pventer/pvcurl/pvcontrol recipes, cleanup — is the runtime's own documentation, in the pantavisor repo at docs/overview/appengine.md, since that is where pv-appengine lives.

Build

./kas-container build kas/build-configs/release/docker-x86_64-scarthgap.yaml

To test local pantavisor changes, build with the :kas/with-workspace.yaml overlay. externalsrc does not change task signatures, so force a fresh compile or sstate may serve a stale binary:

./kas-container shell <cfg>:kas/with-workspace.yaml -c \
"bitbake -c cleansstate pantavisor && bitbake pantavisor-appengine-distro"

Build the example containers a given test plan needs with --target pv-example-<name>; each plan under testplans/ lists its own.

BitBake may not detect file-level changes inside a recipe's files/ directory, so force a clean rebuild when touching container payloads or test data — see the automated page for the full cleansstate incantation.

Load

docker load < build/tmp-scarthgap/deploy/images/docker-x86_64/pantavisor-appengine-docker.tar

Container pvrexports for the appengine's first-boot pvtx.d:

mkdir -p pvtx.d
cp build/tmp-scarthgap/deploy/images/docker-x86_64/pv-example-*.pvrexport.tgz pvtx.d/

From here, see the pantavisor repo's docs/overview/appengine.md for how to start and drive the container.

Build-side troubleshooting

SymptomCauseFix
xconnect/pvcontrol/rngdaemon missing from the image+= used in a distro includeUse :append for PANTAVISOR_FEATURES+= clobbers the ??= defaults from pvbase.bbclass
path mismatch [1 link]Pseudo database corruptionbitbake -c cleansstate <recipe>
pvtx.d not processed at bootStorage volume reused from a previous rundocker volume rm storage-test
Stale binary after a source changeexternalsrc doesn't change task signaturesbitbake -c cleansstate pantavisor before rebuilding

Test plans

Per-feature plans, each a manual sequence of setup → execute → verify:

PlanCoverage
testplan-auto-recovery.mdContainer restart policies, exponential backoff, group inheritance
testplan-container-control.mdContainer lifecycle API (stop/start/restart, user_stopped, batch jobs)
testplan-pvctrl.mdFull pv-ctrl REST API coverage
testplan-xconnect.mdxconnect service mesh (unix, D-Bus, REST, DRM, Wayland)
testplan-ipam.mdIPAM pool-based container networking, NAT backend selection
testplan-pvtx.mdpvtx transaction tool unit tests (no Pantavisor needed)
testplan-cgroup.mdcgroup HYBRID-mode destroy and no-suffix accumulation (lenient + force stop)