# Release Test Plan 019
This test plan is based on Pantavisor supported devices and features. It presents different levels of testing based on the presence of devices and features in the [Pantavisor documentation](https://docs.pantahub.com/). The objective is to determine what to test and to what extent.
After this document is validated, a [test plan spreadsheet](https://docs.google.com/spreadsheets/d/1PI-MBYq3IV-cNrJv95ieTr6ZO_YmWK-eI7oXpxOH0hM/edit?usp=sharing) will be generated to organize the testing process.
## Devices
This classification divides the [supported devices](https://docs.pantahub.com/initial-devices/) based on documentation level.
A device belonging to a tier does not mean that we want that in there, as the classification is based only on the current status of documentation. Dropping a board might be a possibility if we do not want to test it as thoroughly, the same way promoting it means we need to keep the documentation standard of its new tier before we test it.
### Tier 1
Full-featured devices (HDMI, TTY, OEM partition, etc). Used in the [get started guide](https://docs.pantahub.com/get-started/) for new Pantavisor users:
* **RPi4**
* **RPi3 b+**
### Tier 2
Boards with lighter documentation than tier 1 but still with content on [how-to bring up](https://docs.pantahub.com/choose-image/) Pantavisor:
* **Nvidia Tegra 4.9**
* **Rock64**
* **BPi-R64**
* **RPi0w**
* **Toradex Colibri iMX6dl**
* **Toradex Colibri iMX6ull**
* **x64-uefi (default)**
* **x64-uefi (installer)**
* **QEMU x64-uefi**
* **QEMU malta**
* **App Engine x64**
* **App Engine aarch64**
### Tier 3
Rest of [supported devices](https://docs.pantahub.com/initial-devices/) that does not have any documentation:
* **BPi-R2**
* **BeagleV**
* **Odroid C2**
* **App Engine mips**
* **App Engine arm**
## Features
This section enumerates the most important Pantavisor features, with a small description on how to test them, and divided by their documentation level.
As with the device tiers, a feature belonging to a category does not mean that is its final place and could be changed if documentation is improved.
### Basic Management
Documentation in [how-to manage your device](https://docs.pantahub.com/choose-way/) should suffice to perform basic management.
* **Pantacor Hub:** auto-claim (pvr claim if not possible), get device metadata and logs, set user metadata, redeploy.
* **Pantabox:** ssh pvr-sdk, add marketplace app, add docker app, add \_config, deploy, claim.
* **pvtx**: ssh, open local, access pvtx, get device logs, deploy new transaction.
* **Local pvr:** ssh, open local, clone, add app, add \_config, deploy.
* **Remote pvr:** claim, clone, add app, add \_config, get logs.
### Advanced Features
Documentation is more general and can be found both in [tech overview](https://docs.pantahub.com/pantavisor-architecture/) and [reference pages](https://docs.pantahub.com/build-options/).
* **Configuration:** post a new Pantavisor with log.level=4, then change it from debug console to 3, then from trail to 2, then from metadata to 1. Check in every case the config has changed both in logs and from pvcontrol.
* **Policies (new):** ??
* **Rollback:** deploy empty update, remove awconnect and deploy.
* **Persistence storage:** check persistence of a container works with permanent, revision and boot settings.
* **Garbage Collector:** deploy empty update, ssh pvr-sdk and paralelly make changes in pv-avahi and deploy, pvcontrol commands run-gc, check objects, revs and logs.
* **Signatures:** change mode to strict and post unsigned elements, check it fails, post again with all signed elements and check it works.
* **Checksum:** post new revision with debug console open, mess with object from new revision, exit console.
* **Logserver**: from debug console, change config to different combinations of singlefile, filetree, stdout and nullsink outputs.
* **PH Logger**: disable/enable log push during runtime with user metadata
* **Network Configuration:** from debug console, change pvnet config to automatically connect to a new hotspot.
* **Drivers**: ??
* **Cryptdisks**: check crypt disk is mounted, check metadata is using that disk and that new metadata can be saved.
* **Groups:** add new platform to group app, check platforms are started in the right order.
* **Restart policy:** post update to platform group container, post update to app group container, check transitions are done accordingly for each case.
* **Status goal:** check if an update fails if ready is not sent and expected. Check it works if sent.
* **Roles:** check if pvcontrol ls can be used in a mgmt platform and returns error in a non-mgmt one
* **Patch:** ??