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 затем будет запрашивать в хранилище ключей и использовать в рамках теста.
Файл хранилища ключей на хосте
Чтобы определить пары «ключ-значение» на основе хоста, вы можете определить файл /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) для имени хоста, а значением — набор пар ключ-значение для любого хоста с совпадающим именем хоста.
Затем обновите файл глобальной конфигурации 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
.
Если в хранилище ключей присутствует несколько файлов на хосте, порядок имеет значение. Если значение ключа определено в нескольких файлах, значение в последнем из них переопределяет остальные.