Testing

Project testing

OpenThread released by Google is tested by a number of tools.

Continuous integration

OpenThread uses GitHub Actions for continuous integration (CI), and Codecov for code coverage.

CI performs build checks for all example platforms using the GNU Arm Embedded Toolchain and for the simulated example using GCC, Clang, and Android. It also builds and tests against x86, platform architecture, and Thread device configurations. For more information on specific tests and checks, see Workflows.

In addition, CI performs:

  1. Code style checks using clang-format
  2. Unit tests
  3. Functional tests against CLI, wpantund (with toranj), and Pyspinel

OSS-Fuzz

OpenThread is fuzz tested with OSS-Fuzz. In this testing technique, invalid and random inputs are submitted at a high frequency and volume to software in order to find issues such as memory leaks or crashes.

See the OpenThread repository for the current fuzzing build targets.

Product testing

Use the following tools to test your own OpenThread product.

Wireshark

Wireshark is an open-source network protocol analyzer for traffic running on physical and virtual network interfaces. The Thread protocol is supported in Wireshark 2.4.0 and later. Documentation and downloads for this tool can be found at wireshark.org.

For more information on how Thread is supported in Wireshark, see Packet sniffing with Pyspinel.

Pyspinel

Pyspinel is a Python CLI for the Spinel protocol, used to configure and manage OpenThread NCPs or RCPs. This CLI is primarily targeted to CI tests, but can be used manually to experiment with and test OpenThread Co-Processor instances.

Pyspinel is used to:

  • Add simulated Co-Processor testing to continuous integration.
  • Automate testing of testbeds running Co-Processor firmware on hardware.
  • Debug Co-Processor builds of OpenThread.
  • Convert an OpenThread Co-Processor into a packet sniffer.

For more information, see the README in the Pyspinel repository.