Skip to main content
Version: master

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/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

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