Tradefed inclut le concept de keystore, où les secrets peuvent être stockés dans un service keystore et demandés au moment de l'exécution du test pour être utilisés pendant le test.
Utiliser un keystore
Pour utiliser un keystore, vous devez d'abord définir la source du keystore dans votre configuration globale.
Une fois l'opération terminée, vous pouvez utiliser les clés stockées via : USE_KEYSTORE@{key}
JSONFileKeyStore
L'implémentation exemple dans le cœur de Tradefed utilise un keystore JSON, JSONFileKeyStoreClient
. Pour utiliser ce keystore, vous devez définir un fichier de clé JSON contenant des mappages de clé-valeurs.
Par exemple, vous pouvez définir un fichier /path/to/keystore.json
comme suit :
{
"test_account": "foo@gmail.com",
"test_account_pwd": "helloworld",
"wifi_lab_ssid": "Google_private_AP",
"wifi_lab_pwd": "secret123",
}
Vous devez ensuite ajouter les lignes suivantes dans votre fichier de configuration global TF :
<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>
Lorsque vous exécutez des tests associés, vous pouvez désormais transmettre des valeurs sous la forme USE_KEYSTORE@test_account
. TF interrogera ensuite le keystore et utilisera sa valeur dans le test.
Fichier Keystore basé sur l'hôte
Pour définir des paires clé-valeur basées sur l'hôte, vous pouvez définir un fichier /path/to/keystore_ssid.json
comme suit :
{
"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"
}
}
La clé d'une entrée du fichier est un modèle d'expression régulière (regex) pour le nom d'hôte, et la valeur est l'ensemble des paires clé/valeur pour tout hôte dont le nom d'hôte correspond.
Mettez ensuite à jour votre fichier de configuration global TF pour inclure le fichier du keystore basé sur l'hôte :
<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>
La valeur d'une clé définie dans un fichier keystore basé sur l'hôte remplace celle définie dans le fichier keystore spécifié avec json-key-store-file
.
Lorsque plusieurs fichiers keystore basés sur l'hôte sont présents dans le keystore, l'ordre est important. Si la valeur d'une clé est définie dans plusieurs fichiers, la valeur du dernier fichier concerné remplace les autres.