Auf dieser Seite wird beschrieben, wie ACTS-Tests konfiguriert werden.
Konfigurationsquellen
Die Android Comms Test Suite (ACTS) hat drei Hauptkonfigurationsquellen:
- Über die Befehlszeile
- ACTS-Konfigurationsdatei
- Umgebungsvariablen
Werte aus diesen Quellen werden in einer einzigen Konfiguration zusammengefasst, die zum Ausführen eines ACTS-Tests verwendet wird. Wenn Werte an mehreren Stellen angegeben sind, werden die Werte gemäß der obigen Reihenfolge überschrieben, wobei die Befehlszeile Vorrang hat.
Hinweis zu Umgebungsvariablen
Seien Sie vorsichtig, wenn Sie Umgebungsvariablen für ACTS-Tests verwenden. Diese Werte sind für den Nutzer am wenigsten sichtbar und die Verwendung außerhalb der Entwicklerworkstation wird nicht empfohlen. Umgebungsvariablen werden während automatisierter ACTS-Tests deaktiviert, um Umgebungs-Poisoning zu vermeiden.
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 die Position des Testpfads dem Runner unbekannt.
Legen Sie die Position des Testpfads mit der Umgebungsvariablen ACTS_TESTPATH
oder mit dem Flag -tp
/--testpaths
in der Befehlszeile fest. Der Wert kann eine Liste von Verzeichnissen sein.
ACTS-Testklassen
Das ACTS muss wissen, welche Testklassen ausgeführt werden sollen. Dies kann ein regulärer Ausdruck oder eine Liste von Testklassennamen sein.
Verwenden Sie zum Festlegen dieses Werts 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. Beispiel: SampleTest
muss in SampleTest.py
gefunden werden.
ACTS-Logpfad
ACTS muss einen anderen Speicherort als STDOUT haben, in den Logs geschrieben werden können. ACTS schreibt vollständige Debugging-Logs mit Daten, mit denen Sie feststellen können, warum einige Tests fehlschlagen. Um Unordnung zu vermeiden, schreibt ACTS diese Logs nicht in STDOUT.
Verwenden Sie zum Festlegen des Logpfads die Umgebungsvariable ACTS_LOGPATH
oder das Flag -lp
/--logpath
in der Befehlszeile.
ACTS-Konfigurationspfad
Um den Test durchzuführen, muss ACTS wissen, welche Testumgebung vorhanden ist. Die ACTS-Konfiguration enthält alle Geräte in der Testumgebung sowie alle speziellen Test- oder Umgebungsparameter, die möglicherweise erforderlich sind. Legen Sie diesen Wert mit -c
/--config
in der Befehlszeile fest.
Wenn die Konfiguration mehrere Testbeds enthält, führt ACTS die Tests für jedes Prüffeld aus. Wenn Sie den Test nur für ein einzelnes testbed in der Liste ausführen möchten, verwenden Sie das Befehlszeilenargument -tb/--testbed <NAME>
.
Beispiel für eine lokale Workstation
Die meisten ACTS-Nutzer entwickeln mit einem einzelnen Android-Repository-Zweig und haben eine ähnliche Einrichtung wie diese:
# 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-Nutzer in mehreren Zweigen ausgeführt werden, führen sie ACTS häufig über das 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
Testbeds konfigurieren
Die ACTS-Konfigurationsdatei enthält alle erforderlichen 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 die testbed-my_testbed
mit einem einzelnen testbed-Wert erstellt. Das zweite Testbed: another_testbed
hat eine spezielle Controllerkonfiguration, die die Informationen für eine Liste von Android-Geräten enthält. Diese Geräte werden in einer Liste von Geräten unter self.android_devices
gespeichert. Wenn ein testbed kein AndroidDevice
-Objekt angibt, löst eine Testklasse, die ein AndroidDevice
-Objekt erwartet, eine Ausnahme aus. Eine vollständige Liste der unterstützten Controller-Konfigurationen, die in ACTS enthalten sind, finden Sie in der Liste unter /acts/framework/acts/controllers/
.
Alle anderen Werte (die keine besonderen Werte sind, die im obigen Abschnitt erwähnt wurden) werden in self.user_params
als Wörterbuch gespeichert. Hier können Sie Umgebungs- oder Testinformationen speichern, z. B. ob sich Smartphones in einer Umgebung mit Messdaten befinden oder wie lange Daten für einen Test erfasst werden sollen.
Sonderfälle für AndroidDevice
Wenn Sie mehrere Geräte mit unterschiedlichen Eigenschaften haben möchten, gibt es bei AndroidDevice
einige Sonderfälle.
JSON-Konfigurationsformat
Alle Schlüssel/Wert-Paare im folgenden JSON-Beispiel sind auf das entsprechende AndroidDevice
-Objekt festgelegt. Wenn mit der Konfiguration versucht wird, einen im Attribut AndroidDevice
definierten Parameter zu überschreiben, wird ControllerError
ausgelöst.
"AndroidDevice": [{"serial": "XXXXXX", "label": "publisher"},
{"serial": "YYYYYY", "label": "subscriber", "user_parameter_1": "anything"}]
Im Testskript können Sie dann mithilfe einer Filterfunktion das richtige Gerät abrufen und auf zusätzliche Parameter aus dem Geräteobjekt zugreifen:
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
Der folgende Parameter ist optional:
adb_logcat_param
: Ein String, der an den Befehladb logcat
zum Erfassen von ADB-Logs angehängt wird. Standardmäßig wirdadb logcat -v threadtime -b all
verwendet. Wennadb_logcat_param
festgelegt ist, wird der Abschnitt-b all
überschrieben. Wenn Sie beispielsweiseadb_logcat_param
auf-b radio
setzen, wird der Befehl inadb logcat -v threadtime -b radio
geändert.