ACTSテストの構成

このページでは、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フラグを使用します。このフラグはクラス名のリストも受け入れることに注意してください。クラス名は、対応するファイル名と一致する必要があります。たとえば、 SampleTestSampleTest.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に変更されます。