Przechowywanie obiektów tajnych w sklepie z kluczami

Tradefed zawiera koncepcję magazynu kluczy, w którym tajne dane mogą być przechowywane w usłudze magazynu kluczy i żądane w czasie wykonywania testu do użycia podczas testu.

Korzystanie z magazynu kluczy

Aby korzystać z magazynu kluczy, musisz najpierw zdefiniować źródło magazynu kluczy w swojej globalnej konfiguracji.

Gdy to zrobisz, możesz używać przechowywanych kluczy za pomocą polecenia USE_KEYSTORE@{key}.

JSONFileKeyStore

Przykładowa implementacja w Tradefed Core korzysta z magazynu kluczy JSON, JSONFileKeyStoreClient. Aby korzystać z tego magazynu kluczy, musisz zdefiniować plik kluczy JSON, który zawiera mapowania kluczy na wartości.

Możesz na przykład zdefiniować plik /path/to/keystore.json jako

{
  "test_account": "foo@gmail.com",
  "test_account_pwd": "helloworld",
  "wifi_lab_ssid": "Google_private_AP",
  "wifi_lab_pwd": "secret123",
}

Następnie dodaj te wiersze do globalnego pliku konfiguracji TF:

<key_store class="com.android.tradefed.util.keystore.JSONFileKeyStoreFactory">
<option name="json-key-store-file" value="/path/to/keystore.json" />
</key_store>

Podczas wykonywania powiązanych testów możesz teraz przekazywać wartości jako USE_KEYSTORE@test_account. TF wyszuka je w magazynie kluczy i użyje ich wartości w teście.

Plik magazynu kluczy na podstawie hosta

Aby zdefiniować pary klucz-wartość na podstawie hosta, możesz zdefiniować plik /path/to/keystore_ssid.json jako

{
  "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"
  }
}

Kluczem wpisu w pliku jest wzorzec wyrażenia regularnego dla nazwy hosta, a wartością jest zbiór par klucz-wartość dla dowolnego hosta o pasującej nazwie hosta.

Następnie zaktualizuj globalny plik konfiguracji TF, aby uwzględnić plik magazynu kluczy na podstawie hosta:

<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>

Wartość klucza zdefiniowanego w pliku magazynu kluczy na podstawie hosta zastępuje wartość zdefiniowaną w pliku magazynu kluczy określonym za pomocą json-key-store-file.

Gdy w magazynie kluczy znajduje się kilka plików magazynu kluczy na podstawie hosta, kolejność ma znaczenie. Jeśli wartość klucza jest zdefiniowana w kilku plikach, wartość w ostatnim takim pliku zastępuje pozostałe.