Konfigurowanie testów ACTS

Na tej stronie opisano sposób konfigurowania testów ACTS.

Źródła konfiguracji

Pakiet Android Comms Test Suite (ACTS) ma trzy główne źródła konfiguracji:

  • Interfejs wiersza poleceń (CLI)
  • Plik konfiguracyjny ACTS
  • Zmienne środowiska

Wartości z tych źródeł są łączone w jedną konfigurację używaną do uruchamiania testu ACTS. Jeśli wartości są określone w wielu lokalizacjach, wartości są zastępowane w oparciu o powyższą kolejność (gdzie pierwszeństwo ma interfejs CLI).

Uwaga na temat zmiennych środowiskowych

Zachowaj ostrożność podczas używania zmiennych środowiskowych do testów ACTS. Wartości te są najmniej widoczne dla użytkownika i nie zaleca się ich używania poza stacją roboczą programisty. Zmienne środowiskowe są wyłączone podczas automatycznych testów ACTS, aby zapobiec zatruciu środowiska.

Wymagane zmienne konfiguracyjne

Każdy test ACTS wymaga ustawienia następujących zmiennych.

Ścieżki testowe ACTS

ACTS działa z jednego głównego miejsca wejścia. W rezultacie lokalizacja ścieżki testowej jest nieznana biegaczowi.

Ustaw lokalizację ścieżki testowej, używając zmiennej środowiskowej ACTS_TESTPATH ​​lub flagi -tp / --testpaths w wierszu poleceń. Wartość może być listą katalogów.

Zajęcia testowe ACTS

ACTS musi wiedzieć, jakie klasy testowe uruchomić. Może to być wyrażenie regularne lub lista nazw klas testowych.

Aby ustawić tę wartość, użyj flagi -tc / --test_class w wierszu poleceń. Należy pamiętać, że ta flaga akceptuje także listę nazw klas. Nazwy klas muszą odpowiadać odpowiadającym im nazwom plików, na przykład SampleTest musi zostać znaleziony w SampleTest.py .

Ścieżka dziennika ACTS

ACTS musi mieć lokalizację do zapisywania dzienników inną niż STDOUT. ACTS zapisuje pełne dzienniki debugowania zawierające dane, które mogą pomóc w określeniu przyczyny niepowodzenia niektórych testów. Aby zapobiec bałaganowi, ACTS nie zapisuje tych dzienników na STDOUT.

Aby ustawić ścieżkę dziennika, użyj zmiennej środowiskowej ACTS_LOGPATH lub flagi -lp / --logpath w wierszu poleceń.

Ścieżka konfiguracji ACTS

Aby uruchomić test, ACTS musi wiedzieć, jakie środowisko testowe istnieje. Konfiguracja ACTS zawiera wszystkie urządzenia w środowisku testowym oraz wszelkie specjalne parametry testowe lub środowiskowe, które mogą być potrzebne. Ustaw tę wartość w wierszu poleceń za pomocą -c / --config .

Jeśli w konfiguracji znajduje się wiele stanowisk testowych, ACTS uruchamia testy dla każdego środowiska testowego. Aby uruchomić test tylko dla pojedynczego stanowiska testowego na liście, użyj argumentu wiersza poleceń -tb/--testbed <NAME> .

Przykład lokalnej stacji roboczej

Większość użytkowników ACTS programuje w jednej gałęzi repozytorium Androida i ma konfigurację podobną do tej:

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='~/android/<REPO_BRANCH>/tools/test/connectivity/acts_tests/'

# On cmdline
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

Jeśli użytkownicy ACTS działają na wielu gałęziach, często uruchamiają ACTS z katalogu acts/framework i używają ścieżki względnej dla ACTS_TESTPATH :

# in ~/.bashrc
ACTS_LOGPATH='/tmp/acts_logpath'
ACTS_TESTPATH='../acts_tests/'

# On cmdline
$ cd ~/android/main/tools/test/connectivity/acts_tests/acts_contrib/
$ act.py -c ~/acts_configs/local_config.json -tc SampleTest -tb marlin

Konfigurowanie stanowisk testowych

Plik konfiguracyjny ACTS zawiera wszystkie informacje niezbędne do uruchomienia testów na urządzeniach sprzętowych:

{
  "testbed": {
    "my_testbed": {
      "my_testbed_value": "value"
    },
    "another_testbed": {
      "AndroidDevice": [
        "53R147"
      ]
    }
  },
  "user_parameter_1": "special environment value",
  "user_parameter_2": "other special value"
}

Podstawową jednostką tej konfiguracji jest stanowisko testowe. W powyższej przykładowej konfiguracji środowisko testowe my_testbed jest tworzone z pojedynczą wartością środowiska testowego. Drugie stanowisko testowe, another_testbed , ma specjalną konfigurację kontrolera, która przechowuje informacje o liście urządzeń z systemem Android. Urządzenia te są przechowywane na liście urządzeń w obszarze self.android_devices . Należy pamiętać, że jeśli środowisko testowe nie określa obiektu AndroidDevice , klasa testowa oczekująca obiektu AndroidDevice zgłasza wyjątek. Pełną listę obsługiwanych konfiguracji kontrolerów dostarczanych z ACTS można znaleźć na liście w /acts/framework/acts/controllers/ .

Wszystkie inne wartości (które nie są wartościami specjalnymi wymienionymi w powyższej sekcji) są przechowywane w self.user_params jako słownik. Jest to dobre miejsce do przechowywania informacji o środowisku lub testach, takich jak to, czy telefony znajdują się w środowisku danych pomiarowych lub jak długo należy zbierać dane do testu.

Specjalne przypadki dla urządzenia z systemem Android

Dla wygody programowania, gdy chcesz mieć dostępnych wiele urządzeń o różnych właściwościach, AndroidDevice ma kilka specjalnych przypadków.

Format konfiguracji JSON

Wszystkie pary klucz/wartość w poniższym formacie JSON są ustawione na odpowiedni obiekt AndroidDevice . Jeśli konfiguracja spróbuje zastąpić parametr zdefiniowany w atrybucie AndroidDevice , zostanie zgłoszony ControllerError .

  "AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
                    {"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]

Następnie w skrypcie testowym możesz użyć funkcji filtrowania, aby pobrać właściwe urządzenie i uzyskać dostęp do dodatkowych parametrów z obiektu urządzenia:

  def setup_class(self):
      self.pub = next(filter(lambda ad: ad.label == 'publisher',
                             self.android_devices))
      self.sub = next(filter(lambda ad: ad.label == 'user_parameter_1',
                             self.android_devices))

Parametr opcjonalny

Poniżej znajduje się parametr opcjonalny:

  • adb_logcat_param : ciąg znaków dołączony do polecenia adb logcat w celu gromadzenia dzienników adb. Domyślnie używana jest adb logcat -v threadtime -b all . Jeśli ustawiono adb_logcat_param , sekcja -b all zostanie nadpisana. Na przykład ustawienie parametru adb_logcat_param na -b radio zmienia polecenie na adb logcat -v threadtime -b radio .