= Testing

//MC: No overlap with any content currently in the developer guide, but probably useful content to clean up and include.

== QA with oe-selftest

This layer relies on the test framework oe-selftest for quality assurance. Currently, you will need to run this in a build directory with `MACHINE` set to `qemux86-64`. Follow the steps below to run the tests:

1. Append the line below to `conf/local.conf` to disable the warning about supported operating systems:
+
```
SANITY_TESTED_DISTROS = ""
```

2. If your image does not already include an ssh daemon such as dropbear or openssh, add this line to `conf/local.conf` as well:
+
```
IMAGE_INSTALL_append = " dropbear "
```

3. Some tests require that `SOTA_PACKED_CREDENTIALS` is set in your `conf/local.conf`. See the xref:dev@ota-build::sota-variables.adoc[SOTA-related variables in local.conf].

4. To be able to build an image for the GRUB tests, you will need to install the `ovmf` package as described in the xref:dev@ota-build::build.adoc#_dependencies[dependencies section].

5. Run oe-selftest:
+
```
oe-selftest -r updater_native updater_qemux86_64 updater_minnowboard updater_raspberrypi updater_qemux86_64_ptest
```

For more information about oe-selftest, including details about how to run individual test modules or classes, please refer to the https://wiki.yoctoproject.org/wiki/Oe-selftest[Yocto Project wiki].

== Aktualizr test suite with ptest

The meta-updater layer includes support for running parts of the aktualizr test suite on deployed devices through link:https://wiki.yoctoproject.org/wiki/Ptest[Yocto's ptest functionality]. Since it adds significant build time cost, it is currently disabled by default. To enable it, add the following to your `conf/local.conf`:

```
PTEST_ENABLED_pn-aktualizr = "1"
IMAGE_INSTALL_append += " aktualizr-ptest ptest-runner "
```

Be aware that it will add several hundreds of MB to the generated file system.

The aktualizr tests will now be part of the deployed ptest suite, which can be run by calling `ptest-runner`. Alternatively, the required files and run script can be found in `/usr/lib/aktualizr/ptest`.
