Internet of Things Certified Hardware Coverage for Ubuntu Core 22 / Ubuntu 22.04¶
Introduction¶
This document lists the coverage for certification of Internet of Things (IoT) devices with Ubuntu images. IoT devices can be certified with the following image types:
Ubuntu Core 22
Ubuntu Server 22.04 LTS
Ubuntu Desktop 22.04 LTS
The guide applies to devices submitted to Canonical through one of the following programmes:
IoT Devices Enablement Programme with Certification
IoT ODM Partner Programme
For each test job, one of the following certification statuses is specified:
- Blocking
Features that are required for certification. If any of the blocking tests fails, the certification will fail.
- Non-blocking
Features that are tested but not mandatory for certification. Failure in non-blocking tests will not prevent certification. However, a note will be added to the certificate to inform potential customers or users.
Note
Only categories of hardware are tested and not specific types of hardware. For example, tests are run to verify USB controllers work, but the type of peripheral(s) used during those tests are not specified.
Coverage is flexible based on customer requirements (for example, if a device’s use cases don’t require LEDs, then LEDs can be non-blocking)
Full test descriptions can be found in Canonical certification site for partners:
client-cert-iot-ubuntucore-22¶
Note
The certification tests presented in this document are validated by Checkbox version 4.2.0.dev76.
Blocking¶
Advanced Configuration and Power Interface¶
The following test units are covered in this category:
Audio tests¶
The following test units are covered in this category:
Category ID: | audio |
Status: | Blocking |
Purpose: | Check if sound that is ‘hearable’ by capture device. This test is intended mostly for devices without internal speakers/microphones, but with a line-in and a line-out ports to which a loopback cable can be connected. |
After-suspend: | True |
Environment variable: | ALSADEVICE, ALSA_CONFIG_PATH, LD_LIBRARY_PATH |
User: | root |
Plugin: | shell |
Category ID: | audio |
Status: | Blocking |
Purpose: | Check if sound is played through ALSA on the default output |
Steps: |
|
Verification: | Did you hear the sound? |
After-suspend: | True |
Environment variable: | ALSADEVICE, ALSA_CONFIG_PATH |
User: | root |
Plugin: | user-interact-verify |
Category ID: | audio |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
After-suspend: | True |
Plugin: | shell |
Bluetooth - BlueZ Self Tests¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | bluetooth_bluez5_selftests |
Status: | Blocking |
After-suspend: | True |
From template: | bluetooth/bluez-internal-bnep-tests_bluez-internal-bnep-test |
Template resource: | bluez-internal-bnep-tests |
Unit type: | template |
Category ID: | bluetooth_bluez5_selftests |
Status: | Blocking |
Description: | Runs a specific test from the hci test suite |
After-suspend: | True |
From template: | bluetooth/bluez-internal-hci-tests_bluez-internal-hci-test |
Template resource: | bluez-internal-hci-tests |
Unit type: | template |
Category ID: | bluetooth_bluez5_selftests |
Status: | Blocking |
After-suspend: | True |
From template: | bluetooth/bluez-internal-rfcomm-tests_bluez-internal-rfcomm-test |
Template resource: | bluez-internal-rfcomm-tests |
Bluetooth tests¶
The following test units are covered in this category:
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | This is an automated Bluetooth file transfer test. It sends an image to the device specified by the BTDEVADDR environment variable |
After-suspend: | True |
Environment variable: | BTDEVADDR, PLAINBOX_PROVIDER_DATA |
Plugin: | shell |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | shell |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | Check Bluetooth input device works |
Steps: |
|
Verification: | Confirm characters from Bluetooth input device are displayed correctly |
After-suspend: | True |
Plugin: | manual |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
Plugin: | shell |
bluetooth4/beacon_eddystone_url_interface
Test system can get beacon EddyStone URL advertisements on the {interface} adapter
Unit type: | template |
Category ID: | bluetooth |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | bluetooth4/beacon_eddystone_url_interface |
Template resource: | device |
Template filter: | device.category == ‘BLUETOOTH’ |
Camera tests¶
The following test units are covered in this category:
camera/multiple-resolution-images-rpi-attachment_name
Attach an image from the multiple resolution images test on rpi
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
Description: | This test will attach one of the images used for the multiple resolution images test. |
From template: | camera/multiple-resolution-images-rpi-attachment_name |
Template resource: | device |
Template filter: | device.category == ‘MMAL’ and device.name != ‘’ |
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
From template: | camera/multiple-resolution-images-rpi_name |
Template resource: | device |
Template filter: | device.category == ‘MMAL’ and device.name != ‘’ |
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
After-suspend: | True |
From template: | camera/multiple-resolution-images_name |
Template resource: | device |
Template filter: | device.category == ‘CAPTURE’ and device.name != ‘’ |
camera/roundtrip-qrcode_name
Test video output and camera {{ name }} by displaying and reading a QR code
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
From template: | camera/roundtrip-qrcode_name |
Template resource: | device |
Template filter: | device.category in (‘CAPTURE’, ‘MMAL’) and device.name != ‘’ |
CPU tests¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | cpu |
Status: | Blocking |
Description: | Validate that the Floating Point Unit is running on {platform} device. |
From template: | cpu/arm64_vfp_support_platform |
Template resource: | cpuinfo |
Template filter: | cpuinfo.platform == ‘aarch64’ |
cpu/armhf_vfp_support_platform
Validate that the Vector Floating Point Unit is running on {platform} device
Unit type: | template |
Category ID: | cpu |
Status: | Blocking |
Description: | Validate that the Vector Floating Point Unit is running on {platform} device. |
From template: | cpu/armhf_vfp_support_platform |
Template resource: | cpuinfo |
Template filter: | cpuinfo.platform == ‘armv7l’ |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Runs a test for clock jitter on SMP machines. |
After-suspend: | True |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Uses the Firmware Test Suite (fwts) to test the power saving states of the CPU. |
Environment variable: | LD_LIBRARY_PATH, PLAINBOX_SESSION_SHARE, SNAP |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Attaches the FWTS desktop diagnosis results log to the submission. |
Plugin: | attachment |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Use the Firmware Test Suite (fwts cpufreq) to ensure that the CPU can run at its maximum frequency. |
Environment variable: | LD_LIBRARY_PATH, SNAP |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Attaches the log generated by cpu/maxfreq_test to the results submission. |
Plugin: | attachment |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Attempts to offline each core in a multicore system. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Use Firmware Test Suite (fwts cpufreq) to test the scaling capabilities of the CPU. |
Environment variable: | LD_LIBRARY_PATH, PLAINBOX_SESSION_SHARE, SNAP |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Attaches the log generated by cpu/scaling_test to the results submission. |
Plugin: | attachment |
Disk tests¶
The following test units are covered in this category:
Category ID: | disk |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Examine the system to detect Software RAID devices are created and the RAID mode are expected the SOFTWARE_RAID_LEVEL variable is needed for this tests. e.g. SOFTWARE_RAID_LEVEL=”raid0 raid1 raid5” |
Environment variable: | SOFTWARE_RAID_LEVEL |
User: | root |
Plugin: | shell |
Category ID: | disk |
Status: | Blocking |
Purpose: | Uses lsblk to gather information about each disk detected on the system under test. |
After-suspend: | True |
Plugin: | shell |
Unit type: | template |
Category ID: | disk |
Status: | Blocking |
After-suspend: | True |
Environment variable: | DISK_MDADM_READ_PERF, DISK_NVME_READ_PERF, DISK_READ_PERF |
From template: | disk/read_performance_name |
Template resource: | device |
Template filter: | device.category == ‘DISK’ |
Unit type: | template |
Category ID: | disk |
Status: | Blocking |
After-suspend: | True |
From template: | disk/stats_name |
Template resource: | device |
Template filter: | device.category == ‘DISK’ and device.name != ‘’ |
Unit type: | template |
Category ID: | disk |
Status: | Blocking |
After-suspend: | True |
From template: | disk/storage_device_name |
Template resource: | device |
Template filter: | device.category == ‘DISK’ |
Category ID: | disk |
Status: | Blocking |
Purpose: | This test will check if the insertion of a Thunderbolt 3 HDD could be detected |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | disk |
Status: | Blocking |
Purpose: | This test will check if the system can detect the removal of a Thunderbolt 3 HDD |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Docker containers¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/build-single_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/commit_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/compose-and-basic_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/compose-restart_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/compose-single_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/copy_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/deploy-registry_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/diff_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/export-and-import_arch |
Template resource: | docker_resource |
Category ID: | docker |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: | <missing steps> |
Verification: | <missing verification> |
Description: | <missing description> |
User: | root |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/inspect_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/interative_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/kill_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/restart-always_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/restart-on-failure_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/run_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/save-and-load_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/start-stop_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/update_arch |
Template resource: | docker_resource |
Ethernet Device tests¶
The following test units are covered in this category:
Category ID: | ethernet |
Status: | Blocking |
Purpose: | Test to detect and return information about available network controllers on the system under test. |
After-suspend: | True |
Plugin: | shell |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
After-suspend: | True |
From template: | ethernet/hotplug-interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
After-suspend: | True |
From template: | ethernet/ping_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
From template: | ethernet/wol_S3_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.mac != ‘UNKNOWN’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
From template: | ethernet/wol_S4_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.mac != ‘UNKNOWN’ |
Firmware tests¶
The following test units are covered in this category:
Category ID: | firmware |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Run Firmware Test Suite (fwts) QA-concerned desktop-specific diagnosis tests. |
Environment variable: | PLAINBOX_SESSION_SHARE |
User: | root |
Plugin: | shell |
Gathers information about the DUT¶
The following test units are covered in this category:
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Generates a list of plug and slot connections on the device |
Plugin: | resource |
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | resource |
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Queries the snapd REST API for serial assertions present on the device. |
Plugin: | resource |
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | resource |
General Purpose I/O¶
The following test units are covered in this category:
gpio/gpiomem_loopback_pairs_model
Test GPIO lines exposed on headers can be controlled via /dev/gpiomem
Unit type: | template |
Category ID: | gpio |
Status: | Blocking |
After-suspend: | True |
From template: | gpio/gpiomem_loopback_pairs_model |
Template resource: | com.canonical.certification::model_assertion |
Template filter: | model_assertion.model in (“pi2”, “pi3”, “ubuntu-core-18-pi2”, “ubuntu-core-18-pi3”) |
Unit type: | template |
Category ID: | gpio |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | gpio/sysfs_loopback_pairs_model |
Template resource: | com.canonical.certification::model_assertion |
Template filter: | model_assertion.model in (“pi2”, “pi3”, “ubuntu-core-18-pi2”, “ubuntu-core-18-pi3”) |
gpio/sysfs_loopback_pairs_vendor_product
Test GPIO lines exposed on headers can be controlled via sysfs
Unit type: | template |
Category ID: | gpio |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | gpio/sysfs_loopback_pairs_vendor_product |
Template resource: | dmi |
Template filter: | dmi.category == ‘SYSTEM’ and dmi.vendor == ‘AAEON’ and dmi.product in (‘UPX-TGL01’, ‘UPN-EHL01’) |
Informational tests¶
The following test units are covered in this category:
Category ID: | info |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | shell |
Category ID: | info |
Status: | Blocking |
Purpose: | This job prints a tree of the time-critical chain of SystemD units. |
Plugin: | shell |
Category ID: | info |
Status: | Blocking |
Purpose: | Attaches very verbose lspci output. |
Plugin: | attachment |
Category ID: | info |
Status: | Blocking |
Purpose: | Attaches a list of detected USB devices. |
After-suspend: | True |
User: | root |
Plugin: | attachment |
Category ID: | info |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Allows logging of debug info and errors by the associated resource job |
Plugin: | attachment |
Input Devices tests¶
The following test units are covered in this category:
I²C (Inter-Integrated Circuit)¶
The following test units are covered in this category:
Category ID: | i2c |
Status: | Blocking |
Purpose: | If an expected number of I²C buses is provided, the job will verify the detected number is correct. If the expected number of buses is not provided, the job will pass if at least one I²C bus is detected. |
Environment variable: | I2C_BUS_NUMBER |
User: | root |
Plugin: | shell |
Kernel snap tests¶
The following test units are covered in this category:
kernel-snap/booted-kernel-matches-current-name
The booted kernel image matches the image in the current kernel snap
Unit type: | template |
Category ID: | kernel-snap |
Status: | Blocking |
From template: | kernel-snap/booted-kernel-matches-current-name |
Template resource: | bootloader |
Template filter: | bootloader.booted_kernel_path != ‘unknown’ |
LED tests¶
The following test units are covered in this category:
Category ID: | led |
Status: | Blocking |
Purpose: | This test will test the Fn key LED. |
Steps: |
|
Verification: | Did the Fn key LED light as expected? |
After-suspend: | True |
Plugin: | manual |
Category ID: | led |
Status: | Blocking |
Purpose: | Check power led is on when system is powered on |
Steps: |
|
Verification: | Power led is on when system is powered on |
After-suspend: | True |
Plugin: | manual |
Category ID: | led |
Status: | Blocking |
Purpose: | Check power led is blinking when system is in suspend |
Steps: |
|
Verification: | Power led is blinking when system is in suspend |
Plugin: | manual |
Category ID: | led |
Status: | Blocking |
Purpose: | Check serial ports LED behavior is correct |
Steps: |
|
Verification: | All serial ports LED are on for a few seconds (3-4s) |
User: | root |
Plugin: | user-interact-verify |
led/sysfs_led_brightness_off_vendor_product
Ensure the leds_aaeon driver properly sets all LEDs to off or minimum brightness by running a test.
Unit type: | template |
Category ID: | led |
Status: | Blocking |
After-suspend: | True |
From template: | led/sysfs_led_brightness_off_vendor_product |
Template resource: | dmi |
Template filter: | dmi.category == ‘SYSTEM’ and dmi.vendor == ‘AAEON’ and dmi.product in (‘UPX-TGL01’) |
led/sysfs_led_brightness_on_vendor_product
Verify the functionality of the leds_aaeon driver by ensuring all external LEDs achieve maximum brightness.
Unit type: | template |
Category ID: | led |
Status: | Blocking |
After-suspend: | True |
From template: | led/sysfs_led_brightness_on_vendor_product |
Template resource: | dmi |
Template filter: | dmi.category == ‘SYSTEM’ and dmi.vendor == ‘AAEON’ and dmi.product in (‘UPX-TGL01’) |
Category ID: | led |
Status: | Blocking |
Purpose: | Wireless (WLAN + Bluetooth) LED verification |
Steps: |
|
Verification: | Did the WLAN/Bluetooth LED light as expected? |
Plugin: | manual |
Location Service¶
The following test units are covered in this category:
Media Card tests¶
The following test units are covered in this category:
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Compact Flash (CF) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a CF card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/cf-storage
Automate testing for reading and writing to the CF card after mediacard/cf-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/cf-insert test is run. It tests reading and writing to the CF card. |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Multimedia Card (MMC) media |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of the MMC card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/mmc-insert test is run. It tests reading and writing to the MMC card. |
User: | root |
Plugin: | shell |
mediacard/ms-insert
Verify the detection of Memory Stick (MS) card insertion by the system’s media card reader.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Memory Stick (MS) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of an MS card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/ms-storage
Automated test for reading and writing to the MS card after mediacard/ms-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/ms-insert test is run. It tests reading and writing to the MS card. |
User: | root |
Plugin: | shell |
mediacard/msp-insert
Verify the system’s media card reader can detect a Memory Stick Pro (MSP) card insertion.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Memory Stick Pro (MSP) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a MSP card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/msp-storage
Automated test for reading and writing to the MSP card after mediacard/msp-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/msp-insert test is run. It tests reading and writing to the MSP card. |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of an UNLOCKED Secure Digital (SD) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of an SD card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/sd-insert test is run. It tests reading and writing to the SD card. |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a UNLOCKED Secure Digital High-Capacity (SDHC) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of an SDHC card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | This test is automated and executes after the mediacard/sdhc-insert test is run. It tests reading and writing to the SDHC card. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Secure Digital Extended Capacity (SDXC) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a SDXC card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/sdxc-insert test is run. It tests reading and writing to the SDXC card. |
User: | root |
Plugin: | shell |
mediacard/storage-preinserted-symlink_uuid
Automated test of SD Card reading & writing ({symlink_uuid})
Unit type: | template |
Category ID: | mediacard |
Status: | Blocking |
After-suspend: | True |
From template: | mediacard/storage-preinserted-symlink_uuid |
Template resource: | removable_partition |
Template filter: | removable_partition.bus == ‘mediacard’ |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of an Extreme Digital (xD) media card. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/xd-remove
Automated test for detecting the removal of a xD card from the system’s card reader.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a xD card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/xd-storage
Automated test to verify reading and writing functionality of the xD card after mediacard/xd-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/xd-insert test is run. It tests reading and writing to the xD card. |
User: | root |
Plugin: | shell |
Memory tests¶
The following test units are covered in this category:
Miscellaneous tests¶
The following test units are covered in this category:
Category ID: | miscellanea |
Status: | Blocking |
Purpose: | Device check |
Steps: |
|
Verification: | Do the devices reported by udev match the devices on the Manifest? |
Plugin: | user-interact-verify |
Category ID: | miscellanea |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | A meta-job that verifies the data necessary for a complete result submission are present. Failure indicates that the results are incomplete and may be rejected. |
Plugin: | shell |
Monitor tests¶
The following test units are covered in this category:
Category ID: | monitor |
Status: | Blocking |
Purpose: | This test will check the DisplayPort port and the ability to do hotplugging. |
Steps: | Skip this test if your system does not have a DisplayPort port. 1. If a display is already connected, unplug it. 2. (Re-)Connect a display to the DisplayPort port on your system |
Verification: | Was the interface displayed correctly on the screen? |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through DVI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through VGA adaptor on DVI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through HDMI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through VGA adaptor on HDMI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through VGA port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Non-device specific networking tests¶
The following test units are covered in this category:
Category ID: | networking |
Status: | Blocking |
Purpose: | Test if the running kernel supports IPv6. |
Steps: | <missing steps> |
Verification: | <missing verification> |
After-suspend: | True |
Unit type: | template |
Category ID: | networking |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | ipv6_link_local_address_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | networking |
Status: | Blocking |
After-suspend: | True |
From template: | networking/info_device__index___interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ |
Power Management tests¶
The following test units are covered in this category:
Category ID: | power-management |
Status: | Blocking |
Purpose: | This test powers off the system and then powers it on using RTC |
Environment variable: | COLD_REBOOT_DELAY, RTC_DEVICE_FILE |
User: | root |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | Check there are no failed services after the cold reboot |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | Check there are no failed services after the warm reboot |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | This tests reboots the system using the reboot command |
User: | root |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: | <missing steps> |
Verification: | <missing verification> |
Description: | <missing description> |
Category ID: | power-management |
Status: | Blocking |
Purpose: | Check there are no failed services after the watchdog triggered |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: | <missing steps> |
Verification: | <missing verification> |
Description: | <missing description> |
Real Time Clock (RTC)¶
The following test units are covered in this category:
Category ID: | rtc_category |
Status: | Blocking |
Purpose: | RTC battery backup power can send system wakeup events. |
Steps: |
|
Verification: | RTC can wake up the system successfully. environ: RTC_DEVICE_FILE |
User: | root |
Plugin: | user-interact |
Serial Port¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | serial |
Status: | Blocking |
After-suspend: | True |
From template: | serial/loopback-dev |
Template resource: | serial_ports_static |
Category ID: | serial |
Status: | Blocking |
Purpose: | Check user can log into system through serial port from another machine |
Steps: |
|
Verification: |
|
After-suspend: | True |
Plugin: | manual |
Snapd¶
The following test units are covered in this category:
Category ID: | snapd |
Status: | Blocking |
Purpose: | Check “core” can be refreshed by snap refresh |
Steps: |
|
Verification: | Check core version is updated using the edge channel |
Plugin: | manual |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Check core can be reverted by snap revert |
Steps: |
|
Verification: | Check core version at step 4 is back to its stable version |
Plugin: | manual |
Category ID: | snapd |
Status: | Blocking |
Purpose: | The store should contain the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap. The test makes sure this can be downloaded and installed on the system. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | If snap list command is working then should at least find the ubuntu-core package. |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | The test will install the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap from the stable channel and then refreshes it to the edge channel and compares the revision before and after the refresh. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | After having installed the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap, check it can be removed. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Checks that the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap can be refreshed after removal of the blacklisted revision. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Checks if the edge channel {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap is reverted back to the one from stable. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | If snap find command is working then should find {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} in the store. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Test all the snaps’ confinement, devmode, revision. Make sure the confinement is “strict”, devmode is “False”, and revision should not be sideloaded. |
Plugin: | shell |
Unit type: | template |
Category ID: | snapd |
Status: | Blocking |
Environment variable: | STORE_ID |
From template: | snappy/test-store-config-store |
Template resource: | com.canonical.certification::model_assertion |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Test the snappy install command is able to install and remove snap in beta channel store. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Test the snappy install command is able to install a snap in the edge channel store. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
SocketCAN interface tests¶
The following test units are covered in this category:
socketcan/send_packet_local_eff_virtual
Virtual CAN device support test (Local test with raw socket and EFF)
Category ID: | socketcan |
Status: | Blocking |
Purpose: | Test that the kernel supports CAN networking by sending packets to a virtual device using a raw socket, this is only a local test as the broadcast packet is received on the same device |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_local_eff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Category ID: | socketcan |
Status: | Blocking |
Purpose: | Test that the kernel supports CAN networking by sending packets to a virtual device using a raw socket; this is only a local test as the broadcast packet is received on the same device. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_local_fd_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Category ID: | socketcan |
Status: | Blocking |
Purpose: | Test that the kernel supports CAN networking by sending packets to a virtual device using a raw socket, this is only a local test as the broadcast packet is received on the same device |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_local_sff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_remote_eff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_remote_fd_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_remote_sff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
TPM 2.0 (Trusted Platform Module)¶
The following test units are covered in this category:
clevis-encrypt-tpm2/detect-ecc-capabilities
Ensure the TPM has required capabilities for clevis ECC test
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
clevis-encrypt-tpm2/detect-rsa-capabilities
Ensure the TPM has required capabilities for clevis RSA test
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | The information in the TPM Event Log can be useful in debugging problems with TPM command support and adherance to standards. This can be of particular help when checking whether a device can support Ubuntu Core Full Disk Encryption. |
User: | root |
Plugin: | attachment |
Ubuntu Core OS feature tests¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | ubuntucore |
Status: | Blocking |
From template: | ubuntucore/os-fail-boot-description |
Template resource: | lsb |
Template filter: | lsb.distributor_id == ‘Ubuntu Core’ |
ubuntucore/os-recovery-mode
Reboot into recovery mode and log into the system using prior credentials.
Category ID: | ubuntucore |
Status: | Blocking |
Purpose: | Check if the system will reboot to recovery mode successfully |
Steps: |
|
Verification: | Check if kernel cmdline when the system is in recovery mode includes: ‘snapd_recovery_mode=recover’ Check if kernel cmdline when the system is in normal run mode includes: ‘snapd_recovery_mode=run’ |
Plugin: | manual |
Category ID: | ubuntucore |
Status: | Blocking |
Purpose: | Check if the system will reboot to reinstall mode and reinitialize the device with a fresh factory reset. |
Steps: | WARNING: ALL EXISTING DATA ON THIS DEVICE WILL BE WIPED!! 1. Check the current serial-assertion device-key $ ls /var/lib/snapd/save/device/private-keys-v1 2. Clear TPM first if this device has enabled secure boot & FDE For x86-based platforms: $ sudo su $ echo 5 > /sys/class/tpm/tpm0/ppi/request For ARM-based platforms: There is no generic command for ARM-based platforms, please refer to the device user manual. 3. Reboot the system to reinstall mode $ sudo snap reboot –install 4. The system should respond to the command and reboot itself. 5. Wait until the system completes the installation and initialization process. 6. Check the serial-assertion device-key after installation completes. $ ls /var/lib/snapd/save/device/private-keys-v1 |
Verification: | Check if a new serial-assertion device-key got generated after reinstallation completes. |
Plugin: | manual |
Category ID: | ubuntucore |
Status: | Blocking |
Purpose: | Check if a user can access the system through SSH from another machine |
Steps: |
|
Verification: | Can log into the system through SSH from another machine |
Plugin: | manual |
USB tests¶
The following test units are covered in this category:
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: |
|
Verification: | The host and DUT can ping each other. |
Description: | <missing description> |
After-suspend: | True |
User: | root |
Plugin: | user-interact-verify |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check that after connecting the device under test (DUT) to another device (host), the DUT can be detected as a mass storage device by the host. |
Steps: |
|
Verification: | The host detects and mounts the mass storage device. It has read and write permissions on it. |
After-suspend: | True |
User: | root |
Plugin: | user-interact-verify |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check if USB OTG can work as a serial port. |
Steps: |
|
Verification: | Does string send and receive function correctly? |
After-suspend: | True |
User: | root |
Plugin: | user-interact-verify |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that you can use a USB HID device plugged in a USB Type-C port using a “USB Type-C to Type-A” adapter |
Steps: |
|
Verification: | Did the device work as expected? |
After-suspend: | True |
Plugin: | manual |
usb-c/c-to-a-adapter/insert
Verify that the system detects a USB 3 storage device using a “Type-C to Type-A” adapter.
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the insertion of a USB 3 storage device in a USB Type-C connector using a “Type-C to Type-A” adapter. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
usb-c/c-to-a-adapter/remove
Check the detection of a USB 3 storage device removal, connected via a “Type-C to Type-A” adapter.
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a USB 3 storage device connected to a USB Type-C port using a “USB Type-C to Type-A” adapter. |
Steps: |
|
Verification: | The verification of this test is automated. Do not modify the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
usb-c/c-to-a-adapter/storage-automated
Automate the execution process post usb-c/c-to-a-adapter/insert test.
Category ID: | usb |
Status: | Blocking |
Purpose: | This test is automated and executes after the usb-c/c-to-a-adapter/insert test is run. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that you can use a USB HID device plugged in a USB Type-C port |
Steps: |
|
Verification: | Did the device work as expected? |
After-suspend: | True |
Plugin: | manual |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the insertion of a USB 3.0 storage device in a USB Type-C connector. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a USB 3.0 storage device connected to a USB Type-C port. |
Steps: |
|
Verification: | The system should automatically detect the removal of the USB 3.0 storage device. The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test is automated and executes after the usb-c/insert test is run. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check USB input device works |
Steps: |
|
Verification: | What was just input is displayed correctly |
After-suspend: | True |
Plugin: | manual |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect USB 2.0 storage when inserted. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect removal of a USB 2.0 storage device |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can read/write to USB 2.0 storage correctly |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
After-suspend: | True |
Plugin: | shell |
usb/storage-preinserted-symlink_uuid
Test USB storage on 2.0 or 1.1 ports detected by udev ({symlink_uuid})
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
After-suspend: | True |
From template: | usb/storage-preinserted-symlink_uuid |
Template resource: | removable_partition |
Template filter: | “usb” in removable_partition.bus |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb/zapper-usb-insert-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘2’ |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb/zapper-usb-remove-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘2’ |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect insertion of a USB 3.0 storage device. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect removal of a USB 3.0 storage device |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can read/write to USB 3.0 storage devices correctly |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb3/zapper-usb-insert-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘3’ |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb3/zapper-usb-remove-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘3’ |
Wi-Fi access point¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | wireless/nmcli_wifi_ap_a_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/nmcli_wifi_ap_bg_interface
Create 802.11b/g Wi-Fi AP on {{ interface }} using NetworkManager
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/nmcli_wifi_ap_bg_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_b_no_sta_interface_auto
Create open 802.11b Wi-Fi AP on {interface} with no STA
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_open_b_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_b_no_sta_interface_manual
Create open 802.11b Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_open_b_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_g_no_sta_interface_auto
Create an open 802.11g Wi-Fi AP on {interface} with no STA connected.
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_open_g_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_g_no_sta_interface_manual
Create open 802.11g Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_open_g_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_setup_wizard_interface_auto
Create Access Point on {interface} using wifi-ap.setup-wizard
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_setup_wizard_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_b_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_b_no_sta_interface_manual
Create WPA2 802.11b Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_wpa_b_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_b_with_sta_interface_auto
Create a WPA2 802.11b Wi-Fi Access Point on {interface} with active STA
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, OPEN_BG_SSID, WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_b_with_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_g_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_g_no_sta_interface_manual
Create WPA2 802.11g Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_wpa_g_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_g_with_sta_interface_auto
Create WPA2 802.11g Wi-Fi Access Point on {interface} with active STA
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, OPEN_BG_SSID, WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_g_with_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Wireless networking tests¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/check_iwlwifi_microcode_crash_interface |
Template resource: | device |
Template filter: | device.driver == ‘iwlwifi’ |
Category ID: | wireless |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
After-suspend: | True |
Plugin: | shell |
wireless/wireless_connection_open_ac_nm_interface
Connect to unencrypted 802.11ac Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_ac_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_ac_np_interface
Connect to unencrypted 802.11ac Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_AC_SSID |
From template: | wireless/wireless_connection_open_ac_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_ax_nm_interface
Connect to unencrypted 802.11ax Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_ax_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_ax_np_interface
Connect to unencrypted 802.11ax Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_AX_SSID |
From template: | wireless/wireless_connection_open_ax_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_be_nm_interface
Connect to unencrypted 802.11be Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_be_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_be_np_interface
Connect to unencrypted 802.11be Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_BE_SSID |
From template: | wireless/wireless_connection_open_be_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_bg_nm_interface
Connect to an unencrypted 802.11b/g Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_bg_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_bg_np_interface
Connect to unencrypted 802.11b/g Wi-Fi network on {{ interface }} using netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_BG_SSID |
From template: | wireless/wireless_connection_open_bg_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_n_nm_interface
Connect to an unencrypted 802.11n Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_n_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_n_np_interface
Connect to unencrypted 802.11n Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_N_SSID |
From template: | wireless/wireless_connection_open_n_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_ax_nm_interface
Connect to WPA3-encrypted 802.11ax Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa3_ax_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_ax_np_interface
Connect to WPA3-encrypted 802.11ax Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA3_AX_PSK, WPA3_AX_SSID |
From template: | wireless/wireless_connection_wpa3_ax_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_be_nm_interface
Connect to WPA3-encrypted 802.11be Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa3_be_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_be_np_interface
Connect to WPA3-encrypted 802.11be Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA3_BE_PSK, WPA3_BE_SSID |
From template: | wireless/wireless_connection_wpa3_be_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ac_nm_interface
Connect to WPA-encrypted 802.11ac Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_ac_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ac_np_interface
Connect to WPA-encrypted 802.11ac Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_AC_PSK, WPA_AC_SSID |
From template: | wireless/wireless_connection_wpa_ac_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ax_nm_interface
Connect to WPA-encrypted 802.11ax Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_ax_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ax_np_interface
Connect to WPA-encrypted 802.11ax Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_AX_PSK, WPA_AX_SSID |
From template: | wireless/wireless_connection_wpa_ax_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_be_nm_interface
Connect to WPA-encrypted 802.11be Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_be_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_be_np_interface
Connect to WPA-encrypted 802.11be Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_BE_PSK, WPA_BE_SSID |
From template: | wireless/wireless_connection_wpa_be_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_bg_nm_interface
Connect to WPA-encrypted 802.11b/g Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_bg_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_bg_np_interface
Connect to WPA-encrypted 802.11b/g Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_BG_PSK, WPA_BG_SSID |
From template: | wireless/wireless_connection_wpa_bg_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_n_nm_interface
Connect to a WPA-encrypted 802.11n Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_n_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_n_np_interface
Connect to a WPA-encrypted 802.11n Wi-Fi network on {{ interface }} using netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_N_PSK, WPA_N_SSID |
From template: | wireless/wireless_connection_wpa_n_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_scanning_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Wireless Wide Area Network¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | wwan |
Status: | Blocking |
Description: | Scan for available 3GPP networks with the target modem |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH |
From template: | wwan/3gpp-scan-manufacturer-model-hw_id-auto |
Template resource: | wwan_resource |
Category ID: | wwan |
Status: | Blocking |
Purpose: | Check if a SIM card is present in a slot connected to the modem |
Steps: |
|
Verification: | Check the output. Was the SIM information printed? |
After-suspend: | True |
Plugin: | manual |
wwan/check-sim-present-manufacturer-model-hw_id-auto
Check if a SIM card is present in a slot connected to the modem
Unit type: | template |
Category ID: | wwan |
Status: | Blocking |
Description: | Check if a SIM card is present in a slot connected to the modem |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH |
From template: | wwan/check-sim-present-manufacturer-model-hw_id-auto |
Template resource: | wwan_resource |
Category ID: | wwan |
Status: | Blocking |
Purpose: | Tests that there is a WWAN module present and indicates that testing of it should follow. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | wwan |
Status: | Blocking |
Purpose: | Check if WWAN module is available and ready to be used. |
Steps: |
|
Verification: | Check the output. Was the modem listed? |
After-suspend: | True |
Plugin: | manual |
wwan/gsm-connection-interrupted-manual
Verify a GSM broadband connection can be reconnected after the signal is lost
Category ID: | wwan |
Status: | Blocking |
Purpose: | Ensure that the data connection can be revived after losing signal |
Steps: |
|
Verification: | Was the connection revived after removing the Faraday bag? |
After-suspend: | True |
Plugin: | manual |
wwan/gsm-connection-manufacturer-model-hw_id-auto
Verify a GSM broadband modem can create a data connection
Unit type: | template |
Category ID: | wwan |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, WWAN_APN, WWAN_CONTROL_IF, WWAN_NET_IF, WWAN_SETUPTIME |
From template: | wwan/gsm-connection-manufacturer-model-hw_id-auto |
Template resource: | wwan_resource |
Non-blocking¶
Informational tests¶
The following test units are covered in this category:
client-cert-iot-server-22-04¶
Note
The certification tests presented in this document are validated by Checkbox version 4.2.0.dev76.
Blocking¶
Advanced Configuration and Power Interface¶
The following test units are covered in this category:
Audio tests¶
Output needs to be undistorted between 0%-100%. Output lines tested:
Internal speakers
3.5mm headphones
HDMI audio output
DisplayPort audio output
Input needs to be recorded undistorted between 0%-100%. Input lines tested:
Internal microphone
3.5mm microphone
Plug detection: when a new audio line input or output is plugged in the system, it needs to be recognized.
The following test units are covered in this category:
Category ID: | audio |
Status: | Blocking |
Purpose: | Check if sound that is ‘hearable’ by capture device. This test is intended mostly for devices without internal speakers/microphones, but with a line-in and a line-out ports to which a loopback cable can be connected. |
After-suspend: | True |
Environment variable: | ALSADEVICE, ALSA_CONFIG_PATH, LD_LIBRARY_PATH |
User: | root |
Plugin: | shell |
Category ID: | audio |
Status: | Blocking |
Purpose: | Check if sound is played through ALSA on the default output |
Steps: |
|
Verification: | Did you hear the sound? |
After-suspend: | True |
Environment variable: | ALSADEVICE, ALSA_CONFIG_PATH |
User: | root |
Plugin: | user-interact-verify |
Category ID: | audio |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
After-suspend: | True |
Plugin: | shell |
Bluetooth - BlueZ Self Tests¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | bluetooth_bluez5_selftests |
Status: | Blocking |
After-suspend: | True |
From template: | bluetooth/bluez-internal-bnep-tests_bluez-internal-bnep-test |
Template resource: | bluez-internal-bnep-tests |
Unit type: | template |
Category ID: | bluetooth_bluez5_selftests |
Status: | Blocking |
Description: | Runs a specific test from the hci test suite |
After-suspend: | True |
From template: | bluetooth/bluez-internal-hci-tests_bluez-internal-hci-test |
Template resource: | bluez-internal-hci-tests |
Unit type: | template |
Category ID: | bluetooth_bluez5_selftests |
Status: | Blocking |
After-suspend: | True |
From template: | bluetooth/bluez-internal-rfcomm-tests_bluez-internal-rfcomm-test |
Template resource: | bluez-internal-rfcomm-tests |
Bluetooth tests¶
Bluetooth LE (Smart and Smart Ready) is tested for device scanning and pairing. Apart from pairing, several profiles are specifically tested and required:
Eddystone Beacon
HID Over GATT Profile (HOGP), Low-Energy keyboard or mouse with basic functionality
The following test units are covered in this category:
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | This is an automated Bluetooth file transfer test. It sends an image to the device specified by the BTDEVADDR environment variable |
After-suspend: | True |
Environment variable: | BTDEVADDR, PLAINBOX_PROVIDER_DATA |
Plugin: | shell |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | shell |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | Check Bluetooth input device works |
Steps: |
|
Verification: | Confirm characters from Bluetooth input device are displayed correctly |
After-suspend: | True |
Plugin: | manual |
Category ID: | bluetooth |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
Plugin: | shell |
bluetooth4/beacon_eddystone_url_interface
Test system can get beacon EddyStone URL advertisements on the {interface} adapter
Unit type: | template |
Category ID: | bluetooth |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | bluetooth4/beacon_eddystone_url_interface |
Template resource: | device |
Template filter: | device.category == ‘BLUETOOTH’ |
Camera tests¶
The following test units are covered in this category:
camera/multiple-resolution-images-rpi-attachment_name
Attach an image from the multiple resolution images test on rpi
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
Description: | This test will attach one of the images used for the multiple resolution images test. |
From template: | camera/multiple-resolution-images-rpi-attachment_name |
Template resource: | device |
Template filter: | device.category == ‘MMAL’ and device.name != ‘’ |
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
From template: | camera/multiple-resolution-images-rpi_name |
Template resource: | device |
Template filter: | device.category == ‘MMAL’ and device.name != ‘’ |
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
After-suspend: | True |
From template: | camera/multiple-resolution-images_name |
Template resource: | device |
Template filter: | device.category == ‘CAPTURE’ and device.name != ‘’ |
camera/roundtrip-qrcode_name
Test video output and camera {{ name }} by displaying and reading a QR code
Unit type: | template |
Category ID: | camera |
Status: | Blocking |
From template: | camera/roundtrip-qrcode_name |
Template resource: | device |
Template filter: | device.category in (‘CAPTURE’, ‘MMAL’) and device.name != ‘’ |
CPU tests¶
x86_64 and ARM processors are tested to ensure proper functionality. We will test specific features as:
CPU’s performance states (frequency up and down in runtime)
CPU’s sleep states (cpu on and off in runtime)
Running CPU at its maximum frequency
We will also include a general stress test performed for 120 minutes to verify that the system can handle a sustained high load for a period of time. This test uses the tool “stress-ng” available in the Universe repositories.
For Intel CPU’s, the IPDT (Intel Processor Diagnostic Tool) test suite will be run. The diagnostic checks for brand identification, verifies the processor operating frequency, tests specific processor features, and performs a stress test on the processor.
The following test units are covered in this category:
Unit type: | template |
Category ID: | cpu |
Status: | Blocking |
Description: | Validate that the Floating Point Unit is running on {platform} device. |
From template: | cpu/arm64_vfp_support_platform |
Template resource: | cpuinfo |
Template filter: | cpuinfo.platform == ‘aarch64’ |
cpu/armhf_vfp_support_platform
Validate that the Vector Floating Point Unit is running on {platform} device
Unit type: | template |
Category ID: | cpu |
Status: | Blocking |
Description: | Validate that the Vector Floating Point Unit is running on {platform} device. |
From template: | cpu/armhf_vfp_support_platform |
Template resource: | cpuinfo |
Template filter: | cpuinfo.platform == ‘armv7l’ |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Runs a test for clock jitter on SMP machines. |
After-suspend: | True |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Uses the Firmware Test Suite (fwts) to test the power saving states of the CPU. |
Environment variable: | LD_LIBRARY_PATH, PLAINBOX_SESSION_SHARE, SNAP |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Attaches the FWTS desktop diagnosis results log to the submission. |
Plugin: | attachment |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Use the Firmware Test Suite (fwts cpufreq) to ensure that the CPU can run at its maximum frequency. |
Environment variable: | LD_LIBRARY_PATH, SNAP |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Attaches the log generated by cpu/maxfreq_test to the results submission. |
Plugin: | attachment |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Attempts to offline each core in a multicore system. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Use Firmware Test Suite (fwts cpufreq) to test the scaling capabilities of the CPU. |
Environment variable: | LD_LIBRARY_PATH, PLAINBOX_SESSION_SHARE, SNAP |
User: | root |
Plugin: | shell |
Category ID: | cpu |
Status: | Blocking |
Purpose: | Attaches the log generated by cpu/scaling_test to the results submission. |
Plugin: | attachment |
Disk tests¶
The following test units are covered in this category:
Category ID: | disk |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Examine the system to detect Software RAID devices are created and the RAID mode are expected the SOFTWARE_RAID_LEVEL variable is needed for this tests. e.g. SOFTWARE_RAID_LEVEL=”raid0 raid1 raid5” |
Environment variable: | SOFTWARE_RAID_LEVEL |
User: | root |
Plugin: | shell |
Category ID: | disk |
Status: | Blocking |
Purpose: | Uses lsblk to gather information about each disk detected on the system under test. |
After-suspend: | True |
Plugin: | shell |
Unit type: | template |
Category ID: | disk |
Status: | Blocking |
After-suspend: | True |
Environment variable: | DISK_MDADM_READ_PERF, DISK_NVME_READ_PERF, DISK_READ_PERF |
From template: | disk/read_performance_name |
Template resource: | device |
Template filter: | device.category == ‘DISK’ |
Unit type: | template |
Category ID: | disk |
Status: | Blocking |
After-suspend: | True |
From template: | disk/stats_name |
Template resource: | device |
Template filter: | device.category == ‘DISK’ and device.name != ‘’ |
Unit type: | template |
Category ID: | disk |
Status: | Blocking |
After-suspend: | True |
From template: | disk/storage_device_name |
Template resource: | device |
Template filter: | device.category == ‘DISK’ |
Category ID: | disk |
Status: | Blocking |
Purpose: | This test will check if the insertion of a Thunderbolt 3 HDD could be detected |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | disk |
Status: | Blocking |
Purpose: | This test will check if the system can detect the removal of a Thunderbolt 3 HDD |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Docker containers¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/build-single_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/commit_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/compose-and-basic_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/compose-restart_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/compose-single_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/copy_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/deploy-registry_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/diff_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/export-and-import_arch |
Template resource: | docker_resource |
Category ID: | docker |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: | <missing steps> |
Verification: | <missing verification> |
Description: | <missing description> |
User: | root |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/inspect_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/interative_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/kill_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/restart-always_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/restart-on-failure_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/run_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/save-and-load_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/start-stop_arch |
Template resource: | docker_resource |
Unit type: | template |
Category ID: | docker |
Status: | Blocking |
Description: | <missing description> |
From template: | docker/update_arch |
Template resource: | docker_resource |
Ethernet Device tests¶
Connections are tested for functionality, but not for performance.
The following test units are covered in this category:
Category ID: | ethernet |
Status: | Blocking |
Purpose: | Test to detect and return information about available network controllers on the system under test. |
After-suspend: | True |
Plugin: | shell |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
After-suspend: | True |
From template: | ethernet/hotplug-interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
After-suspend: | True |
From template: | ethernet/ping_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
From template: | ethernet/wol_S3_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.mac != ‘UNKNOWN’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | ethernet |
Status: | Blocking |
From template: | ethernet/wol_S4_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.mac != ‘UNKNOWN’ |
Firmware tests¶
The Ubuntu image must be installed using the factory default bootloader firmware (for example BIOS, UEFI or uboot as applicable) and with the default options (including SecureBoot, if that’s the default setting). Firmware needs to be compliant with Canonical Firmware Test Suite (FWTS).
It is recommended that after running Canonical fwts with the list of tests defined in the Appendix A, ideally, no CRITICAL or HIGH failures should be reported, but those are not automatically certification blockers.
The following test units are covered in this category:
Category ID: | firmware |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Run Firmware Test Suite (fwts) QA-concerned desktop-specific diagnosis tests. |
Environment variable: | PLAINBOX_SESSION_SHARE |
User: | root |
Plugin: | shell |
Gathers information about the DUT¶
The following test units are covered in this category:
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Generates a list of plug and slot connections on the device |
Plugin: | resource |
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | resource |
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Queries the snapd REST API for serial assertions present on the device. |
Plugin: | resource |
Category ID: | information_gathering |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | resource |
General Purpose I/O¶
We test the functionality of individual GPIO lines when the associated controller driver in the kernel implements a GPIO Sysfs Interface via the gpiolib implementers framework. In such cases, the GPIO system may be tested in two ways:
Direct:
GPIO controllers are exposed through sysfs
GPIO lines are accessible by the user
Indirect:
Communication with device connected via GPIO
The following test units are covered in this category:
gpio/gpiomem_loopback_pairs_model
Test GPIO lines exposed on headers can be controlled via /dev/gpiomem
Unit type: | template |
Category ID: | gpio |
Status: | Blocking |
After-suspend: | True |
From template: | gpio/gpiomem_loopback_pairs_model |
Template resource: | com.canonical.certification::model_assertion |
Template filter: | model_assertion.model in (“pi2”, “pi3”, “ubuntu-core-18-pi2”, “ubuntu-core-18-pi3”) |
Unit type: | template |
Category ID: | gpio |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | gpio/sysfs_loopback_pairs_model |
Template resource: | com.canonical.certification::model_assertion |
Template filter: | model_assertion.model in (“pi2”, “pi3”, “ubuntu-core-18-pi2”, “ubuntu-core-18-pi3”) |
gpio/sysfs_loopback_pairs_vendor_product
Test GPIO lines exposed on headers can be controlled via sysfs
Unit type: | template |
Category ID: | gpio |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | gpio/sysfs_loopback_pairs_vendor_product |
Template resource: | dmi |
Template filter: | dmi.category == ‘SYSTEM’ and dmi.vendor == ‘AAEON’ and dmi.product in (‘UPX-TGL01’, ‘UPN-EHL01’) |
Informational tests¶
The following test units are covered in this category:
Category ID: | info |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | shell |
Category ID: | info |
Status: | Blocking |
Purpose: | This job prints a tree of the time-critical chain of SystemD units. |
Plugin: | shell |
Category ID: | info |
Status: | Blocking |
Purpose: | Attaches very verbose lspci output. |
Plugin: | attachment |
Category ID: | info |
Status: | Blocking |
Purpose: | Attaches a list of detected USB devices. |
After-suspend: | True |
User: | root |
Plugin: | attachment |
Category ID: | info |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | Allows logging of debug info and errors by the associated resource job |
Plugin: | attachment |
Input Devices tests¶
The following test units are covered in this category:
I²C (Inter-Integrated Circuit)¶
All devices attached to the I2C bus must be detectable. This includes:
Temperature sensors
Humidity sensors
Accelerometers
The following test units are covered in this category:
Category ID: | i2c |
Status: | Blocking |
Purpose: | If an expected number of I²C buses is provided, the job will verify the detected number is correct. If the expected number of buses is not provided, the job will pass if at least one I²C bus is detected. |
Environment variable: | I2C_BUS_NUMBER |
User: | root |
Plugin: | shell |
Kernel snap tests¶
The following test units are covered in this category:
kernel-snap/booted-kernel-matches-current-name
The booted kernel image matches the image in the current kernel snap
Unit type: | template |
Category ID: | kernel-snap |
Status: | Blocking |
From template: | kernel-snap/booted-kernel-matches-current-name |
Template resource: | bootloader |
Template filter: | bootloader.booted_kernel_path != ‘unknown’ |
LED tests¶
When LEDs exist, they will be tested by following some basic expectations here. The actual behavior may vary depending on the hardware design. To ensure that the behavior is working as expected, please be sure to test against specifications obtained from OEM, as each OEM may have different defined behavior for LEDs. The following LEDs are tested:
Power
Serial Port LEDs (indicating activity)
The following test units are covered in this category:
Category ID: | led |
Status: | Blocking |
Purpose: | This test will test the Fn key LED. |
Steps: |
|
Verification: | Did the Fn key LED light as expected? |
After-suspend: | True |
Plugin: | manual |
Category ID: | led |
Status: | Blocking |
Purpose: | Check power led is on when system is powered on |
Steps: |
|
Verification: | Power led is on when system is powered on |
After-suspend: | True |
Plugin: | manual |
Category ID: | led |
Status: | Blocking |
Purpose: | Check power led is blinking when system is in suspend |
Steps: |
|
Verification: | Power led is blinking when system is in suspend |
Plugin: | manual |
Category ID: | led |
Status: | Blocking |
Purpose: | Check serial ports LED behavior is correct |
Steps: |
|
Verification: | All serial ports LED are on for a few seconds (3-4s) |
User: | root |
Plugin: | user-interact-verify |
led/sysfs_led_brightness_off_vendor_product
Ensure the leds_aaeon driver properly sets all LEDs to off or minimum brightness by running a test.
Unit type: | template |
Category ID: | led |
Status: | Blocking |
After-suspend: | True |
From template: | led/sysfs_led_brightness_off_vendor_product |
Template resource: | dmi |
Template filter: | dmi.category == ‘SYSTEM’ and dmi.vendor == ‘AAEON’ and dmi.product in (‘UPX-TGL01’) |
led/sysfs_led_brightness_on_vendor_product
Verify the functionality of the leds_aaeon driver by ensuring all external LEDs achieve maximum brightness.
Unit type: | template |
Category ID: | led |
Status: | Blocking |
After-suspend: | True |
From template: | led/sysfs_led_brightness_on_vendor_product |
Template resource: | dmi |
Template filter: | dmi.category == ‘SYSTEM’ and dmi.vendor == ‘AAEON’ and dmi.product in (‘UPX-TGL01’) |
Category ID: | led |
Status: | Blocking |
Purpose: | Wireless (WLAN + Bluetooth) LED verification |
Steps: |
|
Verification: | Did the WLAN/Bluetooth LED light as expected? |
Plugin: | manual |
Location Service¶
The following test units are covered in this category:
Media Card tests¶
Media Card readers are tested for read and write for the following type of cards:
CF
MMC
MS
MSP
SD
SDHC
SDXC
XD
The following test units are covered in this category:
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Compact Flash (CF) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a CF card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/cf-storage
Automate testing for reading and writing to the CF card after mediacard/cf-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/cf-insert test is run. It tests reading and writing to the CF card. |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Multimedia Card (MMC) media |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of the MMC card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/mmc-insert test is run. It tests reading and writing to the MMC card. |
User: | root |
Plugin: | shell |
mediacard/ms-insert
Verify the detection of Memory Stick (MS) card insertion by the system’s media card reader.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Memory Stick (MS) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of an MS card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/ms-storage
Automated test for reading and writing to the MS card after mediacard/ms-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/ms-insert test is run. It tests reading and writing to the MS card. |
User: | root |
Plugin: | shell |
mediacard/msp-insert
Verify the system’s media card reader can detect a Memory Stick Pro (MSP) card insertion.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Memory Stick Pro (MSP) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a MSP card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/msp-storage
Automated test for reading and writing to the MSP card after mediacard/msp-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/msp-insert test is run. It tests reading and writing to the MSP card. |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of an UNLOCKED Secure Digital (SD) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of an SD card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/sd-insert test is run. It tests reading and writing to the SD card. |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a UNLOCKED Secure Digital High-Capacity (SDHC) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of an SDHC card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | This test is automated and executes after the mediacard/sdhc-insert test is run. It tests reading and writing to the SDHC card. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of a Secure Digital Extended Capacity (SDXC) media card |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a SDXC card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/sdxc-insert test is run. It tests reading and writing to the SDXC card. |
User: | root |
Plugin: | shell |
mediacard/storage-preinserted-symlink_uuid
Automated test of SD Card reading & writing ({symlink_uuid})
Unit type: | template |
Category ID: | mediacard |
Status: | Blocking |
After-suspend: | True |
From template: | mediacard/storage-preinserted-symlink_uuid |
Template resource: | removable_partition |
Template filter: | removable_partition.bus == ‘mediacard’ |
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system’s media card reader can detect the insertion of an Extreme Digital (xD) media card. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/xd-remove
Automated test for detecting the removal of a xD card from the system’s card reader.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a xD card from the system’s card reader. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
User: | root |
Plugin: | user-interact |
mediacard/xd-storage
Automated test to verify reading and writing functionality of the xD card after mediacard/xd-insert test.
Category ID: | mediacard |
Status: | Blocking |
Purpose: | This test is automated and executes after the mediacard/xd-insert test is run. It tests reading and writing to the xD card. |
User: | root |
Plugin: | shell |
Memory tests¶
Proper detection of the amount of memory installed is required (the amount of memory installed is the memory seen by the OS).
The following test units are covered in this category:
Miscellaneous tests¶
The following test units are covered in this category:
Category ID: | miscellanea |
Status: | Blocking |
Purpose: | Device check |
Steps: |
|
Verification: | Do the devices reported by udev match the devices on the Manifest? |
Plugin: | user-interact-verify |
Category ID: | miscellanea |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | A meta-job that verifies the data necessary for a complete result submission are present. Failure indicates that the results are incomplete and may be rejected. |
Plugin: | shell |
Monitor tests¶
Each of the available external video ports (supported ports are HDMI, DisplayPort, DVI) are tested one by one. Output to the display must work i.e. a console is presented.
The following test units are covered in this category:
Category ID: | monitor |
Status: | Blocking |
Purpose: | This test will check the DisplayPort port and the ability to do hotplugging. |
Steps: | Skip this test if your system does not have a DisplayPort port. 1. If a display is already connected, unplug it. 2. (Re-)Connect a display to the DisplayPort port on your system |
Verification: | Was the interface displayed correctly on the screen? |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through DVI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through VGA adaptor on DVI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through HDMI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through VGA adaptor on HDMI port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Category ID: | monitor |
Status: | Blocking |
Purpose: | Check output to display through VGA port |
Steps: |
|
Verification: | Output to display works |
After-suspend: | True |
Plugin: | manual |
Non-device specific networking tests¶
The following test units are covered in this category:
Category ID: | networking |
Status: | Blocking |
Purpose: | Test if the running kernel supports IPv6. |
Steps: | <missing steps> |
Verification: | <missing verification> |
After-suspend: | True |
Unit type: | template |
Category ID: | networking |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | ipv6_link_local_address_interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | networking |
Status: | Blocking |
After-suspend: | True |
From template: | networking/info_device__index___interface |
Template resource: | device |
Template filter: | device.category == ‘NETWORK’ |
Power Management tests¶
Warm reboot is tested such that the system must be able to perform the reboot command and services must be restarted such that systemctl does not identify a failed state.
Cold reboot is performed where an RTC is available (see next section). The wakealarm is used to reboot the system after a period of rest and services must be restarted such that systemctl does not identify a failed state.
The following test units are covered in this category:
Category ID: | power-management |
Status: | Blocking |
Purpose: | This test powers off the system and then powers it on using RTC |
Environment variable: | COLD_REBOOT_DELAY, RTC_DEVICE_FILE |
User: | root |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | Check there are no failed services after the cold reboot |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | Check there are no failed services after the warm reboot |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | This tests reboots the system using the reboot command |
User: | root |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: | <missing steps> |
Verification: | <missing verification> |
Description: | <missing description> |
Category ID: | power-management |
Status: | Blocking |
Purpose: | Check there are no failed services after the watchdog triggered |
Plugin: | shell |
Category ID: | power-management |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: | <missing steps> |
Verification: | <missing verification> |
Description: | <missing description> |
Real Time Clock (RTC)¶
The following test units are covered in this category:
Category ID: | rtc_category |
Status: | Blocking |
Purpose: | RTC battery backup power can send system wakeup events. |
Steps: |
|
Verification: | RTC can wake up the system successfully. environ: RTC_DEVICE_FILE |
User: | root |
Plugin: | user-interact |
Serial Port¶
Tests are carried out on ports that provide access via the Linux tty layer. The exact tests performed depend on the physical characteristics of the driver/receiver hardware. The possible tests include:
Ensure expected number of devices are available
Looped tests:
RS232 Ports: perform loopback test to ensure RX/TX
RS422/485 Ports: connect together to ensure RX/TX
Machine to Machine tests: confirm that a connection can be made to another
PC device and RX/TX is operational
The following test units are covered in this category:
Unit type: | template |
Category ID: | serial |
Status: | Blocking |
After-suspend: | True |
From template: | serial/loopback-dev |
Template resource: | serial_ports_static |
Category ID: | serial |
Status: | Blocking |
Purpose: | Check user can log into system through serial port from another machine |
Steps: |
|
Verification: |
|
After-suspend: | True |
Plugin: | manual |
Snapd¶
The following test units are covered in this category:
Category ID: | snapd |
Status: | Blocking |
Purpose: | The store should contain the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap. The test makes sure this can be downloaded and installed on the system. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | If snap list command is working then should at least find the ubuntu-core package. |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | The test will install the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap from the stable channel and then refreshes it to the edge channel and compares the revision before and after the refresh. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | After having installed the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap, check it can be removed. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Checks that the {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap can be refreshed after removal of the blacklisted revision. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Checks if the edge channel {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} snap is reverted back to the one from stable. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | If snap find command is working then should find {{ __checkbox_env__.get(“TEST_SNAP”, “test-snapd-tools”) }} in the store. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Test all the snaps’ confinement, devmode, revision. Make sure the confinement is “strict”, devmode is “False”, and revision should not be sideloaded. |
Plugin: | shell |
Unit type: | template |
Category ID: | snapd |
Status: | Blocking |
Environment variable: | STORE_ID |
From template: | snappy/test-store-config-store |
Template resource: | com.canonical.certification::model_assertion |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Test the snappy install command is able to install and remove snap in beta channel store. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
Category ID: | snapd |
Status: | Blocking |
Purpose: | Test the snappy install command is able to install a snap in the edge channel store. |
Environment variable: | CHECKBOX_RUNTIME, SNAPD_POLL_INTERVAL, SNAPD_TASK_TIMEOUT, TEST_SNAP |
User: | root |
Plugin: | shell |
SocketCAN interface tests¶
The following test units are covered in this category:
socketcan/send_packet_local_eff_virtual
Virtual CAN device support test (Local test with raw socket and EFF)
Category ID: | socketcan |
Status: | Blocking |
Purpose: | Test that the kernel supports CAN networking by sending packets to a virtual device using a raw socket, this is only a local test as the broadcast packet is received on the same device |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_local_eff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Category ID: | socketcan |
Status: | Blocking |
Purpose: | Test that the kernel supports CAN networking by sending packets to a virtual device using a raw socket; this is only a local test as the broadcast packet is received on the same device. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_local_fd_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Category ID: | socketcan |
Status: | Blocking |
Purpose: | Test that the kernel supports CAN networking by sending packets to a virtual device using a raw socket, this is only a local test as the broadcast packet is received on the same device |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_local_sff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_remote_eff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_remote_fd_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
Unit type: | template |
Category ID: | socketcan |
Status: | Blocking |
After-suspend: | True |
From template: | socketcan/send_packet_remote_sff_interface |
Template resource: | device |
Template filter: | device.category == ‘SOCKETCAN’ |
TPM 2.0 (Trusted Platform Module)¶
On Intel and AMD x86 platforms that include TPM 2.0 compliant modules, it is required that all commands necessary to support Ubuntu’s Full Disk Encryption functionality are supported.
The following test units are covered in this category:
clevis-encrypt-tpm2/detect-ecc-capabilities
Ensure the TPM has required capabilities for clevis ECC test
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
clevis-encrypt-tpm2/detect-rsa-capabilities
Ensure the TPM has required capabilities for clevis RSA test
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | tpm2 |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | The information in the TPM Event Log can be useful in debugging problems with TPM command support and adherance to standards. This can be of particular help when checking whether a device can support Ubuntu Core Full Disk Encryption. |
User: | root |
Plugin: | attachment |
Ubuntu Core OS feature tests¶
The following test units are covered in this category:
Category ID: | ubuntucore |
Status: | Blocking |
Purpose: | Check if a user can access the system through SSH from another machine |
Steps: |
|
Verification: | Can log into the system through SSH from another machine |
Plugin: | manual |
USB tests¶
USB 2.0¶
USB storage devices must work on all available USB ports. USB Human Interface Devices (HID), specifically keyboard or mouse, should be working properly on any USB port.
USB 3.0¶
USB storage devices must work on all available USB ports. USB Human Interface Devices (HID), specifically keyboard or mouse, should be working properly on any USB port.
USB Type C (USB 3.1)¶
USB Type C (USB 3.1) supports various types of devices (e.g. Video, Power) through the use of adapters or peripherals. The following adapters/peripherals should work:
Storage devices
Keyboard or mouse (basic functionality)
When DisplayPort over USB Type-C is advertised:
- Display hot plugging and the following display are required to work:
mirrored, extended, internal only, external only.
Audio output needs to be undistorted over this port.
The following test units are covered in this category:
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Steps: |
|
Verification: | The host and DUT can ping each other. |
Description: | <missing description> |
After-suspend: | True |
User: | root |
Plugin: | user-interact-verify |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check that after connecting the device under test (DUT) to another device (host), the DUT can be detected as a mass storage device by the host. |
Steps: |
|
Verification: | The host detects and mounts the mass storage device. It has read and write permissions on it. |
After-suspend: | True |
User: | root |
Plugin: | user-interact-verify |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check if USB OTG can work as a serial port. |
Steps: |
|
Verification: | Does string send and receive function correctly? |
After-suspend: | True |
User: | root |
Plugin: | user-interact-verify |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that you can use a USB HID device plugged in a USB Type-C port using a “USB Type-C to Type-A” adapter |
Steps: |
|
Verification: | Did the device work as expected? |
After-suspend: | True |
Plugin: | manual |
usb-c/c-to-a-adapter/insert
Verify that the system detects a USB 3 storage device using a “Type-C to Type-A” adapter.
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the insertion of a USB 3 storage device in a USB Type-C connector using a “Type-C to Type-A” adapter. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
usb-c/c-to-a-adapter/remove
Check the detection of a USB 3 storage device removal, connected via a “Type-C to Type-A” adapter.
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a USB 3 storage device connected to a USB Type-C port using a “USB Type-C to Type-A” adapter. |
Steps: |
|
Verification: | The verification of this test is automated. Do not modify the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
usb-c/c-to-a-adapter/storage-automated
Automate the execution process post usb-c/c-to-a-adapter/insert test.
Category ID: | usb |
Status: | Blocking |
Purpose: | This test is automated and executes after the usb-c/c-to-a-adapter/insert test is run. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that you can use a USB HID device plugged in a USB Type-C port |
Steps: |
|
Verification: | Did the device work as expected? |
After-suspend: | True |
Plugin: | manual |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the insertion of a USB 3.0 storage device in a USB Type-C connector. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test will check that the system correctly detects the removal of a USB 3.0 storage device connected to a USB Type-C port. |
Steps: |
|
Verification: | The system should automatically detect the removal of the USB 3.0 storage device. The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | This test is automated and executes after the usb-c/insert test is run. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check USB input device works |
Steps: |
|
Verification: | What was just input is displayed correctly |
After-suspend: | True |
Plugin: | manual |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect USB 2.0 storage when inserted. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect removal of a USB 2.0 storage device |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can read/write to USB 2.0 storage correctly |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | usb |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
After-suspend: | True |
Plugin: | shell |
usb/storage-preinserted-symlink_uuid
Test USB storage on 2.0 or 1.1 ports detected by udev ({symlink_uuid})
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
After-suspend: | True |
From template: | usb/storage-preinserted-symlink_uuid |
Template resource: | removable_partition |
Template filter: | “usb” in removable_partition.bus |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb/zapper-usb-insert-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘2’ |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb/zapper-usb-remove-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘2’ |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect insertion of a USB 3.0 storage device. NOTE: Make sure the USB storage device has a partition before starting the test. |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can detect removal of a USB 3.0 storage device |
Steps: |
|
Verification: | The verification of this test is automated. Do not change the automatically selected result. |
After-suspend: | True |
User: | root |
Plugin: | user-interact |
Category ID: | usb |
Status: | Blocking |
Purpose: | Check system can read/write to USB 3.0 storage devices correctly |
After-suspend: | True |
User: | root |
Plugin: | shell |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb3/zapper-usb-insert-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘3’ |
Unit type: | template |
Category ID: | usb |
Status: | Blocking |
Description: | <missing description> |
Environment variable: | ZAPPER_HOST |
From template: | usb3/zapper-usb-remove-port_alias |
Template resource: | zapper_capabilities |
Template filter: | zapper_capabilities.capability == ‘USB hotplug’ and zapper_capabilities.usb_version == ‘3’ |
Wi-Fi access point¶
The following test units are covered in this category:
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
From template: | wireless/nmcli_wifi_ap_a_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/nmcli_wifi_ap_bg_interface
Create 802.11b/g Wi-Fi AP on {{ interface }} using NetworkManager
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/nmcli_wifi_ap_bg_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_b_no_sta_interface_auto
Create open 802.11b Wi-Fi AP on {interface} with no STA
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_open_b_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_b_no_sta_interface_manual
Create open 802.11b Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_open_b_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_g_no_sta_interface_auto
Create an open 802.11g Wi-Fi AP on {interface} with no STA connected.
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_open_g_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_open_g_no_sta_interface_manual
Create open 802.11g Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_open_g_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_setup_wizard_interface_auto
Create Access Point on {interface} using wifi-ap.setup-wizard
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_setup_wizard_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_b_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_b_no_sta_interface_manual
Create WPA2 802.11b Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_wpa_b_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_b_with_sta_interface_auto
Create a WPA2 802.11b Wi-Fi Access Point on {interface} with active STA
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, OPEN_BG_SSID, WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_b_with_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
Environment variable: | WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_g_no_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_g_no_sta_interface_manual
Create WPA2 802.11g Wi-Fi AP on {interface} with no STA (Manual)
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wifi_ap_wpa_g_no_sta_interface_manual |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wifi_ap_wpa_g_with_sta_interface_auto
Create WPA2 802.11g Wi-Fi Access Point on {interface} with active STA
Unit type: | template |
Category ID: | wifi_ap |
Status: | Blocking |
Description: | <missing description> |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, OPEN_BG_SSID, WIFI_AP_SETUPTIME |
From template: | wireless/wifi_ap_wpa_g_with_sta_interface_auto |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Wireless networking tests¶
Wi-Fi interfaces are tested for connection to access points configured for 802.11 b/g/n/ac/ax protocols.
The following test units are covered in this category:
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/check_iwlwifi_microcode_crash_interface |
Template resource: | device |
Template filter: | device.driver == ‘iwlwifi’ |
Category ID: | wireless |
Status: | Blocking |
Purpose: | <missing purpose> |
Description: | <missing description> |
After-suspend: | True |
Plugin: | shell |
wireless/wireless_connection_open_ac_nm_interface
Connect to unencrypted 802.11ac Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_ac_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_ac_np_interface
Connect to unencrypted 802.11ac Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_AC_SSID |
From template: | wireless/wireless_connection_open_ac_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_ax_nm_interface
Connect to unencrypted 802.11ax Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_ax_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_ax_np_interface
Connect to unencrypted 802.11ax Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_AX_SSID |
From template: | wireless/wireless_connection_open_ax_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_be_nm_interface
Connect to unencrypted 802.11be Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_be_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_be_np_interface
Connect to unencrypted 802.11be Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_BE_SSID |
From template: | wireless/wireless_connection_open_be_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_bg_nm_interface
Connect to an unencrypted 802.11b/g Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_bg_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_bg_np_interface
Connect to unencrypted 802.11b/g Wi-Fi network on {{ interface }} using netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_BG_SSID |
From template: | wireless/wireless_connection_open_bg_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_n_nm_interface
Connect to an unencrypted 802.11n Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_open_n_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_open_n_np_interface
Connect to unencrypted 802.11n Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, OPEN_N_SSID |
From template: | wireless/wireless_connection_open_n_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_ax_nm_interface
Connect to WPA3-encrypted 802.11ax Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa3_ax_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_ax_np_interface
Connect to WPA3-encrypted 802.11ax Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA3_AX_PSK, WPA3_AX_SSID |
From template: | wireless/wireless_connection_wpa3_ax_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_be_nm_interface
Connect to WPA3-encrypted 802.11be Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa3_be_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa3_be_np_interface
Connect to WPA3-encrypted 802.11be Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA3_BE_PSK, WPA3_BE_SSID |
From template: | wireless/wireless_connection_wpa3_be_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ac_nm_interface
Connect to WPA-encrypted 802.11ac Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_ac_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ac_np_interface
Connect to WPA-encrypted 802.11ac Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_AC_PSK, WPA_AC_SSID |
From template: | wireless/wireless_connection_wpa_ac_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ax_nm_interface
Connect to WPA-encrypted 802.11ax Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_ax_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_ax_np_interface
Connect to WPA-encrypted 802.11ax Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_AX_PSK, WPA_AX_SSID |
From template: | wireless/wireless_connection_wpa_ax_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_be_nm_interface
Connect to WPA-encrypted 802.11be Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_be_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_be_np_interface
Connect to WPA-encrypted 802.11be Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_BE_PSK, WPA_BE_SSID |
From template: | wireless/wireless_connection_wpa_be_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_bg_nm_interface
Connect to WPA-encrypted 802.11b/g Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_bg_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_bg_np_interface
Connect to WPA-encrypted 802.11b/g Wi-Fi network on {{ interface }} - netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_BG_PSK, WPA_BG_SSID |
From template: | wireless/wireless_connection_wpa_bg_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_n_nm_interface
Connect to a WPA-encrypted 802.11n Wi-Fi network on {{ interface }}
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_connection_wpa_n_nm_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
wireless/wireless_connection_wpa_n_np_interface
Connect to a WPA-encrypted 802.11n Wi-Fi network on {{ interface }} using netplan
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, NET_DRIVER_INFO, WPA_N_PSK, WPA_N_SSID |
From template: | wireless/wireless_connection_wpa_n_np_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Unit type: | template |
Category ID: | wireless |
Status: | Blocking |
After-suspend: | True |
From template: | wireless/wireless_scanning_interface |
Template resource: | device |
Template filter: | device.category == ‘WIRELESS’ and device.interface != ‘UNKNOWN’ |
Wireless Wide Area Network¶
WWAN interfaces are tested for connection to 3G/4G/LTE services.
The following test units are covered in this category:
Unit type: | template |
Category ID: | wwan |
Status: | Blocking |
Description: | Scan for available 3GPP networks with the target modem |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH |
From template: | wwan/3gpp-scan-manufacturer-model-hw_id-auto |
Template resource: | wwan_resource |
Category ID: | wwan |
Status: | Blocking |
Purpose: | Check if a SIM card is present in a slot connected to the modem |
Steps: |
|
Verification: | Check the output. Was the SIM information printed? |
After-suspend: | True |
Plugin: | manual |
wwan/check-sim-present-manufacturer-model-hw_id-auto
Check if a SIM card is present in a slot connected to the modem
Unit type: | template |
Category ID: | wwan |
Status: | Blocking |
Description: | Check if a SIM card is present in a slot connected to the modem |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH |
From template: | wwan/check-sim-present-manufacturer-model-hw_id-auto |
Template resource: | wwan_resource |
Category ID: | wwan |
Status: | Blocking |
Purpose: | Tests that there is a WWAN module present and indicates that testing of it should follow. |
After-suspend: | True |
User: | root |
Plugin: | shell |
Category ID: | wwan |
Status: | Blocking |
Purpose: | Check if WWAN module is available and ready to be used. |
Steps: |
|
Verification: | Check the output. Was the modem listed? |
After-suspend: | True |
Plugin: | manual |
wwan/gsm-connection-interrupted-manual
Verify a GSM broadband connection can be reconnected after the signal is lost
Category ID: | wwan |
Status: | Blocking |
Purpose: | Ensure that the data connection can be revived after losing signal |
Steps: |
|
Verification: | Was the connection revived after removing the Faraday bag? |
After-suspend: | True |
Plugin: | manual |
wwan/gsm-connection-manufacturer-model-hw_id-auto
Verify a GSM broadband modem can create a data connection
Unit type: | template |
Category ID: | wwan |
Status: | Blocking |
After-suspend: | True |
Environment variable: | LD_LIBRARY_PATH, WWAN_APN, WWAN_CONTROL_IF, WWAN_NET_IF, WWAN_SETUPTIME |
From template: | wwan/gsm-connection-manufacturer-model-hw_id-auto |
Template resource: | wwan_resource |
Non-blocking¶
Informational tests¶
The following test units are covered in this category:
Appendix A. FWTS tests¶
As part of the certification process, we run a series of firmware tests that are part of the Canonical Firmware Test Suite. In general, any HIGH or CRITICAL error found in the fwts log can cause potential errors in the system and should be looked at by OEMs/ODMs.
Category |
Test Item |
Description |
---|---|---|
Information |
acpidump |
Check ACPI table acpidump. |
Information |
version |
Gather kernel system information. |
ACPI |
acpitables |
ACPI table settings confidence checks. |
ACPI |
apicinstance |
Check for single instance of APIC/MADT table. |
ACPI |
hpet_check |
High Precision Event Timer configuration test. |
ACPI |
mcfg |
MCFG PCI Express* memory mapped config space. |
ACPI |
method |
ACPI DSDT Method Semantic Tests. |
CPU |
mpcheck |
Check Multi Processor tables. |
CPU |
msr |
CPU MSR consistency check. |
CPU |
mtrr |
MTRR validation. |
System |
apicedge |
APIC Edge/Level Check. |
System |
klog |
Scan kernel log for errors and warnings. |