Tradefed にはキーストアというコンセプトがあります。キーストア サービスにシークレットを格納し、テストの実行時にリクエストして使用できます。
キーストアを使用する
キーストアを使用するには、まずグローバル構成でキーストアの参照元を定義する必要があります。
保存したキーは、USE_KEYSTORE@{key}
として使用できます。
JSONFileKeyStore
Tradefed コアのサンプル実装では JSON キーストア JSONFileKeyStoreClient
を使用します。このキーストアを使用するには、キーと値のマッピングを持つ JSON キーファイルを定義します。
たとえば、/path/to/keystore.json
ファイルは次のように定義できます。
{
"test_account": "foo@gmail.com",
"test_account_pwd": "helloworld",
"wifi_lab_ssid": "Google_private_AP",
"wifi_lab_pwd": "secret123",
}
次に、TF グローバル構成ファイルに次の行を追加します。
<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>
これにより、関連するテストを実行する際に USE_KEYSTORE@test_account
で値を渡すことができるようになります。TF はキーストアに対してクエリし、その値をテストで使用します。
ホストベースのキーストア ファイル
ホストベースの Key-Value ペアを定義するには、/path/to/keystore_ssid.json
ファイルを次のように定義します。
{
"host_a.*\\.corp\\.com": {
"wifi_lab_ssid": "ssid_a",
"wifi_lab_pwd": "secret_a"
},
"host_b.*\\.corp\\.com": {
"wifi_lab_ssid": "ssid_b",
"wifi_lab_pwd": "secret_b"
}
}
ファイル内のエントリのキーは、ホスト名の正規表現(regex)パターンです。値は、ホスト名が一致するすべてのホストの Key-Value ペアのセットです。
次に、TF グローバル構成ファイルを更新して、ホストベースのキーストア ファイルを含めます。
<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
<option name="host-based-key-store-file" value="/path/to/keystore-ssid.json" />
</key_store>
ホストベースのキーストア ファイルで定義されているキーの値は、json-key-store-file
で指定されたキーストア ファイルで定義されている値よりも優先されます。
複数のホストベースのキーストア ファイルがキーストアに存在する場合は、順序が重要です。キーの値が複数のファイルで定義されている場合、最後のファイルの値でそれ以外の値がオーバーライドされます。