Konfigurowanie testów ACTS

Na tej stronie dowiesz się, jak skonfigurować testy ACTS.

Źródła konfiguracji

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

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

Wartości z tych źródeł są łączone w jedną konfigurację, która służy do przeprowadzania testu ACTS. Jeśli wartości są określone w wielu lokalizacjach, są one zastępowane zgodnie z powyższą kolejnością (gdzie interfejs wiersza poleceń ma pierwszeństwo).

Uwaga na temat zmiennych środowiskowych

Zachowaj ostrożność podczas korzystania ze zmiennych środowiskowych w testach ACTS. Te wartości są najmniej widoczne dla użytkownika i nie są zalecane poza stacją roboczą dewelopera. Zmienne środowiskowe są wyłączone podczas zautomatyzowanych testów ATS, aby zapobiec zatruciu środowiska.

Wymagane zmienne konfiguracji

Każdy test ACTS wymaga ustawienia tych zmiennych.

Ścieżki testów ACTS

ACTS działa z 1 głównej lokalizacji wejścia. W efekcie lokalizacja ścieżki testu jest dla niego nieznana.

Ustaw lokalizację ścieżki testowej za pomocą zmiennej środowiskowej ACTS_TESTPATH lub flagi -tp/--testpaths w wierszu poleceń. Wartością może być lista katalogów.

Zajęcia testowe ACTS

Zespół ACTS musi wiedzieć, jakie klasy testowe mają 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ń. Pamiętaj, że ta flaga akceptuje też listę nazw klas. Nazwy klas muszą być zgodne z odpowiadającymi im nazwami plików. Na przykład SampleTest musi znajdować się w elemencie SampleTest.py.

Ścieżka logu ACTS

ACTS muszą mieć lokalizację, aby zapisywać logi w innej usłudze niż STDOUT. ACTS zapisuje pełne logi debugowania, które zawierają dane, które pomagają ustalić, dlaczego niektóre testy kończą się niepowodzeniem. Aby uniknąć bałaganu, ACTS nie zapisuje tych logów w STDOUT.

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

Ścieżka konfiguracji ACTS

Aby można było przeprowadzić test, zespół ACTS musi wiedzieć, jakie środowisko testowe istnieje. Konfiguracja ACTS zawiera wszystkie urządzenia w badaniu 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 jest wiele stanowisk testowych, ACTS uruchomi testy dla każdego z nich. Aby uruchomić test tylko dla jednego stanowiska testowego na liście, użyj argumentu wiersza poleceń -tb/--testbed <NAME>.

Przykład lokalnej stacji roboczej

Większość użytkowników ACTS tworzy aplikacje 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 uruchamiają działania w wielu gałęziach, często uruchamiają ACTS z katalogu acts/framework i używają ścieżki względnej w przypadku 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

Skonfiguruj swoje łóżka testowe

Plik konfiguracyjny ACTS zawiera wszystkie informacje wymagane do przeprowadzania 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 laboratorium testowe. W przykładowej konfiguracji powyżej obiekt my_testbed jest tworzony z jedną wartością testowaną. Drugie stanowisko testowe (another_testbed) ma specjalną konfigurację kontrolera, w której przechowywane są informacje dotyczące listy urządzeń z Androidem. Te urządzenia znajdują się na liście urządzeń w kategorii self.android_devices. Pamiętaj, że jeśli stanowisko testowe nie określa obiektu AndroidDevice, wyjątek zostanie zgłoszony przez klasę testową oczekującą obiektu AndroidDevice. Pełną listę obsługiwanych konfiguracji kontrolerów, które są dołączone do ACTS, znajdziesz na stronie /acts/framework/acts/controllers/.

Wszystkie inne wartości (które nie są specjalnymi wartościami wymienionymi w sekcji powyżej) są przechowywane w funkcji self.user_params jako słownik. To dobre miejsce do przechowywania informacji środowiskowych lub testowych, na przykład o tym, czy telefony znajdują się w środowisku danych z pomiarem użycia danych lub jak długo mają być zbierane dane na potrzeby testu.

Specjalne przypadki dotyczące urządzenia z Androidem

Aby ułatwić programowanie, gdy chcesz mieć kilka urządzeń o różnych właściwościach, AndroidDevice ma kilka zastosowań specjalnych.

Format konfiguracji JSON

Wszystkie pary klucz-wartość w tym przykładzie JSON są ustawione na odpowiedni obiekt AndroidDevice. Jeśli konfiguracja próbuje zastąpić parametr zdefiniowany w atrybucie AndroidDevice, wywoływane jest żądanie ControllerError.

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

Następnie w skrypcie testowym możesz użyć funkcji filtra, by 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

Jest to parametr opcjonalny:

  • adb_logcat_param: ciąg znaków dołączany do polecenia adb logcat w celu zbierania logów adb. Domyślnie używana jest adb logcat -v threadtime -b all. Jeśli jest ustawiona wartość adb_logcat_param, sekcja -b all jest zastąpiona. Na przykład ustawienie adb_logcat_param na -b radio zmienia polecenie na adb logcat -v threadtime -b radio.