Konfigurieren von ACTS-Tests

Auf dieser Seite wird beschrieben, wie Sie ACTS-Tests konfigurieren.

Konfigurationsquellen

Die Android Comms Test Suite (ACTS) verfügt über drei Hauptkonfigurationsquellen:

  • Die Befehlszeilenschnittstelle (CLI)
  • Die ACTS-Konfigurationsdatei
  • Umgebungsvariablen

Werte aus diesen Quellen werden in einer einzigen Konfiguration kombiniert, die zum Ausführen eines ACTS-Tests verwendet wird. Wenn Werte an mehreren Stellen angegeben werden, werden die Werte in der oben genannten Reihenfolge überschrieben (wobei die CLI Vorrang hat).

Ein Hinweis zu Umgebungsvariablen

Seien Sie vorsichtig, wenn Sie Umgebungsvariablen für ACTS-Tests verwenden. Diese Werte sind für den Benutzer am wenigsten sichtbar und werden nicht für die Verwendung außerhalb der Workstation eines Entwicklers empfohlen. Umgebungsvariablen werden während automatisierter ACTS-Tests deaktiviert, um eine Umgebungsvergiftung zu verhindern.

Erforderliche Konfigurationsvariablen

Für jeden ACTS-Test müssen die folgenden Variablen festgelegt werden.

ACTS-Testpfade

ACTS wird von einem einzigen Haupteingangsstandort aus ausgeführt. Daher ist der Standort des Testpfads für den Läufer unbekannt.

Legen Sie den Speicherort des Testpfads mithilfe der Umgebungsvariablen ACTS_TESTPATH ​​oder mit dem Flag -tp / --testpaths in der Befehlszeile fest. Der Wert kann eine Liste von Verzeichnissen sein.

ACTS-Testklassen

ACTS muss wissen, welche Testklassen ausgeführt werden sollen. Dies kann ein regulärer Ausdruck oder eine Liste von Testklassennamen sein.

Um diesen Wert festzulegen, verwenden Sie das Flag -tc / --test_class in der Befehlszeile. Beachten Sie, dass dieses Flag auch eine Liste von Klassennamen akzeptiert. Die Klassennamen müssen mit den entsprechenden Dateinamen übereinstimmen, zum Beispiel muss SampleTest in SampleTest.py gefunden werden.

ACTS-Protokollpfad

ACTS muss einen anderen Speicherort als STDOUT zum Schreiben von Protokollen haben. ACTS schreibt vollständige Debug-Protokolle mit Daten, die dabei helfen können, festzustellen, warum einige Tests fehlschlagen. Um Unordnung zu vermeiden, schreibt ACTS diese Protokolle nicht nach STDOUT.

Um den Protokollpfad festzulegen, verwenden Sie die Umgebungsvariable ACTS_LOGPATH oder das Flag -lp / --logpath in der Befehlszeile.

ACTS-Konfigurationspfad

Um den Test auszuführen, muss ACTS wissen, welches Testbed vorhanden ist. Die ACTS-Konfiguration enthält alle Geräte im Testbed sowie alle speziellen Test- oder Umgebungsparameter, die möglicherweise benötigt werden. Legen Sie diesen Wert in der Befehlszeile mit -c / --config fest.

Wenn die Konfiguration mehrere Testbeds enthält, führt ACTS die Tests für jedes Testbed aus. Um den Test nur für ein einzelnes Testbed in der Liste auszuführen, verwenden Sie das Befehlszeilenargument -tb/--testbed <NAME> .

Ein Beispiel für eine lokale Workstation

Die meisten ACTS-Benutzer entwickeln auf einem einzigen Android-Repo-Zweig und haben ein ähnliches Setup wie dieses:

# 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

Wenn ACTS-Benutzer in mehreren Zweigen ausgeführt werden, führen sie ACTS häufig aus dem Verzeichnis acts/framework aus und verwenden einen relativen Pfad für 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

Konfigurieren Sie Ihre Testumgebungen

Die ACTS-Konfigurationsdatei bietet alle notwendigen Informationen zum Ausführen von Tests auf Hardwaregeräten:

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

Die Basiseinheit dieser Konfiguration ist das Testbed. In der obigen Beispielkonfiguration wird das Testbed my_testbed mit einem einzelnen Testbed-Wert erstellt. Das zweite Testbed, another_testbed , verfügt über eine spezielle Controller-Konfiguration, die die Informationen für eine Liste von Android-Geräten enthält. Diese Geräte werden in einer Geräteliste unter self.android_devices gespeichert. Beachten Sie, dass eine Testklasse, die ein AndroidDevice Objekt erwartet, eine Ausnahme auslöst, wenn ein Testbed kein AndroidDevice Objekt angibt. Eine vollständige Liste der unterstützten Controller-Konfigurationen, die mit ACTS geliefert werden, finden Sie in der Liste unter /acts/framework/acts/controllers/ .

Alle anderen Werte (bei denen es sich nicht um im obigen Abschnitt erwähnte Sonderwerte handelt) werden in self.user_params als Wörterbuch gespeichert. Dies ist ein guter Ort, um Umgebungs- oder Testinformationen zu speichern, z. B. ob sich Telefone in einer Messdatenumgebung befinden oder wie lange Daten für einen Test gesammelt werden müssen.

Sonderfälle für AndroidDevice

Um die Entwicklung zu vereinfachen, wenn Sie mehrere Geräte mit unterschiedlichen Eigenschaften zur Verfügung haben möchten, verfügt AndroidDevice über einige Sonderfälle.

JSON-Konfigurationsformat

Alle Schlüssel/Wert-Paare im folgenden JSON sind auf das entsprechende AndroidDevice Objekt festgelegt. Wenn die Konfiguration versucht, einen im AndroidDevice Attribut definierten Parameter zu überschreiben, wird ControllerError ausgelöst.

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

Anschließend können Sie im Testskript eine Filterfunktion verwenden, um das richtige Gerät abzurufen und auf zusätzliche Parameter aus dem Geräteobjekt zuzugreifen:

  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))

Optionaler Parameter

Folgendes ist ein optionaler Parameter:

  • adb_logcat_param : Eine Zeichenfolge, die an den Befehl adb logcat angehängt wird, um ADB-Protokolle zu sammeln. Standardmäßig wird adb logcat -v threadtime -b all verwendet. Wenn adb_logcat_param festgelegt ist, wird der Abschnitt -b all überschrieben. Wenn Sie beispielsweise adb_logcat_param auf -b radio setzen, ändert sich der Befehl in adb logcat -v threadtime -b radio .