AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Kembangkan rangkaian tes IDT sederhana
Sebuah rangkaian pengujian menggabungkan berikut:
-
Executable tes yang berisi logika tes
-
File konfigurasi JSON yang menggambarkan rangkaian tes
Tutorial ini menunjukkan cara menggunakan IDT untuk AWS IoT Greengrass untuk mengembangkan rangkaian tes Python yang berisi kasus tes tunggal. Dalam tutorial ini, Anda akan melakukan langkah-langkah berikut:
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut ini:
-
Persyaratan komputer host
-
Versi terbaru dari AWS IoT Penguji Perangkat
-
Python
3.7 atau yang lebih baru Untuk memeriksa versi Python yang diinstal pada komputer Anda, jalankan perintah berikut:
python3 --version
Pada Windows, jika penggunaan perintah ini menghasilkan kesalahan, gunakan
python --version
sebagai gantinya. Jika nomor versi yang dikembalikan adalah 3,7 atau lebih besar, jalankan perintah berikut di terminal Powershell untuk mengaturpython3
sebagai alias untuk perintahpython
.Set-Alias -Name "python3" -Value "python"
Jika tidak ada informasi versi yang dikembalikan atau jika nomor versi kurang dari 3,7, ikuti petunjuk di Mengunduh Py
untuk menginstal Python 3.7+. Untuk informasi selengkapnya, lihat dokumentasi Python . -
Untuk memverifikasi bahwa
urllib3
diinstal dengan benar, jalankan perintah berikut:python3 -c 'import urllib3'
Jika
urllib3
belum terinstal, gunakan perintah berikut untuk menginstalnya:python3 -m pip install urllib3
-
-
Persyaratan perangkat
-
Perangkat dengan sistem operasi Linux dan koneksi jaringan ke jaringan yang sama dengan komputer host Anda.
Kami menyarankan agar Anda menggunakan Raspberry Pi
dengan OS Raspberry Pi. Pastikan Anda mengatur SSH pada Raspberry Pi Anda untuk terhubung secara jarak jauh ke sana.
-
Buat direktori rangkaian tes
IDT secara logis memisahkan uji kasus ke dalam grup uji dalam setiap rangkaian tes. Setiap uji kasus harus berada di dalam grup uji. Untuk tutorial ini, buat folder bernama MyTestSuite_1.0.0
dan buat pohon direktori berikut dalam folder ini:
MyTestSuite_1.0.0 └── suite └── myTestGroup └── myTestCase
Buat file konfigurasi JSON
Rangkaian tes Anda harus berisi file konfigurasi JSON yang diperlukan berikut ini:
File JSON yang dibutuhkan
suite.json
-
Berisi informasi tentang rangkaian pengujian. Lihat Konfigurasikan suite.json.
group.json
-
Berisi informasi tentang grup uji. Anda harus membuat file
group.json
untuk setiap grup uji di rangkaian tes Anda. Lihat Konfigurasikan group.json. test.json
-
Berisi informasi tentang grup uji. Anda harus membuat file
test.json
untuk setiap grup uji di rangkaian tes Anda. Lihat Konfigurasikan test.json.
-
Di folder
MyTestSuite_1.0.0/suite
, buat filesuite.json
dengan struktur berikut:{ "id": "MyTestSuite_1.0.0", "title": "My Test Suite", "details": "This is my test suite.", "userDataRequired": false }
-
Di folder
MyTestSuite_1.0.0/myTestGroup
, buat filegroup.json
dengan struktur berikut:{ "id": "MyTestGroup", "title": "My Test Group", "details": "This is my test group.", "optional": false }
-
Di folder
MyTestSuite_1.0.0/myTestGroup/myTestCase
, buat filetest.json
dengan struktur berikut:{ "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" ] } } }
Pohon direktori untuk folder MyTestSuite_1.0.0
Anda sekarang akan terlihat seperti berikut ini:
MyTestSuite_1.0.0 └── suite ├── suite.json └── myTestGroup ├── group.json └── myTestCase └── test.json
Dapatkan SDK klien IDT
Anda menggunakan SDK Klien IDT untuk memungkinkan IDT berinteraksi dengan perangkat yang sedang diuji dan melaporkan hasil pengujian. Untuk tutorial ini, Anda akan menggunakan versi Python dari SDK.
Dari folder
, salin folder <device-tester-extract-location>
/sdks/python/idt_client
ke folder MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
Anda.
Untuk memverifikasi bahwa SDK berhasil disalin, jalankan perintah berikut.
cd MyTestSuite_1.0.0/suite/myTestGroup/myTestCase python3 -c 'import idt_client'
Buat executable uji kasus
Executable uji kasus berisi logika tes yang ingin Anda jalankan. Sebuah rangkaian tes dapat berisi beberapa executable uji kasus. Untuk tutorial ini, Anda hanya akan membuat satu executable uji kasus.
-
Buat file rangkaian test.
Di folder
MyTestSuite_1.0.0/suite/myTestGroup/myTestCase
, buat filemyTestCase.py
dengan konten berikut:from idt_client import * def main(): # Use the client SDK to communicate with IDT client = Client() if __name__ == "__main__": main()
-
Gunakan fungsi SDK klien untuk menambahkan logika uji berikut ke file
myTestCase.py
Anda:-
Jalankan perintah SSH pada perangkat yang diuji.
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() -
Kirim hasil tes ke 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()
-
Konfigurasi informasi perangkat untuk IDT
Konfigurasi informasi perangkat Anda untuk IDT untuk menjalankan tes. Anda harus memperbarui templat device.json
yang terletak di folder
dengan informasi berikut.<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>
" } } } } ] } ]
Di objek devices
, berikan informasi berikut:
id
-
Pengenal unik yang ditetapkan pengguna untuk perangkat Anda.
connectivity.ip
-
Alamat IP perangkat Anda.
connectivity.port
-
Tidak wajib. Nomor port yang digunakan untuk koneksi SSH ke perangkat Anda.
connectivity.auth
-
Informasi autentikasi untuk koneksi tersebut.
Properti ini hanya berlaku jika
connectivity.protocol
diatur kessh
.connectivity.auth.method
-
Metode autentikasi yang digunakan untuk mengakses perangkat melalui protokol konektivitas yang diberikan.
Nilai yang didukung adalah:
-
pki
-
password
-
connectivity.auth.credentials
-
Kredensial yang digunakan untuk autentikasi.
connectivity.auth.credentials.user
-
Nama pengguna yang digunakan untuk masuk ke perangkat Anda.
connectivity.auth.credentials.privKeyPath
-
Jalur lengkap ke kunci pribadi yang digunakan untuk masuk ke perangkat Anda.
Nilai ini hanya berlaku jika
connectivity.auth.method
diatur kepki
. devices.connectivity.auth.credentials.password
-
Kata sandi yang digunakan untuk masuk ke perangkat Anda.
Nilai ini hanya berlaku jika
connectivity.auth.method
diatur kepassword
.
catatan
Tentukan privKeyPath
hanya jika method
diatur ke pki
.
Tentukan password
hanya jika method
diatur ke password
.
Jalankan rangkaian tes
Setelah Anda membuat rangkaian tes Anda, Anda ingin memastikan bahwa rangkaian tes itu berfungsi seperti yang diharapkan. Selesaikan langkah-langkah berikut untuk menjalankan rangkaian pengujian dengan kolam perangkat yang sudah ada untuk melakukannya.
-
Salin folder
MyTestSuite_1.0.0
Anda ke dalam
.<device-tester-extract-location>
/tests -
Jalankan perintah berikut:
cd
<device-tester-extract-location>
/bin ./devicetester_[linux | mac | win_x86-64]
run-suite --suite-id MyTestSuite
IDT menjalankan rangkaian tes Anda dan mengalirkan hasilnya ke konsol. Ketika tes telah selesai berjalan, Anda akan melihat informasi berikut:
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
Pemecahan Masalah
Gunakan informasi berikut untuk membantu menyelesaikan masalah dengan menyelesaikan tutorial.
Uji kasus tidak berjalan dengan sukses
Jika tes tidak berjalan sukses, IDT akan mengalirkan log kesalahan ke konsol yang dapat membantu Anda memecahkan masalah uji coba. Sebelum Anda memeriksa log kesalahan, verifikasi hal berikut:
-
SDK Klien IDT berada dalam folder yang benar seperti yang dijelaskan dalam langkah ini.
-
Pastikan Anda memenuhi semua prasyarat untuk tutorial ini.
Tidak dapat menyambung ke perangkat yang sedang diuji
Verifikasi hal berikut:
-
File
device.json
Anda berisi alamat IP, port, dan informasi autentikasi yang benar. -
Anda dapat terhubung ke perangkat Anda melalui SSH dari komputer host Anda.