Załaduj protokoły z globalną konfiguracją

Aby zrozumieć tę sekcję, najpierw przestudiuj Tradefed @Option .

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

Przykład opcji pliku

Przykładowy plik @opcja:

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

Powyższe można ustawić poprzez konfigurację XML:

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

lub za pomocą polecenia:

--config-file /tmp/file

Opis

Ta funkcja umożliwia przekształcenie zdalnych opcji @Options typu plikowego w plik lokalny, tak aby były one bezproblemowo dostępne z punktu widzenia użytkownika.

Aby to zadziałało, plik musi być określony ze zdalną ścieżką stylu . Na przykład:

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

Ta ścieżka wskazuje plik w zasobniku Google Cloud Storage (GCS), w którym jest on przechowywany. Tradefed po zobaczeniu tej zdalnej ścieżki spróbuje pobrać plik lokalnie i przypisać go do opcji @Option. Powoduje to, że zmienna mConfigFile wskazuje teraz lokalną wersję pliku, która może zostać wykorzystana w teście.

Jeśli z jakiegoś powodu nie można pobrać pliku zdalnego, Tradefed zgłosi wyjątek ConfigurationException , który uniemożliwi uruchomienie testu. Brak tych plików uważamy za awarię krytyczną, ponieważ brakuje również niektórych artefaktów testowych.

Użyj parametrów zapytania

Dodanie parametrów zapytania do adresu URL jest możliwe za pomocą ? . Na przykład gs://bucket/path?unzip=true . Klucz/wartość unzip=true będzie dostępna w implementacji interfejsu IRemoteFileResolver .

Dostępne są dwa wbudowane zachowania:

  • unzip: Jeśli ustawione na true i pobrany plik jest w formacie ZIP, zostanie on automatycznie rozpakowany do lokalizacji tymczasowej. Przykład: ?unzip=true
  • opcjonalnie: domyślnie false . Jeśli ustawione na true i rozwiązanie nie powiedzie się, nie zgłosi wyjątku i po prostu nie zastąpi pliku. Przykład: ?optional=true

Możesz także przekazać globalne argumenty zapytania za pomocą --dynamic-download-args key=value , która przekaże klucz/wartość do wszystkich prób pobierania dynamicznego w wywołaniu.

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łów i lokalizacji, z których można pobierać. Rozdzielczość @Option jest obecnie włączona tylko dla głównej konfiguracji XML Tradefed.

Jeśli działają jako pakiet, bieżące moduły ( AndroidTest.xml ) domyślnie nie rozpoznają plików. Ma to na celu zapobieganie tworzeniu przez moduły nieznanych zależności . Można tego uniknąć, używając --enable-module-dynamic-download na poziomie pakietu, ale główne pakiety, takie jak Compatibility Test Suite (CTS) i Vendor Test Suite (VTS), nie umożliwią tego.

Zaimplementuj nowy protokół

Obsługiwane protokoły mają w Tradefed implementację interfejsu IRemoteFileResolver , który definiuje krótki znacznik protokołu, który będzie dopasowywany w ścieżce pliku poprzez 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 utrzymywanym długoterminowo.

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