VTS / CTS¶
The Android Vendor Test Suite (VTS) and Compatibility Test Suite (CTS) are test frameworks used to validate Android device implementations.
LAVA provides sophisticated methods for deploying and booting Android images, as well as for executing VTS/CTS test suites.
```yaml device_type: dragonboard-845c job_name: android-mainline-cts-test
timeouts: job: minutes: 600 connection: minutes: 2 actions: finalize: seconds: 60
priority: 50 visibility: public
context: test_character_delay: 10
secrets: SQUAD_ARCHIVE_SUBMIT_TOKEN: SQUAD_ARCHIVE_SUBMIT_TOKEN
actions: - deploy: to: fastboot docker: image: linaro/lava-android-test:focal-2024.02.20-01 local: true images: partition:0: url: https://example.com/gpt_both0.bin boot: url: https://example.com/boot.img super: url: https://example.com/super.img vendor_boot: url: https://example.com/vendor_boot.img userdata: url: https://example.com/userdata.img timeout: minutes: 20
-
test: docker: image: linaro/lava-android-test:focal-2024.02.20-01 local: true definitions:
- from: inline
path: format-metatdata.yaml
name: format-metatdata
repository:
metadata:
format: Lava-Test Test Definition 1.0
name: format-metatdata
description: format-metatdata
run:
steps:
- lava-test-case "format-metadata" --shell fastboot format:ext4 metadata timeout: minutes: 5
- from: inline
path: format-metatdata.yaml
name: format-metatdata
repository:
metadata:
format: Lava-Test Test Definition 1.0
name: format-metatdata
description: format-metatdata
run:
steps:
-
test: docker: image: linaro/lava-android-test:focal-2024.02.20-01 local: true definitions:
- from: inline
path: select-display-panel.yaml
name: select-display-panel
repository:
metadata:
format: Lava-Test Test Definition 1.0
name: select-display-panel
description: select-display-panel
run:
steps:
- lava-test-case "select-display-panel-1" --shell fastboot oem select-display-panel hdmi
- lava-test-case "reboot-bootloader-1" --shell fastboot reboot bootloader
- lava-test-case "select-display-panel-2" --shell fastboot oem select-display-panel hdmi
- lava-test-case "reboot-bootloader-2" --shell fastboot reboot bootloader
- lava-test-case "select-display-panel-3" --shell fastboot oem select-display-panel hdmi
- lava-test-case "reboot" --shell fastboot reboot timeout: minutes: 5
- from: inline
path: select-display-panel.yaml
name: select-display-panel
repository:
metadata:
format: Lava-Test Test Definition 1.0
name: select-display-panel
description: select-display-panel
run:
steps:
-
boot: method: fastboot docker: image: linaro/lava-android-test:focal-2024.02.20-01 local: true prompts:
- console:/
- root@(.*):[/~]# timeout: minutes: 15
-
test: timeout: minutes: 10 interactive:
- name: sleep-before-adb-available prompts:
- console:/
- root@(.*):[/~]# script:
- command: echo ===========================
- command: i=0 && while ! getprop sys.boot_completed|grep 1 && [ $i -le 30 ]; do let i=i+1; echo sleep $i*10s for sys.boot_completed; sleep 10; done; echo "for prompt";
- command: if ! getprop sys.boot_completed|grep 1 ; then logcat -d; echo "Failed to boot successfully"; exit 1; fi
- command: echo ===========================
- command: i=0 && while ! getprop init.svc.adbd|grep running && [ $i -le 15 ]; do let i=i+1; echo sleep $i*10s for init.svc.adbd; sleep 10; done; echo "for prompt";
- command: if ! getprop init.svc.adbd|grep running; then logcat -d; echo "Failed to have adbd running"; exit 1; fi
- command: echo ===========================
- command: getprop | grep adb
- command: echo ===========================
-
test: docker: image: linaro/lava-android-test:focal-2024.02.20-01 local: true definitions:
- from: inline
path: android-boot.yaml
name: android-boot
repository:
metadata:
format: Lava-Test Test Definition 1.0
name: android-boot
description: android-boot
run:
steps:
- lava-test-case "android-boot-wait-for-device" --shell adb wait-for-device
- lava-test-case "android-boot-boot-completed" --shell "while ! adb shell getprop sys.boot_completed|grep 1; do sleep 2; done"
- lava-test-case "android-boot-set-power-stayon" --shell adb shell su 0 svc power stayon true
- lava-test-case "android-boot-screencap" --shell adb shell screencap -p /data/local/tmp/screencap.png
- lava-test-case "android-boot-fstab" --shell adb shell "su 0 cat /vendor/etc/fstab.*"
- lava-test-case "android-boot-kernel-version" --shell adb shell su 0 cat /proc/version
- lava-test-case "android-boot-kernel-cmdline" --shell adb shell su 0 cat /proc/cmdline timeout: minutes: 10
- from: inline
path: android-boot.yaml
name: android-boot
repository:
metadata:
format: Lava-Test Test Definition 1.0
name: android-boot
description: android-boot
run:
steps:
-
test: docker: image: linaro/lava-android-test:focal-2024.02.20-01 local: true definitions:
- repository: https://github.com/Linaro/test-definitions.git from: git path: automated/android/noninteractive-tradefed/tradefed.yaml params: TEST_PARAMS: cts --include-filter CtsAslrMallocTestCases --include-filter CtsBionicTestCases --include-filter CtsBluetoothTestCases --include-filter CtsCameraTestCases --include-filter CtsDisplayTestCases --include-filter CtsDramTestCases --include-filter CtsDrmTestCases --include-filter CtsGraphicsTestCases --include-filter CtsHardwareTestCases --include-filter CtsJankDeviceTestCases --include-filter CtsJniTestCases --include-filter CtsLibcoreLegacy22TestCases --include-filter CtsLibcoreTestCases --include-filter CtsMonkeyTestCases --include-filter CtsOsTestCases --include-filter CtsSystemUiTestCases --include-filter CtsSystemUiRenderingTestCases --include-filter CtsUsbTests --exclude-filter "CtsOsTestCases android.os.cts.BuildVersionTest#testBuildFingerprint" --exclude-filter "CtsOsTestCases android.os.cts.SecurityFeaturesTest#testPrctlDumpable" --disable-reboot TEST_URL: https://example.com/android-cts.zip TEST_PATH: android-cts RESULTS_FORMAT: aggregated ANDROID_VERSION: aosp-main SQUAD_UPLOAD_URL: https://qa-reports.linaro.org/api/submit/android-lkft/mainline-gki-16k-aosp-master-db845c/6.12.0-b405a1c95660/dragonboard-845c INTERNET_ACCESS: 'true' name: cts-lkft timeout: minutes: 480 ```
See tradefed test definition for what each test parameter does.