В 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"
}
}
Ключ записи в файле – это шаблон регулярного выражения для имени хоста, а значение – это набор пар "ключ-значение" для любого хоста с соответствующим именем.
Затем обновите глобальный файл конфигурации 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.
Если в хранилище ключей есть несколько файлов хранилища ключей на основе хоста, порядок имеет значение. Если значение ключа определено в нескольких файлах, значение в последнем из них переопределяет остальные.