設定測試執行程式的設定 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定測試執行程式的設定

要運行自定義測試套件,測試運行者必須根據要運行的測試套件配置其設置。設定是根據位於<device-tester-extract-location>/configs/資料夾中的組態檔案樣板來指定。如果需要,測試運行程序還必須設置 IDT 將用於連接到AWS雲的AWS憑據。

作為測試編寫者,您將需要配置這些文件來調試您的測試套件。您必須提供測試運行程序的說明,以便他們可以根據需要配置以下設置以運行測試套件。

設定 device.json

device.json文件包含有關運行測試的設備的信息(例如,IP 地址,登錄信息,操作系統和 CPU 架構)。

測試運行者可以使用位於該文件<device-tester-extract-location>/configs/夾中的以下模板device.json文件提供此信息。

[ { "id": "<pool-id>", "sku": "<pool-sku>", "features": [ { "name": "<feature-name>", "value": "<feature-value>", "configs": [ { "name": "<config-name>", "value": "<config-value>" } ], } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

如下所述,包含值的所有欄位皆為必要:

id

使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。

sku

可唯一識別測試裝置的英數字元值。SKU 用於追蹤合格的裝置。

注意

如果您想要在 AWS Partner 裝置目錄中列出您的電路板,在此處指定的 SKU 必須符合您在列名程序中使用的 SKU。

features

選用。包含裝置支援功能的陣列。裝置功能是您在測試套件中設定的使用者定義值。您必須向測試執行者提供有關要包含在device.json檔案中的功能名稱和值的資訊。例如,如果您要測試裝置作為其他裝置的 MQTT 伺服器運作,您可以設定測試邏輯,以驗證名為的功能的特定支援層級。MQTT_QOS測試運行者提供此功能名稱,並將功能值設置為其設備支持的 QOS 級別。您可以使用查詢從 IDT 內容中擷取提供的資訊,或從devicePool.features查詢的測試協調器內容中擷取提供的資訊。pool.features

features.name

特徵的名稱。

features.value

支援的特徵值。

features.configs

功能的組態設定 (如果需要)。

features.config.name

組態設定的名稱。

features.config.value

支援的設定值。

devices

池中要測試的一系列設備。至少需要一個裝置。

devices.id

使用者定義的唯一識別符,用於識別要測試的裝置。

connectivity.protocol

用來與此裝置通訊的通訊協定。池中的每個設備都必須使用相同的協議。

目前,唯一支援的值是sshuart體裝置和 docker Docker 容器。

connectivity.ip

要測試之裝置的 IP 位址。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.port

選用。用於 SSH 連線的連接埠號碼。

預設值為 22。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth

連線的驗證資訊。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth.method

用來透過指定的連線通訊協定存取裝置的驗證方法。

支援的值如下:

  • pki

  • password

connectivity.auth.credentials

用於驗證的燈入資料。

connectivity.auth.credentials.password

用於登入要測試裝置的密碼。

只有當 connectivity.auth.method 設為 password 時,才會套用此值。

connectivity.auth.credentials.privKeyPath

用來登入待測裝置之私有金鑰的完整路徑。

只有當 connectivity.auth.method 設為 pki 時,才會套用此值。

connectivity.auth.credentials.user

登入要測試之裝置的使用者名稱。

connectivity.serialPort

選用。裝置所連接的序列埠。

只有當 connectivity.protocol 設為 uart 時,才會套用此屬性。

connectivity.containerId

要測試之 Docker 容器的容器 ID 或名稱。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.containerUser

選用。容器內的使用者對使用者的名稱。預設值是 Docker 檔案中提供的使用者。

預設值為 22。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

注意

要檢查測試運行程序是否為測試配置了不正確的設備連接,您可以pool.Devices[0].Connectivity.Protocol從測試 Orchestrator 上下文中檢索並將其與Choice狀態中的預期值進行比較。如果使用了不正確的協議,則使用LogMessage狀態和轉換到狀態打印消息。Fail

或者,您可以使用錯誤處理代碼來報告錯誤設備類型的測試失敗。

(選擇性) 設定使用者資料 .json

userdata.json文件包含測試套件所需但未在device.json文件中指定的任何其他信息。這個文件的格式取決於在測試套userdata_scheme.json件中定義的文件。如果您是測試編寫者,請確保將此信息提供給將運行您編寫的測試套件的用戶。

(選擇性) 設定資源 .json

resource.json文件包含有關將用作資源設備的任何設備的信息。資源設備是測試被測設備的某些功能所需的設備。例如,若要測試裝置的藍牙功能,您可以使用資源裝置來測試您的裝置是否能成功連線。資源設備是可選的,您可以根據需要任意數量的資源設備。作為測試編寫者,您可以使用 test.json 文件來定義測試所需的資源設備功能。然後,測試運行程序使用該resource.json文件提供具有所需功能的資源設備池。請務必將此資訊提供給將執行您撰寫之測試套件的使用者。

測試運行者可以使用位於該文件<device-tester-extract-location>/configs/夾中的以下模板resource.json文件提供此信息。

[ { "id": "<pool-id>", "features": [ { "name": "<feature-name>", "version": "<feature-version>", "jobSlots": <job-slots> } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

如下所述,包含值的所有欄位皆為必要:

id

使用者定義的英數字元 ID,可唯一識別裝置的集合,稱為「裝置集區」。屬於同一個集區的裝置必須有相同的硬體。當您執行測試套件,集區中的裝置會用來將工作負載平行化。多個裝置用來執行不同的測試。

features

選用。包含裝置支援功能的陣列。此字段中所需的信息在測試套件的 test.json 文件中定義,並確定要運行哪些測試以及如何運行這些測試。如果測試套件不需要任何功能,則不需要此字段。

features.name

特徵的名稱。

features.version

功能版本。

features.jobSlots

設定以指出可同時使用裝置的測試數目。預設值為 1

devices

池中要測試的一系列設備。至少需要一個裝置。

devices.id

使用者定義的唯一識別符,用於識別要測試的裝置。

connectivity.protocol

用來與此裝置通訊的通訊協定。池中的每個設備都必須使用相同的協議。

目前,唯一支援的值是sshuart體裝置和 docker Docker 容器。

connectivity.ip

要測試之裝置的 IP 位址。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.port

選用。用於 SSH 連線的連接埠號碼。

預設值為 22。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth

連線的驗證資訊。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.auth.method

用來透過指定的連線通訊協定存取裝置的驗證方法。

支援的值如下:

  • pki

  • password

connectivity.auth.credentials

用於驗證的燈入資料。

connectivity.auth.credentials.password

用於登入要測試裝置的密碼。

只有當 connectivity.auth.method 設為 password 時,才會套用此值。

connectivity.auth.credentials.privKeyPath

用來登入待測裝置之私有金鑰的完整路徑。

只有當 connectivity.auth.method 設為 pki 時,才會套用此值。

connectivity.auth.credentials.user

登入要測試之裝置的使用者名稱。

connectivity.serialPort

選用。裝置所連接的序列埠。

只有當 connectivity.protocol 設為 uart 時,才會套用此屬性。

connectivity.containerId

要測試之 Docker 容器的容器 ID 或名稱。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

connectivity.containerUser

選用。容器內的使用者對使用者的名稱。預設值是 Docker 檔案中提供的使用者。

預設值為 22。

只有當 connectivity.protocol 設為 ssh 時,才會套用此屬性。

(可選)配置

config.json檔案包含 IDT 的組態資訊。通常,測試運行者不需要修改此文件,除非為 IDT 提供AWS用戶憑據以及可選AWS地區提供用戶憑據。如果提供具有必要權限的AWS認證,則AWS IoT Device Tester會收集使用狀況測量結果並提交給。AWS這是一項選擇加入功能,用於改善 IDT 功能。如需詳細資訊,請參閱 IDT 使用量測量結果

測試運行者可以通過以下方式之一配置其AWS憑據:

  • 憑證檔案

    IDT 會使用與 AWS CLI 相同的登入資料檔案。如需詳細資訊,請參閱組態與登入資料檔案

    登入資料檔案的位置會有所不同,取決於您使用的作業系統:

    • macOS, Linux: ~/.aws/credentials

    • Windows:C:\Users\UserName\.aws\credentials

  • 環境變數

    環境變數是由作業系統維護且由系統命令使用的變數。在 SSH 工作階段關閉後,無法使用在 SSH 工作階段期間定義的變數。IDT 可以使用AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY環境變數來儲存AWS認證

    若要在 Linux、macOS 或 Unix 上設定這些變數,請使用 export

    export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

    若要在 Windows 上設定這些變數,請使用 set

    set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

要配置 IDT 的AWS憑據,測試運行程序編輯文件<device-tester-extract-location>/configs/夾中config.json文件中的auth部分。

{ "log": { "location": "logs" }, "configFiles": { "root": "configs", "device": "configs/device.json" }, "testPath": "tests", "reportPath": "results", "awsRegion": "<region>", "auth": { "method": "file | environment", "credentials": { "profile": "<profile-name>" } } } ]

如下所述,包含值的所有欄位皆為必要:

注意

此檔案中的所有路徑都是相對於 < device-tester-extract-location > 來定義的。

log.location

< device-tester-extract-location > 中記錄檔資料夾的路徑。

configFiles.root

包含組態檔案之資料夾的路徑。

configFiles.device

device.json檔案的路徑。

testPath

包含測試套件之資料夾的路徑。

reportPath

IDT 執行測試套件後,將包含測試結果的資料夾路徑。

awsRegion

選用。測試套件將使用的AWS區域。如果未設置,則測試套件將使用每個測試套件中指定的默認區域。

auth.method

IDT 用來擷取AWS認證的方法。支援的值是file從認證檔案擷取認證,environment以及使用環境變數擷取認證。

auth.credentials.profile

要從身份證明檔案使用的身份證明設定檔。只有當 auth.method 設為 file 時,才會套用此屬性。