プロジェクトのテスト
Google がリリースした OpenThread は、さまざまなツールでテストされています。
継続的インテグレーション
OpenThread は、継続的インテグレーション(CI)に GitHub Actions を、コード カバレッジに Codecov を使用します。
CI は、GNU Arm Embedded ツールチェーンを使用するすべてのサンプル プラットフォームと、GCC、Clang、Android を使用してシミュレートされたサンプルを対象にビルド チェックを実行します。また、x86、プラットフォーム アーキテクチャ、スレッド デバイス構成に対してビルドとテストを行います。特定のテストとチェックの詳細については、ワークフローをご覧ください。
また、CI では次のことを行います。
clang-format
を使用したコードスタイルのチェック- 単体テスト
- CLI、
wpantund
(toranj
を使用)、Pyspinel の機能テスト
OSS ファズ
OpenThread は、OSS-Fuzz でファズテストされています。 このテスト技術では、メモリリークやクラッシュなどの問題を検出するために、無効な入力とランダムな入力が高頻度かつ大量にソフトウェアに送信されます。
現在のファジング ビルドのターゲットについては、OpenThread リポジトリをご覧ください。
プロダクトのテスト
以下のツールを使用して、独自の OpenThread プロダクトをテストします。
サメ
Wireshark は、物理ネットワーク インターフェースと仮想ネットワーク インターフェースで実行されるトラフィック用のオープンソースのネットワーク プロトコル アナライザです。Thread プロトコルは、Wireshark 2.4.0 以降でサポートされています。このツールのドキュメントとダウンロードについては、wireshark.org をご覧ください。
Wireshark 内で Thread をサポートする方法の詳細については、Pyspinel によるパケット スニッフィングをご覧ください。
ピスピネル
Pyspinel は、Spinel プロトコル用の Python CLI であり、OpenThread NCP または RCP の構成と管理に使用されます。この CLI は主に CI テストを対象としていますが、OpenThread コプロセッサ インスタンスのテストとテストに手動で使用できます。
Pyspinel は次の目的で使用されます。
- シミュレートされたコプロセッサ テストを継続的インテグレーションに追加できます。
- ハードウェア上でコプロセッサ ファームウェアを実行している testbed のテストを自動化します。
- OpenThread のコプロセッサ ビルドをデバッグする。
- OpenThread コプロセッサをパケット スニファーに変換します。
詳細については、Pyspinel リポジトリの README
をご覧ください。