blob: 0df911bd1789e97a7e5ab9b93e4b484287e7c77d [file] [log] [blame] [view]
Daniel Erat599e0242018-09-15 00:52:551# Tast Test Dependencies (go/tast-deps)
Daniel Erat5b270ed2018-05-02 05:37:542
Hidehiko Abe8a496142020-02-06 04:23:283A test may specify software or hardware features that must be supported on the DUT
4in order for the test to run successfully. If one or more features aren't
Daniel Erat673ebab2019-02-13 05:32:465supported by the DUT, the test will usually be skipped. See the `tast` command's
6`-checktestdeps` flag to control this behavior.
Daniel Erat5b270ed2018-05-02 05:37:547
Hidehiko Abe8a496142020-02-06 04:23:288Tests specify dependencies through the `SoftwareDeps` and `HardwareDeps` fields in [testing.Test].
Daniel Erat673ebab2019-02-13 05:32:469
Seewai Fud9482212023-04-25 01:50:5710[testing.Test]: https://godoc.org/chromium.googlesource.com/chromiumos/platform/tast.git/src/go.chromium.org/tast/core/testing#Test
Daniel Erat673ebab2019-02-13 05:32:4611
Hidehiko Abe8a496142020-02-06 04:23:2812## Software dependencies
13
14### Existing features
Daniel Erat673ebab2019-02-13 05:32:4615
Daniel Erat5b270ed2018-05-02 05:37:5416The following software features are defined:
17
Jared Bennettc73c68e2023-04-11 23:31:3118* `amd64` - The [amd64] processor architecture.
19* `amd_cpu` - Boards that contain an AMD application processor.
20* `android_vm` - The ability to [run Android apps] in VM instead of container.
Yusuke Sato9e6ec722020-04-09 01:25:1421 Any version of Android R+ can be used. Prefer this over `android_vm_r` if possible.
Jared Bennettc73c68e2023-04-11 23:31:3122* `android_vm_r` - `android_vm` feature that runs in R VM.
23* `android_p` - The ability to [run Android apps] that require Android P.
24* `arc` - The ability to [run Android apps] in any way, in VM or container,
Yusuke Sato2e203bd2020-02-20 00:41:3225 with any Android version. This is intended to be used to run non-ARC tests
26 only when ARC is supported on the board.
Jared Bennettc73c68e2023-04-11 23:31:3127* `arc32` - Runs 32-bit Android primary ABI.
28* `arc64` - Runs 64-bit Android primary ABI, may or may not have 32-bit support.
29* `arc_android_data_cros_access` - The ability to access Android's /data directory from ChromeOS.
Momoko Hattorie76a1c32022-08-05 13:26:5430 For ARCVM virtio-blk /data devices, this only ensures that we can mount the virtio-blk disk
31 image of Android's /data directory on the host, and does not grant an automatic access to
32 Android's /data directory from the host side.
Jared Bennettc73c68e2023-04-11 23:31:3133* `arc_camera3` - Using [Camera HAL3] interface in Chrome and Android.
34* `arc_launched_32bit` - This platform originally launched with 32-bit Android.
35* `arc_launched_64bit` - This platform originally launched with 64-bit Android.
36* `arm` - The [arm] 32 and 64 bit processor architecture.
37* `aslr` - Address space layout randomization, which mitigates buffer-overflow
Eric Caruso6ca58ce2018-12-04 00:38:3838 attacks, is functional (this is not true for builds with [AddressSanitizer]
39 instrumentation built in).
Jared Bennettc73c68e2023-04-11 23:31:3140* `auto_update_stable` - No suffix like -kernelnext and -arc-r in the board name.
Yi Xie397d5152022-05-12 06:02:5241 Auto update to a stable version is possible.
Jared Bennettc73c68e2023-04-11 23:31:3142* `autotest-capability:foo` - An [Autotest capability] named `foo`. See below.
43* `biometrics_daemon` - The ability to process fingerprint authentication.
Yicheng Li70d8cc32019-06-05 21:09:0744 This implies the presence of the `biod` package.
Jared Bennettc73c68e2023-04-11 23:31:3145* `bluetooth_floss` - Excludes boards that do not support the floss bluetooth adapter.
46* `boot_perf_info` - Reven (ChromeOS Flex) doesn't support boot performance metrics.
47* `borealis_host` - Boards that can host the Borealis system.
Po-Hsien Wang04c58402023-06-06 23:13:2848* borealis_nvidia - Boards that use nvidia supported Borealis system.
Jared Bennettc73c68e2023-04-11 23:31:3149* `bpf` - Whether the platform (kernel) has the bpf syscall enabled.
50* `breakpad` - Whether the platform supports the breakpad crash handler
Ian Barkley-Yeung3ff970d2020-01-17 03:59:3351 for Chrome.
Jared Bennettc73c68e2023-04-11 23:31:3152* `camera_720p` - The ability to capture video with frame size 1280x720.
53* `camera_app` - The ability to run the builtin camera app.
54* `camera_feature_auto_framing` - Whether Auto Framing is enabled on this platform.
55* `camera_feature_effects` - Whether camera effects are enabled on this platform.
56* `camera_feature_hdrnet` - Whether HDRnet is enabled on this platform.
57* `camera_feature_portrait_mode` - Whether Portrait Mode is enabled on this platform.
58* `cert_provision` - The ability to use an additional cert_provision library
Yi Chou4e6cf3b2020-10-29 08:42:5359 that supports an interface for provisioning machine-wide certificates and
60 using them for signing data on top of cryptohome dbus interface.
Jared Bennettc73c68e2023-04-11 23:31:3161* `chrome` - Support for performing user login via Chrome (i.e. using
Daniel Erat75160d42019-05-15 20:18:0962 `session_manager` and `cryptohome`). This also implies that the
63 [chromeos-chrome] Portage package is installed (which also installs Chrome
64 binary tests), and that the `ui` Upstart job is present.
Jared Bennettc73c68e2023-04-11 23:31:3165* `chromeless` - Explicit *lack* of support for login via Chrome.
66* `chromeos_firmware` - Boards that use ChromeOS firmware.
67* `chromeos_kernelci` - Whether the image built for https://chromeos.kernelci.org/ or not.
68* `chrome_internal` - Functionality that is only available in internal builds
Madhulika2955f682020-05-18 18:42:4569 of Chrome (e.g. official branding). Any test that specifies this dependency
70 should also explicitly specify a `chrome` dependency.
Jared Bennettc73c68e2023-04-11 23:31:3171* `coresched` - Whether device supports core scheduling feature for secure HT.
72* `cpuidle_teo` - Availability of the TEO cpuidle governor.
Pattara Teerapong6a8a1722023-05-03 09:57:0073* `cpu_heterogeneous` - Whether device has heterogeneous CPU topology.
Jared Bennettc73c68e2023-04-11 23:31:3174* `cpu_vuln_sysfs` - Whether the platform has /sys/devices/system/cpu/vulnerabilities sysfs files
75* `cras` - Whether the platform supports the ChromeOS Audio Server.
76* `crashpad` - Whether the platform supports the crashpad crash handler for
Ian Barkley-Yeung9e7307a2020-03-03 03:42:1177 Chrome.
Jared Bennettc73c68e2023-04-11 23:31:3178* `cros_internal` - Functionality that is only available in internal builds of
Jesse McGuire84c09702022-05-06 23:17:2979 ChromeOS (i.e. ones built using `chromeos-overlay`).
Jared Bennettc73c68e2023-04-11 23:31:3180* `crossystem` - ChromeOS firmware/system interface utility.
81* `crostini_stable` - Boards that can run Crostini tests reliably.
82* `crostini_unstable` - Boards that cannot run Crostini tests reliably.
83* `crosvm_gpu` - Boards that use hardware GPU acceleration in the guest VM environment.
84* `crosvm_no_gpu` - Boards that use software GPU emulation in the guest VM environment.
David Stevensfc506132023-05-16 11:06:0185* `crosvm_swap - Boards that have crosvm's vmm-swap feature enabled.
Jared Bennettc73c68e2023-04-11 23:31:3186* `cups` - CUPS daemon.
87* `device_crash` - Boards that can recover gracefully after a hard crash (e.g.
Miriam Zimmerman23fa2202020-11-03 23:35:0088 kernel crash)
Jared Bennettc73c68e2023-04-11 23:31:3189* `diagnostics` - Boards that contain generic cross-platform
Trent Begin4d274762019-05-29 22:01:5790 [Diagnostic utilities].
Jared Bennettc73c68e2023-04-11 23:31:3191* `dlc` - Support of [Downloadable Content] (DLC).
92* `dmverity_stable` - Kernels with which dm-verity runs stably. See [b/172227689](https://b.corp.google.com/issues/172227689).
93* `dmverity_unstable` - Kernels having known issue of dm-verity causing random crashes. See [b/172227689](https://b.corp.google.com/issues/172227689).
94* `dptf` - Support of [Intel Dynamic Platform and Thermal Framework] (DPTF).
95* `drivefs` - Google Drive support enabled.
96* `drm_atomic` - The [DRM/KMS] kernel subsystem supports atomic commits.
97* `drm_trace` - The [DRM/KMS] kernel subsystem supports tracing using tracefs.
98* `ec_crash` - Boards that have EC firmware, implement the `crash` EC command,
Miriam Zimmerman23fa2202020-11-03 23:35:0099 and produce a panicinfo file after a crash.
Jared Bennettc73c68e2023-04-11 23:31:31100* `ec_system_safe_mode` - Boards that have support for EC system safe mode,
Rob Barnes482d1822023-02-23 16:37:52101 which allows for collecting additional debug info after a crash.
Jared Bennettc73c68e2023-04-11 23:31:31102* `endorsement` - Whether the system have a valid endorsement certificate.
103* `faceauth` - Whether the system has faceauth functionality enabled, go/cros-faceauth.
104* `factory_flow`- Device is subject to the [go/chromeos-factory-flow](http://go/chromeos-factory-flow) (e.g. most devices).
105* `fake_hps` - Whether the HPS daemon (go/cros-hps) uses a fake software
Dan Callaghan29c250f2022-06-27 05:36:27106 device for testing purposes.
Jared Bennettc73c68e2023-04-11 23:31:31107* `firewall` - Standard ChromeOS network firewall rules.
108* `flashrom` - Userspace utility to update firmware.
109* `flex_id` - Enable using [flex_id](http://go/chromeos-flex-id) for enrollment.
110* `ghostscript` - Ghostscript and dependent packages are available for printing.
111* `google_virtual_keyboard` - The proprietary Google onscreen virtual keyboard
Daniel Erat0c2e3b82019-04-15 04:43:52112 (as opposed to the builtin open-source virtual keyboard).
Jared Bennettc73c68e2023-04-11 23:31:31113* `gpu_sandboxing` - Chrome's GPU process is [sandboxed].
114* `gsc` - Whether the platform has an onboard Google security chip.
115* `houdini` - Availability of 32-bit Houdini library for ARC.
116* `houdini64` - Availability of 64-bit Houdini library for ARC.
117* `hostap_hwsim` - Whether system has the hostap project's test dependencies
Brian Norris012fc902019-11-07 21:55:13118 (scripts, daemons) installed and configured appropriately.
Jared Bennettc73c68e2023-04-11 23:31:31119* `hps` - Whether the system has the hps daemon and tools, go/cros-hps.
120* `igt` - Boards that can run igt-gpu-tools tests
121* `iioservice` - Whether the device has CrOS IIO Service running.
122* `inference_accuracy_eval` - Whether the device has inference accuracy evaluation tools installed.
Kerker Yang28d73402023-06-21 06:58:50123* `intel_psr` - Whether Intel PSR (platform service record) is supported or not.
Jared Bennettc73c68e2023-04-11 23:31:31124* `ikev2` - The ability to run an IKEv2 VPN.
125* `io_uring` - Whether the platform (kernel) has the io_uring syscalls enabled.
126* `iwlwifi_rescan` - Ability to remove/rescan WiFi PCI device when the
Yen-lin Lai0e3065e2019-10-14 07:52:32127 hardware becomes non-responsive.
Jared Bennettc73c68e2023-04-11 23:31:31128* `lacros` - Whether the system supports running [lacros].
129* `lacros_stable` - Whether the system supports running [lacros] and is stable enough for CQ. [TODO: Remove this.](crbug.com/1412276)
130* `lacros_unstable` - Whether the system supports running [lacros] and is not stable enough for CQ. [TODO: Remove this.](crbug.com/1412276)
131* `landlock_enabled` - Whether the system supports the Landlock Linux Security Module.
Jared Bennettc73c68e2023-04-11 23:31:31132* `mbo` - WiFi MBO support.
133* `memfd_create` - memfd_create function implemented in the kernel.
134* `memd` - [Memory stats collection daemon].
135* `microcode` - Platforms that have CPU microcode.
136* `ml_service` - ML Service daemon.
137* `ml_benchmark_drivers` - [ML benchmarking suite](http://go/roadrollerda)
138* `mosys` - Ability to run mosys command.
139* `nacl` - Availability of the Native Client sandboxing technology.
140* `ndk_translation` - Availability of 32-bit NDK translation library for ARC.
141* `ndk_translation64` - Availability of 64-bit NDK translation library for
Youkichi Hosoi9c419b32020-05-28 01:45:31142 ARC.
Jared Bennettc73c68e2023-04-11 23:31:31143* `nnapi` - Has the nnapi (libneuralnetworks.so) installed. Run minimal VTS tests.
144* `nnapi_vendor_driver` - Run the full VTS / CTS test suite. Ignores VM's.
145* `no_android` - The inability to run Android apps. This is the opposite of
Daniel Erat63de30d2018-11-20 00:48:34146 the `android` feature; DUTs will have exactly one of these two features.
Jared Bennettc73c68e2023-04-11 23:31:31147* `no_arm` - The absence of [arm] 32 bit userspace.
148* `no_asan` - Build was not built with Address Sanitizer. Similar to `aslr`.
149* `no_ath10k_4_4` - Skip boards using the ath10k/ar10k driver on kernel 4.4, as they are missing certain features (b/138406224).
150* `no_borealis_host` - Boards which is not designed to host borealis.
151* `no_chrome_dcheck` - Chrome/Chromium was not built with dcheck enabld`.
152* `no_eth_loss_on_reboot` - Board does not lose ethernet on reboot. Context: b/178529170
153* `no_iioservice` - Build was not built with CrOS IIO Service.
Jared Bennettc73c68e2023-04-11 23:31:31154* `no_msan` - Build was not built with Memory Sanitizer.
155* `no_ondevice_handwriting` - Doesn't have on-device handwriting recognition support. Either ml_service is not enabled, or if ml_service doesn't support `ondevice_handwriting`.
156* `no_arc_userdebug` - Skip boards that ship ARC userdebug build.
157* `no_arc_x86` - Skip on x86 architecture.
158* `no_qemu` - For tests not for ChromeOS QEMU images.
159* `no_symlink_mount` - Symlink mounting is disabled via the
Daniel Erat97478882018-11-14 05:54:39160 `CONFIG_SECURITY_CHROMIUMOS_NO_SYMLINK_MOUNT` kernel option.
Jared Bennettc73c68e2023-04-11 23:31:31161* `no_tablet_form_factor` - The device's primary form factor is not tablet
162* `no_tpm2_simulator` - Built was not built with the simulator of Trusted Platform Module supporting TPMv2.
163* `no_tpm_dynamic` - Build was not built with dynamic TPM.
164* `no_ubsan` - Build was not built with Undefined Behavior Sanitizer.
165* `no_vulkan` - Build was not built with [Vulkan] enabled.
166* `no_arcvm_virtio_blk_data` - Build was not built with ARCVM virtio-blk /data enabled.
167* `no_gsc` - Build was not built with onboard Google security chip support.
168* `nvme` - Ability to run NVMe software utilities.
169* `oci` - The ability to use the `run_oci` program to execute code within
Daniel Erate4ea2992019-04-13 01:28:45170 [OCI] containers.
Jared Bennettc73c68e2023-04-11 23:31:31171* `ocr` - [Optical Character Recognition Service] daemon.
172* `ondevice_document_scanner` - On-device document scanner support in `ml_service` which installed document scanner library in rootfs.
Wei Lee6a2c38b2022-07-28 03:46:02173 This implies `ml_service`.
Jared Bennettc73c68e2023-04-11 23:31:31174* `ondevice_document_scanner_rootfs_or_dlc` - On-device document scanner support in `ml_service`.
Wei Leef9c36ef2021-08-05 03:43:38175 This implies `ml_service`.
Jared Bennettc73c68e2023-04-11 23:31:31176* `ondevice_grammar` - On-device grammar check support in `ml_service`.
177* `ondevice_handwriting` - On-device handwriting recognition support in `ml_service`.
178* `ondevice_speech` - On-device speech recognition support in `ml_service`.
179* `ondevice_text_suggestions` - On-device txt suggestions support in `ml_service`.
180* `pinweaver` - Pinweaver support, either by GSC or Intel CSME.
ChromeOS Developer442a42f2021-03-11 06:24:18181 This implies `ml_service`.
Jared Bennettc73c68e2023-04-11 23:31:31182* `play_store` - Boards where Google Play Store is supported.
183* `plugin_vm` - The ability to run Plugin VMs.
184* `proprietary_codecs` - Indicates if Chrome supports proprietary video
Madhulika2955f682020-05-18 18:42:45185 codecs (e.g. H.264). This is supported by Chrome official builds and Chromium
186 builds with the |propietary_codecs| build flag set.
Jared Bennettc73c68e2023-04-11 23:31:31187* `protected_content` - Platform has HW backed OEMCrypto implementation for Widevine
Jeffrey Kardatzke33277362021-02-23 22:48:48188 L1 HW DRM.
Jared Bennettc73c68e2023-04-11 23:31:31189* `qemu` - For tests exclusive to ChromeOS QEMU images.
190* `racc` - Whether [Runtime AVL Compliance Check] is available.
191* `reboot` - The ability to reboot reliably during a remote test.
192* `rrm_support` - Driver support for 802.11k RRM.
193* `screenshot` - The [screenshot command] can save screenshots.
194* `selinux` - An SELinux-enabled board. All Android boards are
Qijiang Fan7ced1b92018-09-07 04:08:16195 SELinux-enabled.
Jared Bennettc73c68e2023-04-11 23:31:31196* `selinux_current` - All SELinux-enabled boards except experimental boards.
Qijiang Fan066d2662019-01-10 09:25:12197 This implies `selinux`.
Jared Bennettc73c68e2023-04-11 23:31:31198* `selinux_experimental` - An experimental SELinux board. An experimental
Qijiang Fan066d2662019-01-10 09:25:12199 board has `SELINUX=permissive` in `/etc/selinux/config`, thus no policy
200 will be enforced. This implies `selinux`.
Jared Bennettc73c68e2023-04-11 23:31:31201* `shill-wifi` - WiFi technology is enabled for Shill.
202* `siernia` - Sirenia is present on a non-ManaTEE image.
203* `smartdim` - Use smart dim to defer the imminent screen dimming.
204* `smartctl` - Ability to run smartctl software utility.
205* `stack_sampled_metrics` - Ability to run the stack profiler and gather
Ian Barkley-Yeungf3cf1062022-10-21 21:08:26206stack-sampled metrics.
Jared Bennettc73c68e2023-04-11 23:31:31207* `storage_wearout_detect` - The ability to measure storage device health.
208* `tablet_form_factor` - The device's primary form factor is tablet
209* `tast_vm` - The test is running in a VM [managed by chromite](https://chromium.googlesource.com/chromiumos/chromite/+/HEAD/lib/cros_test.py#396).
210* `tflite_opencl` - Skips boards which have issues with the OpenCL TFLite
Jake Barnese77af2a2022-06-28 05:10:10211 delegate (b/233851820).
Jared Bennettc73c68e2023-04-11 23:31:31212* `thread_safe_libva_backend` - Boards where the LIBVA backend is threadsafe.
213* `tpm` - A [Trusted Platform Module] chip.
214* `tpm_clear_allowed` - The device's TPM can be cleared.
215* `tpm1` - Indicate a Trusted Platform Module supporting TPMv1.2 is available. Note that TPMv2 is not backward compatible.
216* `tpm2` - Indicate a Trusted Platform Module supporting TPMv2 is available.
217* `tpm2_simulator` - Indicate the simulator of Trusted Platform Module supporting TPMv2 is available.
218* `tpm_dynamic` - Indicate the dynamic TPM is available.
219* `transparent_hugepage` - [Transparent Hugepage] support in the Linux kernel.
220* `unibuild` - The ChromeOS build is a unified build.
221* `untrusted_vm` - The ability to run an untrusted VM.
222* `usbguard` - The ability to allow or block USB devices based on policy.
223* `usb_hid_wake` - The platform will register HID wake events to a usb device.
224* `use_fscrypt_v1` - The board is set to use v1 fscrypt policy for user vault.
225* `use_fscrypt_v2` - The board is set to use v2 fscrypt policy for user vault.
226* `uvc_compliant` - The board has a UVC driver that is V4L2 compliant.
227* `v4l2_codec` - Whether or not v4l2 video acceleration API is supported by this DUT.
228* `vaapi` - Whether or not VA-API is supported by this DUT.
229* `video_cards_ihd` - Boards that use the Intel Media Driver (also known as iHD) for VA-API.
230* `video_decoder_direct` - The platform uses the VideoDecoder (VD) by default.
231* `video_decoder_legacy` - The platform used the VideoDecodeAccelerator (VDA) by default.
232* `video_decoder_legacy_supported` - Is the VDA is supported on this platform.
233* `video_overlays` - The kernel [DRM/KMS] version atomic commits and the underlying hardware display controller support the NV12 DRM Plane format needed to promote videos to [hardware overlays].
234* `virtual_susupend_time_injection` - The platform supports KVM virtual suspend time injection.
235* `virtual_usb_printer` - Whether or not the device can run tests that
Kalvin Leed10f32d2020-06-30 20:45:22236 use [virtual USB printing][virtual-usb-printer-readme]. Note that
237 while the necessary kernel modules are available on kernel v4.4,
238 this feature excludes that version for known flakiness. See
Seewai Fu862f27a2021-04-13 22:07:37239 [this bug](https://b.corp.google.com/issues/172224081) for context.
Jared Bennettc73c68e2023-04-11 23:31:31240* `vm_host` - The ability to [run virtual machines].
241* `vpd` - The DUT has a VPD chip.
242* `vulkan` - Whether [Vulkan] is enabled.
243* `watchdog` - watchdog daemon
244* `wifi` - If this DUT has WiFi device.
245* `wpa3_sae` - The ability to use WPA3-SAE authentication for WiFi.
246* `wilco` - If this DUT is a [wilco] device. These features include
Trent Begin4d274762019-05-29 22:01:57247 the DTC (Diagnostic and Telemetry Controller) VM, a special EC interface,
248 and a dock firmware updater.
Jared Bennettc73c68e2023-04-11 23:31:31249* `wireguard` - The ability to run a WireGuard VPN.
250* `no_kernel_upstream` - Skip boards with continuously-rebased kernel.
Daniel Erat5b270ed2018-05-02 05:37:54251
Daniel Erate4ea2992019-04-13 01:28:45252[amd64]: https://en.wikipedia.org/wiki/X86-64
Hirokazu Hondaa5a06602020-01-30 04:44:17253[arm]: https://en.wikipedia.org/wiki/ARM_architecture
Daniel Erate4ea2992019-04-13 01:28:45254[run Android apps]: https://developer.android.com/topic/arc/
255[Camera HAL3]: https://source.android.com/devices/camera/camera3
Ren-Pei Zengbaf46f22019-11-01 12:13:53256[Camera HAL1]: https://source.android.com/devices/camera#architecture-legacy
257[Linux Video Capture]: https://chromium.googlesource.com/chromium/src/+/HEAD/media/capture/video/linux/
Daniel Erate4ea2992019-04-13 01:28:45258[AddressSanitizer]: https://github.com/google/sanitizers/wiki/AddressSanitizer
Greg Edelstond71f9872021-01-05 17:38:50259[Autotest capability]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/main/chromeos-base/autotest-capability-default/
260[chromeos-chrome]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/main/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild
David Staessens8302f562019-10-04 03:53:42261[media::VideoDecoder]: https://cs.chromium.org/chromium/src/media/base/video_decoder.h
Daniel Erate4ea2992019-04-13 01:28:45262[Diagnostic utilities]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/diagnostics/README.md
263[Downloadable Content]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/dlcservice
Miguel Casas97c357f2020-02-28 21:31:37264[DRM/KMS]: https://www.kernel.org/doc/Documentation/gpu/drm-kms.rst
265[hardware overlays]: https://en.wikipedia.org/wiki/Hardware_overlay
Puthikorn Voravootivat6035d9a2020-05-21 22:50:59266[Intel Dynamic Platform and Thermal Framework]: https://01.org/intel%C2%AE-dynamic-platform-and-thermal-framework-dptf-chromium-os
Laurent Chavey1c1362f2021-02-17 02:56:43267[lacros]: https://chromium.googlesource.com/chromium/src.git/+/HEAD/docs/lacros.md
Daniel Erate4ea2992019-04-13 01:28:45268[sandboxed]: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_sandboxing.md
Greg Edelstond71f9872021-01-05 17:38:50269[Memory stats collection daemon]: https://chromium.googlesource.com/chromiumos/platform2/+/main/metrics/memd/
Daniel Erate4ea2992019-04-13 01:28:45270[OCI]: https://www.opencontainers.org/
Efi Mavroudi186f9b32020-08-13 00:19:13271[Optical Character Recognition Service]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ocr/README.md
Greg Edelstond71f9872021-01-05 17:38:50272[Runtime AVL Compliance Check]: https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/main/runtime_probe/README.md
273[screenshot command]: https://chromium.googlesource.com/chromiumos/platform2/+/main/screen-capture-utils/
Daniel Erate4ea2992019-04-13 01:28:45274[Trusted Platform Module]: https://en.wikipedia.org/wiki/Trusted_Platform_Module
275[Transparent Hugepage]: https://www.kernel.org/doc/Documentation/vm/transhuge.txt
Greg Edelstond71f9872021-01-05 17:38:50276[run virtual machines]: https://chromium.googlesource.com/chromiumos/docs/+/main/containers_and_vms.md
Daniel Erate4ea2992019-04-13 01:28:45277[Vulkan]: https://www.khronos.org/vulkan/
Greg Edelstond71f9872021-01-05 17:38:50278[virtual-usb-printer-readme]: https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/third_party/virtual-usb-printer/README.md
Trent Begin4d274762019-05-29 22:01:57279[wilco]: https://sites.google.com/corp/google.com/wilco/home
Daniel Erate4ea2992019-04-13 01:28:45280
Hidehiko Abe8a496142020-02-06 04:23:28281### New features
Daniel Erat5b270ed2018-05-02 05:37:54282
Daniel Erat673ebab2019-02-13 05:32:46283Features should be descriptive and precise. Consider a hypothetical test that
284exercises authentication using a biometrics daemon that isn't present in system
285images built to run on virtual machines. Instead of adding a `real_hardware` or
286`non_vm` feature that is overly broad and will likely be interpreted as carrying
287additional meaning beyond the original intent, add a `biometrics_daemon` feature
288that precisely communicates the test's actual requirement.
289
Hidehiko Abe25cadea2020-09-03 05:31:32290Features are composed from USE flags and board names, which are statically
Shuhei Takahashi974f7912021-11-02 01:48:21291defined when the system image is built. [software_defs.go] lists boolean
Hidehiko Abe25cadea2020-09-03 05:31:32292expressions that are used to generate features; for example, an imaginary
293feature named `hd_audio` with the expression
Daniel Erat673ebab2019-02-13 05:32:46294
295```go
296cras && (audio_chipset_a || audio_chipset_b) && !broken_headphone_jack
297```
298
299will be reported as available on systems where the `cras` USE flag is set,
300either `audio_chipset_a` or `audio_chipset_b` is set, and
Shuhei Takahashidf4179c2019-11-08 07:04:25301`broken_headphone_jack` is explicitly *not* set.
302
Hidehiko Abe25cadea2020-09-03 05:31:32303A feature can depend on board names, too. Another imaginary feature
304named `vm_graphics` with the expression
305
306```go
307"board:betty-pi-arc"
308```
309
310will be reported as available on `betty-pi-arc` board only.
311
Shuhei Takahashidf4179c2019-11-08 07:04:25312Before a new `USE` flag can be used in an expression, it must be added to `IUSE`
Brian Norris9aba3bb2020-01-22 01:18:18313in the [tast-use-flags] package. Local changes to the `tast-use-flags` ebuild
Shuhei Takahashidf4179c2019-11-08 07:04:25314have to be pushed to the DUT manually to take effect:
315
316```
Nicholas Hollingum18e622f2020-08-03 00:49:40317cros_workon-$BOARD start chromeos-base/tast-use-flags
Shuhei Takahashidf4179c2019-11-08 07:04:25318emerge-$BOARD chromeos-base/tast-use-flags
319cros deploy --root=/usr/local $HOST chromeos-base/tast-use-flags
320```
321
322When submitting changes to add new `USE` flags to the [tast-use-flags] package,
323please use [Cq-Depend] in your commit messages to ensure that changes land in
324the correct order.
Daniel Erat673ebab2019-02-13 05:32:46325
326If you're having trouble finding a way to specify your test's dependencies,
327please ask for help on the [tast-users mailing list].
328
Seewai Fu85c8e4d2023-05-31 23:46:38329[software_defs.go]: https://chromium.googlesource.com/chromiumos/platform/tast/+/main/src/go.chromium.org/tast/core/internal/crosbundle/software_defs.go
Greg Edelstond71f9872021-01-05 17:38:50330[tast-use-flags]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/main/chromeos-base/tast-use-flags/
331[Cq-Depend]: https://chromium.googlesource.com/chromiumos/docs/+/main/contributing.md#cq-depend
Mark Hasemeyerb5c9e672022-08-25 22:15:54332[tast-users mailing list]: https://groups.google.com/a/chromium.org/g/tast-users
Daniel Erat673ebab2019-02-13 05:32:46333
Hidehiko Abe8a496142020-02-06 04:23:28334#### Example changes
Daniel Erata3413832019-01-31 23:43:32335
Daniel Erat920fc652018-12-19 16:11:22336See the following changes for an example of adding a new `containers` software
337feature based on the `containers` USE flag and making a test depend on it:
338
339* `chromiumos-overlay` repository: <https://crrev.com/c/1382877>
340* `tast` repository: <https://crrev.com/c/1382621>
341* `tast-tests` repository: <https://crrev.com/c/1382878>
342
Daniel Erate4ea2992019-04-13 01:28:45343(Note that the `containers` feature has since been renamed to `oci`.)
344
Hidehiko Abe8a496142020-02-06 04:23:28345### autotest-capability
Daniel Erata3413832019-01-31 23:43:32346
Daniel Erat673ebab2019-02-13 05:32:46347There are also `autotest-capability:`-prefixed features, which are added by the
348[autocaps package] as specified by YAML files in
Daniel Eratdf04ea02018-09-19 21:31:24349`/usr/local/etc/autotest-capability`. This exists in order to support porting
350existing Autotest-based video tests to Tast. Do not depend on capabilities from
351outside of video tests.
352
Seewai Fud678a7c2023-04-21 17:55:02353[autocaps package]: https://godoc.org/chromium.googlesource.com/chromiumos/platform/tast.git/src/go.chromium.org/tast/core/autocaps/
Hidehiko Abe8a496142020-02-06 04:23:28354
355
356## Hardware dependencies
357
358Tast provides a way to run/skip tests based on the device characteristics.
Tatsuhisa Yamaguchid857bb12021-03-29 04:35:44359
360Note that "device characteristics" here only consists of information that can
361be determined solely based on the DUT, without depending on the other
362surrounding environment, such as some config files on DUT.
363
Hidehiko Abe93f747d2020-03-30 06:54:02364The examples of the device characteristics are as follows:
365
366* Whether the device has a touch screen.
367* Whether the device has fingerprint.
368* Whether the device has an internal display.
369
Hidehiko Abe8a496142020-02-06 04:23:28370For example, in order to run tests on DUT where touchscreen is available,
371the dependency can be declared in the `HardwareDeps` field of `testing.Test`.
372
Hidehiko Abe8a496142020-02-06 04:23:28373```go
374func init() {
375 testing.AddTest(&testing.Test{
376 ...
377 HardwareDeps: hwdep.D(hwdep.Touchscreen()),
378 ...
379 })
380}
381```
382
383You can provide multiple `Condition`s to `hwdep.D`. In the case,
384the test will run only on DUTs where all the conditions are satisfied.
385
386You can find the full list of supported conditions in the [hwdep package].
387
Tatsuhisa Yamaguchi089ea762022-03-17 09:37:02388Note that there are special kinds of hardware dependencies, named `Model` and
389`SkipOnModel`.
Hidehiko Abe93f747d2020-03-30 06:54:02390With these dependencies, tests will be controlled based on the device type names,
391rather than the device characteristics.
392In general, it is recommended *not* to use these conditions. If you feel you need
393these conditions, it is recommended to reconsider whether there is an alternative
394(and more appropriate) condition.
395Examples of their expected use cases are:
396
397* There are known issues in a driver of a specific device, which cannot be
398 fixed immediately. The test is stable on other models, and we would like
399 to promoted it to critical.
400* There is a test running as informational. Flakiness failures are found
401 only on a few models, but the test is stable on other models.
Tatsuhisa Yamaguchi089ea762022-03-17 09:37:02402 With depending models, we can promote the test to critical on
Hidehiko Abe93f747d2020-03-30 06:54:02403 most of models, except ones where the test results flakiness.
404 In this case, it is expected that a dedicated engineer is assigned to
405 investigate the cause and its fix.
406
Seewai Fud9482212023-04-25 01:50:57407[hwdep package]: https://chromium.googlesource.com/chromiumos/platform/tast/+/main/src/go.chromium.org/tast/core/testing/hwdep/
Hidehiko Abe8a496142020-02-06 04:23:28408
409### Adding new hardware conditions
410
Jesse McGuire84c09702022-05-06 23:17:29411In order to guarantee forward compatibility in ChromeOS infra,
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41412each `Condition` should be based on the
413`chromiumos.config.api.HardwareFeatures` protobuf schema.
Hidehiko Abe8a496142020-02-06 04:23:28414
415For example, the `hwdep.Touchscreen()` can check
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41416whether `Screen.TouchSupport` is set to `HardwareFeatures_PRESENT`.
Hidehiko Abe8a496142020-02-06 04:23:28417
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41418Note that currently a `chromiumos.config.api.HardwareFeatures` instance is
419generated internally by Tast at runtime, so only limited fields are filled.
Seewai Fu13e36d32022-11-19 03:17:34420In the future, ChromeOS Infra test scheduler will be responsible for checking
421hardware dependencies before running Tast tests.
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41422
423Here is an example end-to-end workflow:
424Let’s assume that a developer wants to add a new Tast test which requires a new
425hardware feature to be used in the test hardware constraints (e.g. “wifi chip
426vendor name is X”).
427
Seewai Fu13e36d32022-11-19 03:17:344281. The developer makes a change for that hardware feature.
429 * The developer files a CL for a change to the schema
430 [(config/api/topology.proto)][1] to add a new field for the feature.
431 * A domain expert approves the change in the .proto file
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41432 [(config/api/topology.proto)][1]. [(Example CL)][2]
Jeremy Bettis21ac3f52023-01-26 18:15:494331. To test locally, run these commands to regenerate the go proto bindings.
434 ```
435 ~/chromiumos/src/config/generate.sh
436 cros workon --host start cros-config-api
437 sudo emerge cros-config-api
438 ```
4391. The developer waits until the CL in #1 is landed, then implements
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41440 some functions in the Tast framework supporting the new feature(s) using the
441 new message type.
442 * The Tast team reviews and approves such a change to Tast.
443 [Here is an example CL][3] which puts some data into the protobuf in Tast.
Jeremy Bettis21ac3f52023-01-26 18:15:494441. The developer writes test(s) with hwdeps in its test metadata using the
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41445 above function in Tast.
446
Laurent Chavey1c1362f2021-02-17 02:56:43447[1]: https://source.chromium.org/chromium/infra/infra/+/HEAD:go/src/go.chromium.org/chromiumos/config/proto/chromiumos/config/api/topology.proto
Tatsuhisa Yamaguchi1c905fa2020-09-15 06:23:41448[2]: https://chromium-review.googlesource.com/c/chromiumos/config/+/2249691/4/proto/chromiumos/config/api/topology.proto
Hidehiko Abe25cadea2020-09-03 05:31:32449[3]: https://chromium-review.googlesource.com/c/chromiumos/platform/tast/+/2335615