mirror of
https://github.com/espressif/openthread.git
synced 2026-09-12 04:00:10 +00:00
This commit introduces a new script `update-header-guards.py` which checks for the presence of header guards in `.h` and `.hpp` files and automatically updates them, standardizing the header guard name format across the codebase. The new format for header guards is derived from the full path of the file. For example, `src/core/common/notifier.hpp` will use `OT_CORE_COMMON_NOTIFIER_HPP_`. The guard name includes additional prefixes such as `OT_` or `OPENTHREAD_` to ensure uniqueness. This new naming format handles cases where the same filename may be used in different folders, such as the two `heap.hpp` files located in `src/core/common` and `src/core/utils`. It also ensures that public and platform OpenThread headers under `include/openthread` have uniquely distinct header guard names to avoid conflicts when these headers are included in other projects. The new script helped identify issues with existing header files that lacked header guards (e.g., `posix/system.hpp`) or had improper guards (e.g., `openthread/link_metrics.h`). This commit also introduces a new check script `check-header-guards` to validate that all header guards are correctly formatted. This check is added to the GitHub CI actions to ensure consistency moving forward. All existing header files have been updated (using the new script) to apply the new guard name format.
Nexus test framework
Nexus is a test framework for OpenThread testing.
Design Goals
- Faster and more scalable network simulation: Enable faster and more efficient simulations of OpenThread networks involving a large number of nodes over extended durations.
- Enhanced control: Achieve greater control and scalability over simulated tests.
Features
- Includes the Nexus platform implementation that emulates platform behavior, allowing multiple nodes running the OpenThread core stack to be simulated and interact with each other within the same process.
- Unlike the simulation platform (under
examples/platforms/simulation), where nodes run in separate processes and interact via POSIX sockets, Nexus nodes are simulated within a single process. - Nexus tests can interact directly with the C++ or C OT core APIs, providing more control than the simulation platform's CLI-based interactions.
- The flow of time in Nexus tests is directly controlled by the test itself, allowing for quick time interval advancement.
How to build and run tests
To build Nexus test cases, the build.sh script can be used:
mkdir nexus_test
top_builddir=nexus_test ./tests/nexus/build.sh
Afterwards, each test can be run directly:
./nexus_test/tests/nexus/nexus_form_join