Aby zrozumieć tę część, zapoznaj się najpierw z The Tradefed @Opcja.
Typowe opcje w ramach Tradefeder pozwalają klasom testów otrzymywać dodatkowe z konfiguracji XML lub z wiersza poleceń. Ta funkcja pozwala o krok dodatkowy i eliminować część tych dodatkowych informacji, niezbędną.
Przykład opcji pliku
Przykładowy plik @opcja:
@Option(name = 'config-file')
private File mConfigFile;
Poniższe ustawienia można ustawić za pomocą konfiguracji XML:
<option name="config-file" value="/tmp/file" />
lub poleceniem:
--config-file /tmp/file
Opis
Ta funkcja umożliwia znalezienie opcji @Options w typie pliku, które są zdalne lokalny plik danych, aby był łatwo dostępny z punktu widzenia użytkownika.
Aby ten sposób zadziałał, plik należy określić za pomocą zdalnej ścieżki stylu. Na przykład:
--config-file gs://bucket/tmp/file
Ta ścieżka wskazuje plik w zasobniku Google Cloud Storage (GCS), w którym
zapisane. Handfeder spróbuje pobrać plik po wykryciu tej zdalnej ścieżki.
lokalnie i przypisz ją do @Option. W efekcie zmienna mConfigFile
wskazuje teraz lokalną wersję pliku, z której może korzystać test.
Jeśli z jakiegokolwiek powodu nie będzie można pobrać pliku zdalnego, Tradefed zgłosi błąd
ConfigurationException
, który uniemożliwi uruchomienie testu. Bierzemy pod uwagę
jeśli brakuje tych plików, co oznacza błąd krytyczny, ponieważ niektóre artefakty testowe również zostaną
brak.
Używanie parametrów zapytania
Dodawanie parametrów zapytania do adresu URL jest możliwe dzięki funkcji ?
. Na przykład:
gs://bucket/path?unzip=true
. Para klucz-wartość unzip=true
będzie dostępna w:
za pomocą polecenia IRemoteFile resolver
implementacji.
Dostępne są 2 wbudowane zachowania:
- unzip: jeśli ustawisz wartość
true
, a pobrany plik jest plikiem ZIP, zostanie on automatycznie rozpakowany w tymczasowej lokalizacji. Przykład:?unzip=true
- opcjonalnie: domyślna wartość to
false
. Jeśli ma wartośćtrue
, a rozdzielczość się nie uda, nie zgłosi wyjątku i nie zastąpi pliku. Przykład:?optional=true
Globalne argumenty zapytania możesz też przekazywać za pomocą --dynamic-download-args key=value
który będzie przekazywał parę klucz/wartość do wszystkich dynamicznych plików pobieranych w
.
Obsługiwane protokoły
Oficjalnie obsługiwane protokoły i odpowiadające im formaty to:
- Google Cloud Storage, protokół:
gs
, format:gs://<bucket name>/path
- Pliki lokalne, protokół:
file
, format:file:/local/path
- Linki http, protokół:
http
, format:http://url
- Linki https, protokół:
https
, format:https://url
Ograniczenia
Dynamiczna rozdzielczość @Option obsługuje obecnie tylko ograniczoną liczbę protokoły i lokalizacje pobierania. Rozdzielczość @Option jest obecnie włączona tylko dla głównej konfiguracji XML Tradefed.
Jeśli pakiet jest uruchamiany jako zestaw, bieżące moduły (AndroidTest.xml
) nie będą domyślnie rozwiązywać plików.
Zapobiegnie to tworzeniu przez moduły pewnych nieznanych zależności. Ten
można zmienić za pomocą funkcji --enable-module-dynamic-download
na poziomie pakietu,
ale także głównych pakietach, takich jak Compatibility Test Suite
(CTS) i Vendor Test Suite
(VTS) nie spowoduje jego włączenia.
Wdrażanie nowego protokołu
Obsługiwane protokoły mają w Tradefed implementację interfejsu IRemoteFileResolver, który definiuje krótki tag protokołu, który zostanie dopasowany w ścieżce pliku za pomocą getSupportedProtocol
. Na przykład gs
jest używany do
Protokół Google Cloud Storage. Zalecany interfejs do implementacji to
#resolveRemoteFiles(RemoteFileResolverArgs)
, która będzie długoterminowa
i łatwo dostępny interfejs.
Zaimplementowane protokoły można dodać do zestawu META-INF usługi aby oficjalnie włączyć pomoc.