Wczytaj protokoły z konfiguracją globalną

Aby zrozumieć tę sekcję, najpierw zapoznaj się z informacjami o The Tradefed @Option.

Typowe opcje w Tradefed umożliwiają klasom testów otrzymywanie dodatkowych informacji z konfiguracji XML lub wiersza poleceń. Ta funkcja umożliwia wykonanie dodatkowego kroku i w razie potrzeby uzupełnienie niektórych dodatkowych informacji.

Przykład opcji pliku

Przykładowy plik @opcja:

@Option(name = 'config-file')
private File mConfigFile;

Powyższe ustawienia można określić za pomocą konfiguracji XML:

<option name="config-file" value="/tmp/file" />

lub za pomocą polecenia:

--config-file /tmp/file

Opis

Ta funkcja pozwala na bezproblemowe przesyłanie plików @Options, które są zdalne do plików lokalnych, i sprawną dostępność z punktu widzenia użytkownika.

Aby ten sposób zadziałał, plik musi zostać określony za pomocą zdalnej ścieżki stylu. Przykład:

--config-file gs://bucket/tmp/file

Ta ścieżka wskazuje plik w zasobniku Google Cloud Storage (GCS), w którym jest przechowywany. Po zobaczeniu tej zdalnej ścieżki Tradefed spróbuje pobrać plik lokalnie i przypisać go do @Option. W efekcie zmienna mConfigFile wskazuje teraz lokalną wersję pliku, której może używać test.

Jeśli z jakiegokolwiek powodu nie można pobrać pliku zdalnego, Tradefed wygeneruje błąd ConfigurationException, który uniemożliwi uruchomienie testu. Ich brak uznajemy za krytyczną awarię, ponieważ brakuje też niektórych artefaktów testowych.

Korzystanie z parametrów zapytania

Parametry zapytania można dodawać do adresu URL za pomocą ?. Na przykład: gs://bucket/path?unzip=true. Para klucz-wartość unzip=true będzie dostępna w implementacji IRemoteFileReleaser.

Dostępne są 2 wbudowane zachowania:

  • unzip: jeśli ustawienie to true, a pobierany plik jest plikiem ZIP, zostanie on automatycznie rozpakowany w tymczasowej lokalizacji. Przykład: ?unzip=true
  • opcjonalnie: domyślna wartość to false. Jeśli ustawisz wartość true, a rozdzielczość nie powiedzie się, nie zostanie wygenerowany wyjątek i plik nie zostanie zastąpiony. Przykład: ?optional=true

Możesz też przekazywać argumenty zapytania globalnego za pomocą parametru --dynamic-download-args key=value, który przekaże parę klucz-wartość do wszystkich prób pobrań dynamicznych wykonanych w wywołaniu.

Obsługiwane protokoły

Oficjalnie obsługiwane protokoły i odpowiednie formaty:

  • 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ść opcji @Option obsługuje obecnie tylko ograniczoną liczbę protokołów i lokalizacji do pobrania. Rozdzielczość @Option jest obecnie włączona tylko w 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. Ma to zapobiec tworzeniu przez moduły nieznanych zależności. Można go uniknąć, używając znaku --enable-module-dynamic-download na poziomie zestawu, ale główne zestawy, takie jak Compatibility Test Suite (CTS) i Vendor Test Suite (VTS), nie będą go uwzględniać.

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 w protokole Google Cloud Storage. Zalecanym interfejsem do wdrożenia jest #resolveRemoteFiles(RemoteFileResolverArgs), który będzie interfejsem utrzymanym na dłuższą metę.

Zaimplementowane protokoły można dodać do pliku META-INF services, aby oficjalnie włączyć obsługę.