Skip to main content
Version: 030

pvtest List

Every pvtest, by scope and category, with implementation status. Keep this in sync with the tree: when a pvtest is added, modified or removed, update the table below (and TODO.md) and mark completed tests ✓.

Test data lives under recipes-pv/pantavisor-pvtests/files/{local,remote}/. See appengine.md for how to add or update one.

local — local experience tests​

Local experience tests exercise Pantavisor features that operate without any cloud connectivity. These tests cover the ctrl server's unix socket API, container lifecycle, runtime behavior, security policies, and local services.

core​

Core Pantavisor initialization: config loading, config validation, namespace setup.

TestDescriptionDone
local/core/legacy-config-overloadLegacy configuration overload✓
local/core/modern-config-overloadModern configuration overload (Env/Cmdline)✓
local/core/invalid-config-valuesInvalid Configuration Values Handling
local/core/rootfs-namespaceRootfs namespace (mounts, symlinks, etc.)

lifecycle​

Container and revision lifecycle: updates (reboot/non-reboot), rollback, auto-recovery, power-loss safety.

TestDescriptionDone
local/lifecycle/reboot-nonreboot-rollbackReboot, non-reboot and rollback updates✓
local/lifecycle/seq-non-reboot-updatesSequential non-reboot updates✓
local/lifecycle/power-loss-during-updatePower Loss During Update
local/lifecycle/shared-object-restart-policiesShared object update with distinct restart policies
local/lifecycle/auto-recovery-restartAuto-recovery restart on failure
local/lifecycle/auto-recovery-retries-rollbackAuto-recovery retries exhaustion during TESTING triggers rollback
local/lifecycle/auto-recovery-stable-timeoutAuto-recovery stable timeout holds commit
local/lifecycle/auto-recovery-never-stopsAuto-recovery policy never stops container after retries
local/lifecycle/auto-recovery-stabilizeStabilize pattern: container fails N times then becomes stable
local/lifecycle/auto-recovery-always-restartAlways-restart policy on any exit code
local/lifecycle/auto-recovery-group-inheritanceGroup-level auto-recovery policy inherited by containers
local/lifecycle/auto-recovery-container-overrideContainer auto-recovery overrides group (all-or-nothing)
local/lifecycle/auto-recovery-backoff-durationBackoff duration resets retry cycle after exhaustion

runtime​

Container runtime behavior: state JSON handling, groups, storage persistence, exports, remount policies.

TestDescriptionDone
local/runtime/invalid-state-jsonInvalid State JSON
local/runtime/large-state-jsonLarge State JSON (100+ containers)
local/runtime/container-groups-startupContainer Groups and Startup Order
local/runtime/container-storage-persistenceContainer Storage Persistence
local/runtime/config-overlayConfiguration Overlay
local/runtime/resource-constraintsResource Constraints (CPU/Mem)
local/runtime/status-goal-success-failureStatus Goal Success and Failure✓
local/runtime/container-exportsContainer Exports to Host
local/runtime/remount-policiesRemount Policies (PV_REMOUNT_POLICY)
local/runtime/objects-crudObject store put/get/verify (pv-ctrl)✓
local/runtime/steps-rwStep read + local revision put (pv-ctrl)✓
local/runtime/ctrl-empty-object-putBodyless object PUT replies, no hang (pv-ctrl)✓
local/runtime/invalid-signal-handlingInvalid Signal Handling

control​

Tests that target the pv-ctrl unix socket API in a general way. Other categories may also use pv-ctrl, but for a specific subsystem rather than the API surface itself.

TestDescriptionDone
local/control/basic-endpointsBasic Endpoints (Containers, Objects, etc.)✓
local/control/basic-endpoints-curlBasic Endpoints via cURL✓
local/control/status-codesHTTP status-code contract (commands, signals, drivers, buildinfo)✓
local/control/pvcontrol-responsivenesspvcontrol responds normally during a time-consuming local operation (e.g. object transfer, sequential update)

xconnect​

xconnect service mesh: proxying, identity headers, D-Bus mediation, DRM, and Wayland isolation.

TestDescriptionDone
local/xconnect/unix-socketsUnix Sockets (UDS proxying)
local/xconnect/rest-over-udsREST-over-UDS (Identity headers)
local/xconnect/dbusD-Bus (Policy mediation)
local/xconnect/drmDRM (Graphics node injection)
local/xconnect/waylandWayland (Isolated UI rendering)

security​

Security policies: secure boot, OEM key validation, container roles, object checksum verification, encrypted storage.

TestDescriptionDone
local/security/strict-secure-bootStrict Secure Boot (Unsigned rejection)✓
local/security/container-rolesContainer Roles (mgmt vs nobody access)✓
local/security/oem-securebootOEM Secureboot (OEM key validation)✓
local/security/object-checksumObject Checksum Validation✓
local/security/lenient-secure-bootLenient Secure Boot
local/security/encrypted-storageEncrypted Storage (LUKS/dm-crypt)
local/security/secureboot-sig-0x30Secure Boot when signature starts with 0x30

services​

On-device services: garbage collection, logging, SSH, metadata manipulation, tsh daemon, IPAM, and other auxiliary features.

TestDescriptionDone
local/services/log-output-formatsLog Output Formats (filetree/singlefile)
local/services/on-demand-gcOn-Demand Garbage Collection✓
local/services/sync-gcSynchronous Garbage Collection (/storage/gc)✓
local/services/daemonsDaemon list/stop/start (pv-ctrl)✓
local/services/metadata-crudDevice/user metadata CRUD (pv-ctrl)✓
local/services/tsh-daemontsh daemon management & log capture
local/services/log-rotationLog rotation functionality
local/services/ssh-overrideSSH Override
local/services/metadata-manipulationMetadata Manipulation
local/services/ipam-single-poolSingle IPAM pool — container gets IP from pool
local/services/ipam-multi-poolTwo IPAM pools — correct address assignment
local/services/ipam-collisionConflicting pool addresses detected and rejected
local/services/ipam-invalidInvalid IPAM config rejected gracefully
local/services/ipam-lxcbrIPAM with lxcbr bridge networking

remote — remote experience tests​

Remote experience tests require an active Pantacor Hub connection and exercise the device-cloud communication layer: initial claiming, revision delivery, cloud status reporting, and remote services.

core​

Core remote initialization: pantahub.config parsing (encrypted and unencrypted).

TestDescriptionDone
remote/core/encrypted-pantahub-configEncrypted pantahub.config handling✓
remote/core/unencrypted-pantahub-configUnencrypted pantahub.config handling

lifecycle​

Cloud-driven revision lifecycle: simultaneous updates, disk-space handling, cloud rollback status, retry logic.

TestDescriptionDone
remote/lifecycle/simultaneous-updatesSuccessful Multiple Simultaneous Remote Updates✓
remote/lifecycle/insufficient-disk-spaceUpdate with Insufficient Disk Space✓
remote/lifecycle/rollback-cloud-statusTrigger rollback and verify cloud status✓
remote/lifecycle/update-retries-pv-crashUpdate retries when PV crashes✓
remote/lifecycle/update-retries-gc-pressureUpdate retries when PV crashes with GC pressure✓
remote/lifecycle/claim-after-local-updatesClaim after local updates with random artifacts
remote/lifecycle/download-cancel-mid-transferOwner cancel from the Hub aborts an update mid-download and keeps the partial object✓
remote/lifecycle/download-resume-on-timeoutObject download resumes via Range after a mid-transfer crash✓
remote/lifecycle/download-progress-continuousDownload progress reported continuously mid-object✓

control​

Tests that target Pantacor Hub communication in a general way. Other categories also use hub communication, but for their specific purpose (revision delivery, log push, etc.).

TestDescriptionDone
remote/control/manual-claimManual Device Claim✓
remote/control/auto-claimAutomatic Device Claim✓
remote/control/always-remote-disabledAlways Remote Disabled✓
remote/control/always-remote-enabledAlways Remote Enabled✓
remote/control/pvcontrol-responsivenesspvcontrol responds normally during a Pantahub download or other expensive remote operation

services​

Cloud-integrated services: log push, metadata exchange, and other hub-backed features.

TestDescriptionDone
remote/services/ph-logger-cloud-pushph-logger cloud push✓
remote/control/device-user-metadataDevice/User Metadata Exchange✓