本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定測試執行器的設定
若要執行自訂測試套件,測試執行器必須根據他們想要執行的測試套件來設定其設定。根據位於 資料夾中的組態檔案範本來指定設定。如有需要,測試執行器也必須設定 IDT 用來連線至 AWS 雲端的 AWS 登入資料。<device-tester-extract-location>/configs/
身為測試寫入器,您需要設定這些檔案來偵錯測試套件。您必須提供測試執行器的說明,以便他們可以視需要設定下列設定來執行您的測試套件。
設定 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 Device Catalog 中列出您的電路板,您在此處指定的 SKU 必須符合您在列出程序中使用的 SKU。
features-
選用。包含裝置支援功能的陣列。裝置功能是您在測試套件中設定的使用者定義值。您必須提供測試執行器有關要包含在
device.json檔案中的功能名稱和值的資訊。例如,如果您想要測試可做為其他裝置的 MQTT 伺服器運作的裝置,則可以設定測試邏輯來驗證名為 之功能的特定支援層級MQTT_QOS。測試執行器提供此功能名稱,並將功能值設定為其裝置支援的 QOS 層級。您可以從具有devicePool.features查詢的 IDT 內容,或從具有pool.features查詢的測試協調器內容擷取提供的資訊。features.name-
功能的名稱。
features.value-
支援的功能值。
features.configs-
如有需要,此功能的組態設定。
features.config.name-
組態設定的名稱。
features.config.value-
支援的設定值。
devices-
要測試之集區中的裝置陣列。至少需要一個裝置。
devices.id-
使用者定義的唯一識別符,用於識別要測試的裝置。
connectivity.protocol-
用來與此裝置通訊的通訊協定。集區中的每個裝置都必須使用相同的通訊協定。
目前,唯一支援的值是實體裝置的
ssh和 ,以及uartDocker 容器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-
選用。容器內使用者的名稱。預設值是 Dockerfile 中提供的使用者。
預設值為 22。
只有當
connectivity.protocol設為ssh時,才會套用此屬性。
注意
若要檢查測試執行器是否設定不正確的測試裝置連線,您可以從測試協調器內容
pool.Devices[0].Connectivity.Protocol擷取,並將其與Choice狀態中的預期值進行比較。如果使用不正確的通訊協定,則使用LogMessage狀態列印訊息並轉換為Fail狀態。或者,您可以使用錯誤處理程式碼來報告不正確裝置類型的測試失敗。
(選用) 設定 userdata.json
userdata.json 檔案包含測試套件所需的任何其他資訊,但未在device.json檔案中指定。此檔案的格式取決於測試套件中定義的userdata_scheme.json檔案。如果您是測試寫入器,請務必將此資訊提供給將執行您所寫入測試套件的使用者。
(選用) 設定 resource.json
resource.json 檔案包含將用作資源裝置的任何裝置的相關資訊。資源裝置是測試待測裝置的特定功能所需的裝置。例如,若要測試裝置的 Bluetooth 功能,您可以使用資源裝置來測試您的裝置是否能夠成功連線。資源裝置是選用的,您可以視需要要求任意數量的資源裝置。身為測試寫入器,您可以使用 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-
用來與此裝置通訊的通訊協定。集區中的每個裝置都必須使用相同的通訊協定。
目前,唯一支援的值是實體裝置的
ssh和 ,以及uartDocker 容器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-
選用。容器內使用者的名稱。預設值是 Dockerfile 中提供的使用者。
預設值為 22。
只有當
connectivity.protocol設為ssh時,才會套用此屬性。
(選用) 設定 config.json
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 工作階段期間定義的變數在該工作階段關閉後無法使用。IDT 可以使用
AWS_ACCESS_KEY_ID和AWS_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時,才會套用此屬性。