O Tradefed inclui o conceito de keystore, em que os secrets podem ser armazenados em um serviço de keystore e solicitados no ambiente de execução do teste para uso durante o teste.
Usar um keystore
Para usar um keystore, primeiro é necessário definir a origem dele na configuração global.
Depois disso, você pode usar as chaves armazenadas por: USE_KEYSTORE@{key}
JSONFileKeyStore
A implementação de exemplo no núcleo do Tradefed usa um keystore JSON,
JSONFileKeyStoreClient
. Para usar esse keystore, você precisa definir um arquivo de chave JSON
com mapeamentos de chave para valor.
Por exemplo, defina um arquivo /path/to/keystore.json
como
{
"test_account": "foo@gmail.com",
"test_account_pwd": "helloworld",
"wifi_lab_ssid": "Google_private_AP",
"wifi_lab_pwd": "secret123",
}
Em seguida, adicione as linhas abaixo ao arquivo de configuração global do TF:
<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>
Ao executar testes relacionados, agora é possível transmitir valores como
USE_KEYSTORE@test_account
, que o TF vai consultar o keystore e usar
o valor como parte do teste.
Arquivo keystore baseado em host
Para definir pares de chave-valor baseados em host, defina um
arquivo /path/to/keystore_ssid.json
como
{
"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"
}
}
A chave de uma entrada no arquivo é um padrão de expressão regular (regex) para o nome do host, e o valor é o conjunto de pares de chave-valor para qualquer host com um nome de host correspondente.
Em seguida, atualize o arquivo de configuração global do TF para incluir o arquivo de keystore baseado em host:
<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>
O valor de uma chave definida em um arquivo de keystore baseado em host substitui aquele definido
no arquivo de keystore especificado com json-key-store-file
.
Quando vários arquivos de keystore baseados em host estão presentes no keystore, a ordem é importante. Se o valor de uma chave for definido em vários arquivos, o valor no último arquivo vai substituir o restante.