Fuegoにテストを追加する(スクリプト編)
前回はホストPCにFuegoをインストールし,サンプルを実行しました。 tshell.hatenablog.com
今回はシェルスクリプトとして記述したテストを追加する方法です。
環境
前回と同様以下の環境を使用しました。
- ホストPC : ubuntu 18.04 LTS
- ターゲット : Raspberry Pi 3(Raspbian Buster Lite)
- fuego (Commit eeb3c08c...)
作業手順
以下の作業を行ってテストを追加します。
今回はmytestという名前のテストを作成します。
ディレクトリ作成
Fuegoのインストールディレクトリにテストを作成します。Fuegoは/home/ユーザー名/fuegoにインストールされているとします。
ホストPCのターミナルで以下のコマンドを実行します。
cd /home/ユーザー名/fuego/fuego-core/tests mkdir Functional.mytest cd Functional.mytest
テストスクリプトの作成
作成したFunctional.mytest
ディレクトリの中にmytest-target.sh
を以下の内容で作成します。
与えられた引数をそのまま表示するスクリプトです。
#!/bin/bash echo $1
spec.jsonの作成
以下の内容でテストスペックを設定するファイルspec.json
を作成します。このファイルは必ずspec.jsonという名称で作成する必要があります。
{ "testName": "Functional.mytest", "specs":{ "fail":{ "ARG":"FAIL" }, "success":{ "ARG":"SUCCESS" }, "default":{ "ARG":"SUCCESS" } } }
ここで設定したARGはあとで述べるfuego_test.sh
の中でFUNCTIONAL_MYTEST_ARGとして使用できます。spec.jsonの中でARGとだけ記述したものに自動的にテスト名が付加されます。
fuego_test.shの作成
以下の内容でfuego_test.sh
を作成します。このファイルもfuego_test.shという名前で作成する必要があります。
function test_deploy { put $TEST_HOME/mytest-target.sh $BOARD_TESTDIR/fuego.$TESTDIR/ } function test_run { report "cd $BOARD_TESTDIR/fuego.$TESTDIR; \ ./mytest-target.sh $FUNCTIONAL_MYTEST_ARG" } function test_processing { log_compare "$TESTDIR" "1" "SUCCESS" "p" }
function test_deploy
ではテスト実行前にターゲットに対して何を転送するか記述しています。
function test_run
ではテストを実行する際に何をするか記述しています。
Fuegoのreportコマンドは引数で指定されたコマンドを実行して結果をファイルに保存するコマンドです。
test_runの中で,spec.jsonで設定したARGを$FUNCTIONAL_MYTEST_ARGとして使っています。
function test_processing
はテスト結果を判定する設定です。log_compareコマンドで結果を判定します。
Fuego wiki - function log_compare
各引数の意味は以下のようになっています。
$1 = reflog_prefix = prefix of reference parsed log filename
$2 = match_count = number of matching results
$3 = results_expression
$4 = results_category (either 'p', 'n', or something else)
log_compare "$TESTDIR" "1" "SUCCESS" "p"
と記述した場合は,$TESTDIRからログを読み取ってSUCCESSが含まれれば成功とする,という意味になります。
テストの登録
前回のサンプルと同様にFuegoコンテナのコンソールで以下のコマンドを実行して,作成したテストを登録します。
ftc add-jobs -b myboard -t Functional.mytest
上記のコマンドで登録するとspec.jsonのdefaultに記述した内容が有効になります。別のspecを指定したい場合は以下のようにコマンドを実行します。
ftc add-jobs -b mytest -t Functional.mytest -s fail
以上のようにしてシェルスクリプトで作成したテストをFuegoで実行することができます。