Tradefed 包含金鑰庫的概念,其中秘密可以儲存在金鑰庫服務中,並在測試執行時間請求以在測試期間使用。
使用金鑰庫
若要使用金鑰庫,您需要先在全域設定中定義金鑰庫的來源。
完成後,您可以透過以下方式使用儲存的金鑰: USE_KEYSTORE@{key}
JSON檔案金鑰存儲
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
指定的金鑰庫檔案中定義的值。
當金鑰庫中存在多個基於主機的金鑰庫檔案時,順序就很重要。如果某個鍵的值在多個文件中定義,則最後一個此類文件中的值將覆蓋其餘文件。