このページでは、ACTSテストを構成する方法について説明します。
構成のソース
Android Comms Test Suite(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はどのテストベッドが存在するかを知っている必要があります。 ACTS構成には、テストベッド内のすべてのデバイスと、必要になる可能性のある特別なテストまたは環境パラメーターが含まれています。 -c
/ --config
を使用して、コマンドラインでこの値を設定します。
構成内に複数のテストベッドがある場合、ACTSは各テストベッドのテストを実行します。リスト内の単一のテストベッドに対してのみテストを実行するには、 -tb/--testbed <NAME>
コマンドライン引数を使用します。
ローカルワークステーションの例
ほとんどのACTSユーザーは、単一のAndroidリポジトリブランチで開発し、次のような設定をしています。
# 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/master/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"
}
この構成の基本ユニットはテストベッドです。上記の設定例では、テストベッドmy_testbed
は単一のテストベッド値で作成されています。 2番目のテストベッドanother_testbed
には、Androidデバイスのリストの情報を保持する特別なコントローラー構成があります。これらのデバイスは、 self.android_devices
の下のデバイスのリストに保存されます。テストベッドでAndroidDeviceオブジェクトが指定されていない場合、 AndroidDevice
オブジェクトを予期するテストクラスで例外が発生することにAndroidDevice
してください。 ACTSに付属するサポートされているコントローラー構成の完全なリストについては、 /acts/framework/acts/controllers/
にあるリストを参照してください。
他のすべての値(上記のセクションで説明した特別な値ではない)は、辞書としてself.user_params
に格納されます。これは、電話が従量制データ環境にあるかどうか、テスト用のデータを収集する期間などの環境またはテスト情報を保持するのに適した場所です。
AndroidDeviceの特殊なケース
異なるプロパティを持つ複数のデバイスを使用できるようにする場合の開発の便宜のために、 AndroidDevice
にはいくつかの特殊なケースがあります。
JSON構成形式
以下のJSONのすべてのキーと値のペアは、対応する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
に変更されます。