AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Didacticiel : Développer une suite de tests IDT simple
Une suite de tests combine les éléments suivants :
-
Exécutables de test contenant la logique de test
-
Fichiers de configuration JSON qui décrivent la suite de tests
Ce didacticiel vous montre comment utiliser IDT pourAWS IoT Greengrasspour développer une suite de tests Python contenant un seul cas de test. Dans ce didacticiel, vous allez réaliser les étapes suivantes :
Prérequis
Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :
-
Configuration requise de l'ordinateur hôte
-
Dernière version deAWS IoTDevice Tester
-
Python
3.7 ou version ultérieure Pour vérifier la version de Python installée sur votre ordinateur, exécutez la commande suivante :
python3 --version
Sous Windows, si l'utilisation de cette commande renvoie une erreur, utilisez
python --version
à la place. Si le numéro de version renvoyé est 3.7 ou supérieur, exécutez la commande suivante dans un terminal Powershell pour définirpython3
comme alias pourpython
commande.Set-Alias -Name "python3" -Value "python"
Si aucune information de version n'est renvoyée ou si le numéro de version est inférieur à 3,7, suivez les instructions deTéléchargement de Python
Pour installer Python 3.7+. Pour plus d'informations, consultez le .Documentation Python . -
Pour vérifier que
urllib3
est installé correctement, exécutez la commande suivante :python3 -c 'import urllib3'
Si
urllib3
n'a pas encore été installé, exécutez la commande suivante pour l'installer :python3 -m pip install urllib3
-
-
Exigences relatives aux dispositifs
-
Un appareil doté d'un système d'exploitation Linux et d'une connexion réseau au même réseau que votre ordinateur hôte.
Nous vous recommandons d'utiliser unRaspberry Pi
avec Raspberry Pi OS. Veillez à configurerSSH sur votre Raspberry Pi pour pouvoir se connecter à distance.
-
Création d'un répertoire de suite de tests
IDT sépare logiquement les cas de test en groupes de tests au sein de chaque suite de tests. Chaque scénario de test doit se trouver à l'intérieur d'un groupe de tests. Pour ce didacticiel, créez un dossier appeléMyTestSuite_1.0.0
et créez l'arborescence de répertoires suivante dans ce dossier :
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
Créez des fichiers de configuration JSON
Votre suite de tests doit contenir ce qui suit :Fichiers de configuration JSON :
Fichiers JSON requis
suite.json
-
Contient des informations à propos de la suite de tests. Consultez Configurer suite.json.
group.json
-
Contient des informations à propos d'un groupe de tests. Vous devez créer un
group.json
pour chaque groupe de tests de votre suite de tests. Consultez Configurer group.json. test.json
-
Contient des informations à propos d'un scénario de test. Vous devez créer un
test.json
pour chaque cas de test de votre suite de tests. Consultez Configurer test.json.
-
Dans
MyTestSuite_1.0.0/suite
, créez unsuite.json
File avec la structure suivante :{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
Dans
MyTestSuite_1.0.0/myTestGroup
, créez ungroup.json
File avec la structure suivante :{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
Dans
MyTestSuite_1.0.0/myTestGroup/myTestCase
, créez untest.json
File avec la structure suivante :{ "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" ] } } }
L'arborescence du répertoire de votreMyTestSuite_1.0.0
folder devrait ressembler à ce qui suit :
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
Obtenez le SDK client IDT
Vous utilisez leKit SDK client IDTpour permettre à IDT d'interagir avec l'appareil testé et de signaler les résultats des tests. Pour ce didacticiel, vous allez utiliser la version Python du SDK.
De la
, copiez le dossier<device-tester-extract-location>
/sdks/python/idt_client
dans votre dossierMyTestSuite_1.0.0/suite/myTestGroup/myTestCase
folder.
Pour vérifier que le kit SDK a bien été copié, exécutez la commande suivante.
cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'
Créer l'exécutable du cas de test
Les exécutables de scénario de test contiennent la logique de test que vous voulez exécuter. Une suite de tests peut contenir plusieurs exécutables de cas de test. Pour ce didacticiel, vous allez créer un seul exécutable de cas de test.
-
Créez le fichier de la suite de tests.
Dans
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
, créez unmyTestCase.py
Fichier comportant le contenu suivant :from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
Utilisez les fonctions SDK client pour ajouter la logique de test suivante à votre
myTestCase.py
dans le fichier:-
Exécutez une commande SSH sur l'appareil testé.
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() -
Envoyez le résultat du test à 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()
-
Configuration des informations sur les appareils pour IDT
Configurez les informations de votre appareil pour qu'IDT puisse exécuter le test. Vous devez mettre à jour ladevice.json
modèle situé dans le
dossier contenant les informations suivantes.<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>
" } } } } ] } ]
Dansdevices
, fournissez les informations suivantes :
id
-
Un identificateur unique défini par l'utilisateur pour votre appareil.
connectivity.ip
-
Adresse IP de votre appareil.
connectivity.port
-
Facultatif. Numéro de port à utiliser pour les connexions SSH à votre appareil.
connectivity.auth
-
Informations d'authentification pour la connexion.
Cette propriété s'applique uniquement si
connectivity.protocol
est défini surssh
.connectivity.auth.method
-
Méthode d'authentification utilisée pour accéder à un appareil sur le protocole de connectivité donné.
Les valeurs prises en charge sont :
-
pki
-
password
-
connectivity.auth.credentials
-
Informations d'identification utilisées pour l'authentification.
connectivity.auth.credentials.user
-
Le nom d'utilisateur utilisé pour se connecter à votre appareil.
connectivity.auth.credentials.privKeyPath
-
Chemin complet à la clé privée utilisée pour se connecter à votre appareil.
Cette valeur s'applique uniquement si
connectivity.auth.method
est défini surpki
. devices.connectivity.auth.credentials.password
-
Mot de passe utilisé pour se connecter à votre appareil.
Cette valeur s'applique uniquement si
connectivity.auth.method
est défini surpassword
.
Note
Spécifiez privKeyPath
uniquement si method
est défini sur pki
.
Spécifiez password
uniquement si method
est défini sur password
.
Exécutez la suite de tests
Une fois que vous avez créé votre suite de tests, vous devez vous assurer qu'elle fonctionne comme prévu. Effectuez les étapes suivantes pour exécuter la suite de tests avec votre pool de périphériques existant.
-
Copiez votre
MyTestSuite_1.0.0
folder in
.<device-tester-extract-location>
/tests -
Exécutez les commandes suivantes :
cd
<device-tester-extract-location>
/bin ./devicetester_[linux | mac | win_x86-64]
run-suite --suite-id MyTestSuite
IDT exécute votre suite de tests et diffuse les résultats vers la console. Lorsque le test est terminé, les informations suivantes s'affichent :
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
Dépannage
Utilisez les informations suivantes pour résoudre les problèmes liés à la réalisation du didacticiel.
Le cas de test ne s'exécute pas correctement
Si le test ne s'exécute pas correctement, IDT diffuse les journaux d'erreurs vers la console, ce qui peut vous aider à résoudre le problème de l'exécution du test. Avant de vérifier les journaux d'erreurs, vérifiez les points suivants :
-
Le kit SDK client IDT se trouve dans le dossier approprié, comme décrit dansCette étape.
-
Vous rencontrez tous lesexigencespour ce didacticiel.
Impossible de se connecter à l'appareil testé
Vérifiez les paramètres suivants :
-
Votre
device.json
contient l'adresse IP, le port et les informations d'authentification correctes. -
Vous pouvez vous connecter à votre appareil via SSH à partir de votre ordinateur hôte.