Wczytaj protokoły z konfiguracją globalną

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.