このページでは、ACTS テストを構成する方法について説明します。
構成のソース
Android Comms テストスイート(ACTS)では、主に次の 3 つの構成ソースがあります。
- コマンドライン インターフェース(CLI)
- ACTS 構成ファイル
- 環境変数
これらのソースの値は、ACTS テストの実行に使用される単一の構成に統合されています。複数の場所で値が指定されている場合、値は上記の順序(CLI が優先されます)に基づいて上書きされます。
環境変数に関する注意事項
ACTS テストで環境変数を使用する際は注意が必要です。これらの値はユーザーにはほとんど表示されないため、デベロッパーのワークステーション外で使用することはおすすめしません。環境の汚染を防ぐため、ACTS 自動テスト中は環境変数が無効になります。
必要な構成変数
ACTS テストのたびに、次の変数を設定する必要があります。
ACTS テストパス
ACTS は、単一のメイン エントリ ロケーションから実行されます。そのため、テストパスのロケーションはランナーにわかりません。
テストパスのロケーションを設定するには、ACTS_TESTPATH
環境変数を使用するか、コマンドラインで -tp
/ --testpaths
フラグを使用します。この値には、ディレクトリのリストを指定できます。
ACTS テストクラス
ACTS は実行するテストクラスを知っている必要があります。テストクラス名の正規表現またはリストを指定できます。
この値を設定するには、コマンドラインで -tc
/ --test_class
フラグを使用します。このフラグにはクラス名のリストも指定できます。クラス名は、対応するファイル名と一致する必要があります。たとえば、SampleTest
は SampleTest.py
にある必要があります。
ACTS ログパス
ACTS には、STDOUT 以外にログを書き込む場所が必要です。ACTS は、テストが失敗した理由を特定するのに役立つデータを含む、完全なデバッグログを書き込みます。便宜上、ACTS はこうしたログを STDOUT に書き込むことはありません。
ログパスを設定するには、ACTS_LOGPATH
環境変数を使用するか、コマンドラインで -lp
/ --logpath
フラグを使用します。
ACTS 構成パス
テストを実行するには、ACTS はどの testbed が存在するかを知っている必要があります。ACTS 構成には、testbed のすべてのデバイスと、必要になる特別なテストパラメータまたは環境パラメータが含まれます。コマンドラインでこの値を設定するには、-c
/ --config
を使用します。
構成内に複数の testbed が存在する場合、ACTS は各 testbed のテストを実行します。リスト内の単一の testbed のテストのみを実行するには、-tb/--testbed <NAME>
コマンドライン引数を使用します。
ローカル ワークステーションの例
大半の ACTS ユーザーは単一の Android Repo ブランチで開発し、次のような設定をしています。
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'
# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
ACTS ユーザーが複数のブランチで実行する場合は、通常は acts/framework
ディレクトリから ACTS を実行し、ACTS_TESTPATH
の相対パスを使用します。
# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'
# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin
テストベッドの設定
ACTS 構成ファイルは、ハードウェア デバイス上でテストを実行するために必要な情報をすべて提供します。
{
"testbed": {
"my_testbed": {
"my_testbed_value": "value"
},
"another_testbed": {
"AndroidDevice": [
"53R147"
]
}
},
"user_parameter_1": "special environment value",
"user_parameter_2": "other special value"
}
この構成の基本単位は testbed です。上記の構成例では、testbed my_testbed
は 1 つの testbed 値で作成されます。2 番目の testbed another_testbed
には、Android デバイスのリストの情報を保持する特別なコントローラ構成があります。これらのデバイスは、self.android_devices
のデバイスのリストに保存されます。testbed で AndroidDevice
オブジェクトが指定されていない場合、AndroidDevice
オブジェクトを想定しているテストクラスにより例外が発生します。ACTS に付属する、サポートされているコントローラ構成の完全なリストについては、/acts/framework/acts/controllers/
のリストをご覧ください。
その他の値(上記のセクションで説明した特別な値ではないもの)はすべて、辞書として self.user_params
に格納されます。この場所は、スマートフォンが従量制のデータ環境にあるかどうか、テスト用データの収集期間など、環境またはテストの情報を格納するのに適しています。
AndroidDevice の特殊なケース
複数のデバイスでさまざまなプロパティを使用して開発を行う場合の便宜を図るため、AndroidDevice
には特殊なケースがあります。
JSON 構成形式
次の JSON の例の Key-Value ペアはすべて、対応する AndroidDevice
オブジェクトに設定されています。構成が AndroidDevice
属性で定義されたパラメータを上書きしようとすると、ControllerError
がスローされます。
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
その後、テスト スクリプトで、フィルタ関数を使用して正しいデバイスを取得し、デバイス オブジェクトから追加のパラメータにアクセスできます。
def setup_class(self):
self.pub = next(filter(lambda ad: ad.label == 'publisher',
self.android_devices))
self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
self.android_devices))
省略可能なパラメータ
以下に、省略可能なパラメータを示します。
adb_logcat_param
: adb ログを収集するためにadb logcat
コマンドに追加される文字列。デフォルトではadb logcat -v threadtime -b all
が使用されます。adb_logcat_param
を設定した場合、-b all
セクションが上書きされます。たとえば、adb_logcat_param
を-b radio
に設定すると、コマンドはadb logcat -v threadtime -b radio
に変更されます。