テストを実行するには、プロジェクト内に artefacts.yaml ファイルが必要です。
設定ガイド
- Artefacts YAML 設定 - Artefacts でプロジェクトを設定する方法。
これは、このセクションの複数ページの印刷可能なビューです。 印刷するには、ここをクリックしてください.
テストを実行するには、プロジェクトのルートに artefacts.yaml ファイルを設定する必要があります。このファイルでの設定により、artefacts は以下のことが可能になります:
run --in-container または run-remoteを使用する場合)以下はnav2サンプルリポジトリから取得した artefacts.yaml設定ファイルの例です。この設定では、それぞれbasic と nav2 という名前の2つのジョブがあります。
各セクションについては、このページで詳しく説明します。
version: 0.1.0
project: artefacts/navigation2-ignition-example
jobs:
basic: # Only checks that things are loading
type: test
package:
docker:
build:
dockerfile: ./Dockerfile
runtime:
simulator: gazebo:fortress
framework: ros2:humble
timeout: 5 #minutes
scenarios:
defaults: # Global to all scenarios, and overriden in specific scenarios.
output_dirs: ["output"]
settings:
- name: bringup
pytest_file: "src/sam_bot_nav2_gz/test/test_bringup.py" # when using pytest or ros2 launch_pytest
nav2:
type: test
package:
docker:
build:
dockerfile: ./Dockerfile
runtime:
simulator: gazebo:fortress
framework: ros2:humble
timeout: 5 #minutes
scenarios:
defaults: # Global to all scenarios, and overriden in specific scenarios.
output_dirs: ["output"]
metrics:
- /odometry_error
- /distance_from_start_gt
- /distance_from_start_est
params:
launch/world: ["bookstore.sdf", "empty.sdf"]
settings:
- name: reach_goal
pytest_file: "src/sam_bot_nav2_gz/test/test_reach_goal.py" # when using pytest or ros2 launch_pytest
- name: follow_waypoints
launch_test_file: "src/sam_bot_nav2_gz/test/test_follow_waypoints.launch.py" # when using ros2 launch_test
簡単に要約すると:
最初のジョブ basic:
Dockerfile という名前の Dockerfile を使用してビルドされますoutput ディレクトリ内のすべてのものを Artefacts ダッシュボードにアップロードしますtest_bringup.launch.py 起動ファイルを使用して1つのテスト(「シナリオ」)を実行します2番目のジョブ nav2:
Dockerfile という名前の Dockerfile を使用してビルドされますoutput ディレクトリ内のすべてのものを Artefacts ダッシュボードにアップロードしますmetrics を Artefacts ダッシュボードに表示しますlaunch_arguments として使用されますreach_goal は test_reach_goal 起動ファイルを使用して2回 ( paramsにリストされている各ワールドに1回ずつ)実行され, follow_waypoints は test_follow_waypoints 起動ファイルを使用して2回(再び各ワールドに1回ずつ)実行されますversion オプション artefacts yaml フォーマット仕様のバージョンproject 関連プロジェクトの名前。 <organization>/<project> の形式である必要がありますjobs ジョブ名から Job 定義へのマッピング、 Jobを参照jobs:
<job_name>:
type: test
package:
...
runtime:
...
timeout: 5 #minutes
scenarios:
...
各ジョブには以下のプロパティがあります:
type デフォルトは testpackage オプション コンテナ内で実行する場合 (run --in-container または run-remote)のジョブのビルド方法を設定する際に使用します。 Packageを参照runtime ランタイムプロパティ(フレームワークとシミュレーター)を含みます。 Runtimeを参照timeout オプション ジョブが timed outとマークされるまでの時間scenarios 1つのジョブは複数のシナリオを含むことができ、通常は特定の環境にリンクされたテストスイートです。 Scenario definitionを参照Artefacts Cloud Simulation で実行する場合に使用されます
custom 任意のプロジェクトのデフォルトビルドフローをカスタマイズするために使用できます。詳細は Packaging for Cloud Simulation を参照してください
docker テスト環境の構築時に artefacts が使用する Dockerfile を提供するために使用できます。詳細は Packaging with Docker を参照してください
テスト環境の準備とフックに使用されます
framework ソフトウェアフレームワーク。サポートされる値: ros2:humble, ros2:galactic, ros2:jazzy, null (実験的)
simulator シミュレーションエンジン。サポートされる値: turtlesim, gazebo:fortress, gazebo:harmonic
多くの場合、artefacts CLI はローカルで実行する際に上記にリストされていないフレームワーク/シミュレーターとも互換性があります。ただし、artefacts クラウドシミュレーションで実行する場合は、 package ブロックと、 カスタムコマンド, または dockerfileのいずれかを提供する必要があります。
ページ上部の例を参照すると:
scenarios:
defaults: # Global to all scenarios, and overriden in specific scenarios.
output_dirs: ["output"]
metrics:
- /odometry_error
- /distance_from_start_gt
- /distance_from_start_est
params:
launch/world: ["bookstore.sdf", "empty.sdf"]
settings:
- name: reach_goal
pytest_file: "src/sam_bot_nav2_gz/test/test_reach_goal.py"
- name: follow_waypoints
launch_test_file: "src/sam_bot_nav2_gz/test/test_follow_waypoints.launch.py"
defaults すべてのシナリオに共通するデフォルト設定を含み、シナリオで settingsが上書きされない限り適用されます。例では output_dirs, metrics, および params 設定が両方のシナリオ reach_goal と follow_waypoints で共有されます
settings scenario のリストを含み、 defaults からの設定が上書きされます。利用可能な設定については下記の Scenario を参照してください
name シナリオの名前
pytest_file / launch_test_file / run のいずれか
pytest_file (pytest または ROS2 launch_pytest テストフレームワークを使用する場合): テストファイルへのパス。launch_test_file (ROS2 launch_test テストフレームワークを使用する場合): テストファイルへのパス (通常は xxx.launch.py)run テストを開始するためのコマンド文字列 (subprocess.run(command, shell=True) で実行されます)。通常はパワーユーザー向けです。run を使用する場合、可能な限りテスト結果を output_dirs に保存された tests_junit.xml という名前の JUnit XML ファイルに出力してください。そうしないと、ダッシュボードが最終的なテスト結果のステータス (pass / fail / error) を正しく表示できません。
output_dirs オプション Artefacts クライアントがダッシュボードにアップロードするアーティファクトを探すパスのリスト。サポートされるタイプには .html ファイル ( plotly で作成でき、インタラクティブな図として表示されます)やビデオ(クロスプラットフォーム互換性のために h264/mp4 を推奨します)が含まれます。
launch_arguments オプション ROS のみ。起動ファイルに渡す引数の name: value ペアの辞書。通常、ヘッドレスで実行するかどうか、rosbag を記録するかどうかなど、実行動作を設定するために使用されます。
params シナリオに設定するパラメータのリスト。各パラメータに対して値のリストまたは単一の値を指定できます。パラメータの組み合わせごとにシナリオのバリエーションが自動的に実行されます(グリッド戦略)。すべてのテスト結果は同じダッシュボードエントリにアップロードされます。
ROS2 フレームワークの場合、パラメータ名は node_name/parameter_name 単一のフォワードスラッシュで区切られた)の規則に従う必要があり、環境変数ARTEFACTS_SCENARIO_PARAMS_FILEを通じて利用可能であるとともに、artefacts ツールキットからアクセスできます。これらはノードの動作を制御するために使用できます。ドット記法を使用したネストされたパラメータがサポートされています (例: node_name/parameter_name.subparameter_name).
(実験的に) ’null’ フレームワークの場合、パラメータ名は環境変数として設定されます(パラメータ名が文字、数字、アンダースコアのみであることを確認してください)。
また、 params セクションで ros 起動引数をリストすることもできます。その場合、 <node_name> を launch に置き換え、artefactsツールキットのget_artefacts_param ヘルパー関数を介してアクセスします。
metrics オプション テストメトリクスを指定します。json ファイルを受け入れます:キーと値のペアはメトリック名/メトリック値として使用されます。ROS プロジェクトは代わりにトピックのリストを受け入れることもでき、実行中のトピックの最新の値が記録値になります。