blob: f067c76bdeb90089ff32dfbeb4e95fa5e3af393d [file] [log] [blame] [view]
# Testing
## Quick Start
To build Zircon and run unit tests, run one of the following commands:
```sh
# Build and run x64.
fx set bringup.x64 --with-base //bundles/buildbot/bringup
fx build
fx qemu
# Build and run arm64.
fx set bringup.arm64 --with-base //bundles/buildbot/bringup
fx build
fx qemu
```
Once the scripts finish running, you should see the Zircon shell. To run
userspace tests, use the Zircon shell to run:
```sh
runtests --all
```
You can use `runtests --all -d` to see the list of tests available in the
system. You can also use `runtests -n <TEST_NAME>` to run one specific test.
To run in-kernel tests, use the Zircon shell to run:
```sh
k ut all
```
Fuchsia's [Get Started](/docs/get-started/README.md) page has more details about how to
use the Zircon shell and how to automatically build all supported architectures.
## Userspace Tests
The test harness, runtests, picks up and runs all of the executables from the
`/boot/test` and `/system/test` directories. If you provide a command-line
argument, such as `runtests -m widget_test`, runtests will only run the
single test requested -- in this case, `widget_test`.
## Kernel-mode Tests
The kernel contains unit tests and diagnostics, which can be run using the `k`
command. The output of the `k` command will only be shown on the
console. Depending on your configuration, this might be the serial console, or
the `debuglog` virtual terminal.
### Unit tests
Many parts of the kernel have unit tests, which report success/failure
automatically. These unit tests are built using the primitives provided by [the
kernel unit-test library](https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/kernel/lib/unittest/).
You can find these statically by searching for `UNITTEST_START_TESTCASE`.
These tests can be run from the shell with `k ut`. `k ut all` will run all tests
or you can use `k ut $TEST_NAME` to run a specific test.
### Diagnostics
Many parts of the kernel provide diagnostics, whose output requires manual
inspection. Some of these diagnostics are used to verify correctness (e.g.
[`timer_diag`](https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/kernel/tests/timer_tests.cc;l=198;drc=2031b0ccd0bb978f1c4056a7764f6810e527e156)),
while others simply stress test a part of the system (e.g.
[`timer_stress`](https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/kernel/tests/timer_tests.cc;l=198;drc=2031b0ccd0bb978f1c4056a7764f6810e527e156)).
To run a diagnostic, simply pass its name to the `k` command. For example, to
run the kernel's [builtin
benchmarks](https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/kernel/tests/benchmarks.cc),
run `k bench`. To find the full set of kernel diagnostics statically, search for
`STATIC_COMMAND`. To enumerate them dynamically, run `k help`.
Diagnostic tests are intended to be run via serial console, or with physical
access to the system. Some diagnostics may be destructive, and leave the system
in a broken state.