AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Tutorial: Entwickeln Sie eine einfache IDT-Testsuite
Eine Testsuite kombiniert Folgendes:
-
Testen Sie ausführbare Dateien, die die Testlogik enthalten
-
JSON-Konfigurationsdateien, die die Testsuite beschreiben
In diesem Tutorial erfahren Sie, wie IDT für verwendet wirdAWS IoT Greengrassum eine Python-Testsuite zu entwickeln, die einen einzigen Testfall enthält. In diesem Tutorial führen Sie die folgenden Schritte aus:
Voraussetzungen
Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
-
-Host-Anforderungen
-
Neueste Version vonAWS IoTDevice Tester
-
Python
3.7 oder höher Führen Sie den folgenden Befehl aus, um die auf dem Computer installierte Python zu überprüfen:
python3 --version
Wenn die Verwendung dieses Befehls unter Windows einen Fehler zurückgibt, verwenden Sie
python --version
Stattdessen geschieht Folgendes. Wenn die zurückgegebene Versionsnummer 3.7 oder höher ist, führen Sie den folgenden Befehl in einem Powershell-Terminal aus, um festzulegenpython3
als Alias fürpython
befehl.Set-Alias -Name "python3" -Value "python"
Wenn keine Versionsinformationen zurückgegeben werden oder die Versionsnummer kleiner als 3.7 ist, befolgen Sie die Anweisungen unterPython
So installieren Sie Python 3.7+. Weitere Informationen finden Sie im .Python-Dokumentation aus. -
So überprüfen Sie das
urllib3
Führen Sie den folgenden Befehl aus:python3 -c 'import urllib3'
Wenn
urllib3
Führen Sie den folgenden Befehl aus, um es zu installieren:python3 -m pip install urllib3
-
-
Anforderungen an Speichergeräte
-
Ein Gerät mit einem Linux-Betriebssystem und einer Netzwerkverbindung zum selben Netzwerk wie Ihr Host-Computer.
Wir empfehlen Ihnen, zu verwendenRaspberry Pi
mit Raspberry Pi OS. Stellen Sie sicher, dass Sie die EinrichtungSSH Verwenden Sie Ihren Raspberry Pi aus, um eine Remoteverbindung zu ermöglichen.
-
Erstellen Sie ein Test Suite-Verzeichnis
IDT unterteilt Testfälle logisch in Testgruppen innerhalb jeder Testsuite. Jeder Testfall muss sich innerhalb einer Testgruppe befinden. Erstellen Sie für dieses Tutorial einen -Ordner mit dem NamenMyTestSuite_1.0.0
und erstellen Sie den folgenden Verzeichnisbaum in diesem Ordner:
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
Erstellen von JSON-Konfigurationsdateien
Ihre Testsuite muss Folgendes enthaltenJSON-Konfigurationsdateien:
Erforderliche JSON-Dateien
suite.json
-
Enthält Informationen zu den Testsuite. Siehe Konfigurieren Sie suite.json.
group.json
-
Enthält Informationen zu einer Testgruppe. Sie müssen eine erstellen
group.json
-Datei für jede Testgruppe in Ihrer Testsuite. Siehe Konfigurieren von group.json. test.json
-
Enthält Informationen zu einem Testfall. Sie müssen eine erstellen
test.json
-Datei für jeden Testfall in Ihrer Testsuite. Siehe Konfigurieren Sie test.json.
-
In der
MyTestSuite_1.0.0/suite
-Ordner erstellensuite.json
Datei mit folgender Struktur:{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
In der
MyTestSuite_1.0.0/myTestGroup
-Ordner erstellengroup.json
Datei mit folgender Struktur:{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
In der
MyTestSuite_1.0.0/myTestGroup/myTestCase
-Ordner erstellentest.json
Datei mit folgender Struktur:{ "id": "MyTestCase", "title": "My Test Case", "details": "This is my test case.", "execution": { "timeout": 300000, "linux": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "mac": { "cmd": "python3", "args": [ "myTestCase.py" ] }, "win": { "cmd": "python3", "args": [ "myTestCase.py" ] } } }
Der Verzeichnisbaum für IhreMyTestSuite_1.0.0
folder sollte jetzt wie folgt aussehen:
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
Holen Sie sich das IDT-Client-SDK
Nutzen Sie dieIDT-Client-SDKum IDT zu ermöglichen, mit dem zu testenden Gerät zu interagieren und Testergebnisse zu melden. Für dieses Tutorial verwenden Sie die Python-Version des SDK.
Aus
, kopieren Sie den<device-tester-extract-location>
/sdks/python/idt_client
Ordner zu IhremMyTestSuite_1.0.0/suite/myTestGroup/myTestCase
folder.
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob das SDK erfolgreich kopiert wurde.
cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'
Erstellen Sie die ausführbare Testfalldatei
Die ausführbaren Testfalldateien enthalten die zu ausführende Testlogik. Eine Testsuite kann mehrere ausführbare Testfalldateien enthalten. Für dieses Tutorial erstellen Sie nur eine ausführbare Testfalldatei.
-
Erstellen Sie die Test-Suite-Datei.
In der
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
-Ordner erstellenmyTestCase.py
Datei mit folgendem Inhalt:from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
Verwenden Sie Client-SDK-Funktionen, um Ihre folgende Testlogik hinzuzufügen
myTestCase.py
file:-
Führen Sie auf dem zu testenden Gerät einen SSH-Befehl aus.
from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client()
# Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout)
if __name__ == "__main__": main() -
Senden Sie das Testergebnis an IDT.
from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() # Create an execute on device request exec_req = ExecuteOnDeviceRequest(ExecuteOnDeviceCommand("echo 'hello world'")) # Run the command exec_resp = client.execute_on_device(exec_req) # Print the standard output print(exec_resp.stdout)
# Create a send result request sr_req = SendResultRequest(TestResult(passed=True)) # Send the result client.send_result(sr_req)
if __name__ == "__main__": main()
-
Geräteinformationen für IDT konfigurieren
Konfigurieren Sie Ihre Geräteinformationen, damit IDT den Test ausführen kann. Sie müssen diedevice.json
Vorlage befindet sich im
Ordner mit den folgenden Informationen.<device-tester-extract-location>
/configs
[ { "id": "pool", "sku": "N/A", "devices": [ { "id": "
<device-id>
", "connectivity": { "protocol": "ssh", "ip": "<ip-address>
", "port": "<port>
", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>
", "privKeyPath": "/path/to/private/key
", "password": "<password>
" } } } } ] } ]
In derdevices
-Objekt geben Sie die folgenden Informationen an:
id
-
Eine benutzerdefinierte eindeutige Kennung für das Gerät.
connectivity.ip
-
Die IP-Adresse Ihres Geräts.
connectivity.port
-
Optional. Die Portnummer, die für SSH-Verbindungen zu Ihrem Gerät verwendet werden soll.
connectivity.auth
-
Authentifizierungsinformationen für die Verbindung.
Diese Eigenschaft gilt nur, wenn
connectivity.protocol
aufssh
festgelegt ist.connectivity.auth.method
-
Die Authentifizierungsmethode, die für den Zugriff über ein bestimmtes Verbindungsprotokoll auf ein Gerät verwendet wird.
Unterstützte Werte sind:
-
pki
-
password
-
connectivity.auth.credentials
-
Die für die Authentifizierung verwendeten Anmeldeinformationen.
connectivity.auth.credentials.user
-
Der Benutzername, mit dem Sie sich bei Ihrem Gerät angemeldet haben.
connectivity.auth.credentials.privKeyPath
-
Der vollständige Pfad zum privaten Schlüssel, der für die Anmeldung bei Ihrem Gerät verwendet wird.
Dieser Wert gilt nur, wenn
connectivity.auth.method
aufpki
festgelegt ist. devices.connectivity.auth.credentials.password
-
Das Passwort für die Anmeldung bei Ihrem Gerät.
Dieser Wert gilt nur, wenn
connectivity.auth.method
aufpassword
festgelegt ist.
Anmerkung
Geben Sie privKeyPath
nur an, wenn method
auf pki
gesetzt ist.
Geben Sie password
nur an, wenn method
auf password
gesetzt ist.
Führen Sie die Testsuite aus
Nachdem Sie Ihre Testsuite erstellt haben, möchten Sie sicherstellen, dass sie wie erwartet funktioniert. Führen Sie die folgenden Schritte aus, um die Testsuite mit Ihrem vorhandenen Gerätepool auszuführen.
-
Kopiere dein
MyTestSuite_1.0.0
folder in
aus.<device-tester-extract-location>
/tests -
Führen Sie die folgenden Befehle aus:
cd
<device-tester-extract-location>
/bin ./devicetester_[linux | mac | win_x86-64]
run-suite --suite-id MyTestSuite
IDT führt Ihre Testsuite aus und streamt die Ergebnisse zur Konsole. Wenn der Test abgeschlossen ist, sehen Sie die folgenden Informationen:
time="2020-10-19T09:24:47-07:00" level=info msg=Using pool: pool time="2020-10-19T09:24:47-07:00" level=info msg=Using test suite "MyTestSuite_1.0.0" for execution time="2020-10-19T09:24:47-07:00" level=info msg=b'hello world\n' suiteId=MyTestSuite groupId=myTestGroup testCaseId=myTestCase deviceId=my-device executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:47-07:00" level=info msg=All tests finished. executionId=9a52f362-1227-11eb-86c9-8c8590419f30 time="2020-10-19T09:24:48-07:00" level=info msg= ========== Test Summary ========== Execution Time: 1s Tests Completed: 1 Tests Passed: 1 Tests Failed: 0 Tests Skipped: 0 ---------------------------------- Test Groups: myTestGroup: PASSED ---------------------------------- Path to IoT Device Tester Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/awsiotdevicetester_report.xml Path to Test Execution Logs: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/logs Path to Aggregated JUnit Report: /path/to/devicetester/results/9a52f362-1227-11eb-86c9-8c8590419f30/MyTestSuite_Report.xml
Fehlerbehebung
Verwenden Sie die folgenden Informationen für die Lösung von Problemen beim Ausführen des Tutorials.
Testfall wird nicht erfolgreich ausgeführt
Wenn der Test nicht erfolgreich ausgeführt wird, streamt IDT die Fehlerprotokolle an die Konsole, die Ihnen bei der Fehlerbehebung beim Testlauf helfen können. Überprüfen Sie vor dem Überprüfen der Fehlerprotokolle Folgendes:
-
Das IDT-Client-SDK befindet sich im richtigen Ordner wie unterDieser Schrittaus.
-
Du triffst alleVoraussetzungenfür dieses Tutorial.
Kann keine Verbindung zu dem zu testenden Gerät hergestellt werden
Überprüfen Sie Folgendes:
-
Ihre
device.json
enthält die richtige IP-Adresse, den Port und die richtigen Authentifizierungsinformationen. -
Sie können von Ihrem Host-Computer aus über SSH eine Verbindung zu Ihrem Gerät herstellen.