AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Tutorial: Sviluppa una semplice suite di test IDT
Una suite di test combina quanto segue:
-
Test eseguibili che contengono la logica di test
-
File di configurazione JSON che descrivono la suite di test
Questo tutorial mostra come utilizzare IDT perAWS IoT Greengrassper sviluppare una suite di test Python che contiene un singolo test case. In questo tutorial verranno completate le fasi seguenti:
Prerequisiti
Per completare questo tutorial, è necessario quanto segue:
-
Requisiti del computer host
-
Ultima versione diAWS IoTDevice Tester
-
Pitone
3.7 o versioni successive Per controllare la versione di Python installata sul computer, eseguire il seguente comando:
python3 --version
In Windows, se l'utilizzo di questo comando restituisce un errore, utilizzare
python --version
invece. Se il numero di versione restituito è 3.7 o superiore, eseguire il seguente comando in un terminale Powershell per impostarepython3
come alias per lepython
comando.Set-Alias -Name "python3" -Value "python"
Se non vengono restituite informazioni sulla versione o se il numero di versione è inferiore a 3.7, seguire le istruzioni riportate inPython
per installare Python 3.7+. Per ulteriori informazioni, consulta la .Documentazione Python . -
Per verificare che
urllib3
è installato correttamente, eseguire il seguente comando:python3 -c 'import urllib3'
Se
urllib3
Non è installato, eseguire il seguente comando per installarlo:python3 -m pip install urllib3
-
-
Requisiti per il dispositivo
-
Dispositivo con sistema operativo Linux e connessione di rete alla stessa rete del computer host.
Ti consigliamo di utilizzare unRaspberry Pi
Con sistema operativo Raspberry Pi. Assicurati di configurareSSH sul tuo Raspberry Pi per connetterti in remoto.
-
Creare una directory di suite di test
IDT separa logicamente i test case in gruppi di test all'interno di ogni suite di test. Ogni test case deve essere all'interno di un gruppo di test. Per questo tutorial, crea una cartella chiamataMyTestSuite_1.0.0
e crea il seguente albero di directory all'interno di questa cartella:
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
Creare file di configurazione JSON
La suite di test deve contenere quanto segueFile di configurazione JSON:
File JSON richiesti
suite.json
-
Contiene informazioni sulla suite di test. Per informazioni, consulta Impostare suite.json.
group.json
-
Contiene informazioni su un gruppo di test. Devi creare un
group.json
file per ciascun gruppo di test nella suite di test. Per informazioni, consulta Impostare group.json. test.json
-
Contiene informazioni su un test case. Devi creare un
test.json
file per ogni test case nella tua suite di test. Per informazioni, consulta Impostare test.json.
-
Nella
MyTestSuite_1.0.0/suite
folder, crea unsuite.json
file con la struttura seguente:{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
Nella
MyTestSuite_1.0.0/myTestGroup
folder, crea ungroup.json
file con la struttura seguente:{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
Nella
MyTestSuite_1.0.0/myTestGroup/myTestCase
folder, crea untest.json
file con la struttura seguente:{ "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'albero delle directory per il tuoMyTestSuite_1.0.0
La cartella dovrebbe essere simile alla seguente:
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
Ottieni l'SDK client IDT
Utilizzi il pluginSDK client IDTper consentire a IDT di interagire con il dispositivo sottoposto a test e di segnalare i risultati del test. Per questo tutorial, utilizzerai la versione Python dell'SDK.
Dal
cartella, copia il<device-tester-extract-location>
/sdks/python/idt_client
cartella per il tuoMyTestSuite_1.0.0/suite/myTestGroup/myTestCase
folder.
Per verificare che l'SDK sia stato copiato correttamente, eseguire il comando seguente.
cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'
Creare l'eseguibile del test case
Gli eseguibili dei casi di test contengono la logica di test da eseguire. Una suite di test può contenere più eseguibili di test case. Per questo tutorial creerai un solo eseguibile del test case.
-
Crea il file della suite di test.
Nella
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
folder, crea unmyTestCase.py
file con i seguenti contenuti:from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
Utilizza le funzioni SDK client per aggiungere la seguente logica di test al tuo
myTestCase.py
file:-
Eseguire un comando SSH sul dispositivo sottoposto a 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() -
Invia il risultato del test a 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()
-
Configurare informazioni sul dispositivo per IDT
Configura le informazioni del dispositivo per IDT per eseguire il test. È necessario aggiornare il plugindevice.json
modello situato nel
cartella con le seguenti informazioni.<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>
" } } } } ] } ]
Nelladevices
opporsi, fornire le seguenti informazioni:
id
-
Un identificativo univoco definito dall'utente del dispositivo.
connectivity.ip
-
L'indirizzo IP del dispositivo.
connectivity.port
-
Facoltativo. Il numero di porta da utilizzare per le connessioni SSH al dispositivo.
connectivity.auth
-
Informazioni di autenticazione per la connessione.
Questa proprietà si applica solo se
connectivity.protocol
è impostata sussh
.connectivity.auth.method
-
Il metodo di autorizzazione utilizzato per accedere a un dispositivo con un determinato protocollo di connettività.
I valori supportati sono:
-
pki
-
password
-
connectivity.auth.credentials
-
Le credenziali utilizzate per l'autenticazione.
connectivity.auth.credentials.user
-
Il nome utente utilizzato per accedere al dispositivo.
connectivity.auth.credentials.privKeyPath
-
Il percorso completo alla chiave privata utilizzata per accedere al dispositivo.
Questo valore si applica solo se
connectivity.auth.method
è impostato supki
. devices.connectivity.auth.credentials.password
-
La password utilizzata per l'accesso al dispositivo.
Questo valore si applica solo se
connectivity.auth.method
è impostato supassword
.
Nota
Specificare privKeyPath
solo se method
è impostato su pki
.
Specificare password
solo se method
è impostato su password
.
Eseguire la suite di test
Dopo aver creato la suite di test, devi assicurarti che funzioni come previsto. Completa i seguenti passaggi per eseguire la suite di test con il pool di dispositivi esistente per farlo.
-
Copia il tuo
MyTestSuite_1.0.0
cartella in
.<device-tester-extract-location>
/tests -
Esegui i comandi seguenti:
cd
<device-tester-extract-location>
/bin ./devicetester_[linux | mac | win_x86-64]
run-suite --suite-id MyTestSuite
IDT esegue la suite di test e trasmette i risultati sulla console. Al termine dell'esecuzione del test, vengono visualizzate le seguenti informazioni:
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
Risoluzione dei problemi
Utilizza le informazioni seguenti per risolvere qualsiasi problema con il completamento del tutorial.
Il test case non viene eseguito correttamente
Se il test non viene eseguito correttamente, IDT trasmette i registri degli errori sulla console che possono aiutarti a risolvere il problema dell'esecuzione del test. Prima di controllare i registri degli errori, verifica quanto segue:
-
L'SDK client IDT si trova nella cartella corretta come descritto inIn questo passaggio.
-
Incontrate tutte leprerequisitiPer questo tutorial.
Impossibile connettersi al dispositivo sottoposto a test
Verificare quanto segue:
-
Il tuo
device.json
il file contiene l'indirizzo IP, la porta e le informazioni di autenticazione corretti. -
È possibile connettersi al dispositivo tramite SSH dal computer host.