本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为测试运行程序配置设置
要运行自定义测试套件,测试运行程序必须根据要运行的测试套件来配置其设置。根据位于
文件夹中的 JSON 配置文件模板指定设置。如果需要,测试运行程序还必须设置 IDT 用于连接到 AWS 云的 AWS 凭证。
<device-tester-extract-location>
/configs/
作为测试编写者,您需要配置这些文件以调试您的测试套件。您必须提供测试运行程序的说明,以便它们可以根据需要配置以下设置来运行测试套件。
配置 device.json
文件包含有关运行测试的设备的信息(例如,IP 地址、登录信息、操作系统和 CPU 架构)。device.json
测试运行程序可以使用位于 device.json
文件夹中的以下模板
文件提供此信息。
<device-tester-extract-location>
/configs/
[ { "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 合作伙伴设备目录中列出您的主板,您在此处指定的 SKU 必须与您在列表过程中使用的 SKU 相匹配。
features
-
可选。包含设备支持的功能的数组。设备功能是您在测试套件中配置的用户定义的值。您必须为测试运行程序提供有关要包含在
device.json
文件中的特征名称和值的信息。例如,如果要测试用作其他设备的 MQTT 服务器的设备,您可以配置测试逻辑以验证名为MQTT_QOS
的功能的特定支持级别。 测试运行程序提供此功能名称,并将功能值设置为其设备支持的 QOS 级别。您可以使用 查询从 IDT context (IDT 上下文)devicePool.features
检索提供的信息,也可以使用 查询从状态机上下文pool.features
检索提供的信息。features.name
-
功能的名称。
features.value
-
支持的功能值。
features.configs
-
功能的配置设置(如果需要)。
features.config.name
-
配置设置的名称。
features.config.value
-
支持的设置值。
devices
-
池中要测试的设备数组。至少需要一个设备。
devices.id
-
用户定义的测试的设备的唯一标识符。
connectivity.protocol
-
用于与此设备通信的通信协议。池中的每个设备必须使用相同的协议。
目前,唯一支持的值对于物理设备为
ssh
和uart
,对于 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
设置为docker
. 时适用。 connectivity.containerUser
-
可选。要在容器中使用的用户的名称。默认值为 Dockerfile 中提供的用户。
默认值是 22。
此属性仅在
connectivity.protocol
设置为docker
. 时适用。
注意 要检查测试运行程序是否为测试配置了不正确的设备连接,您可以从状态机上下文中检索
pool.Devices[0].Connectivity.Protocol
,并将其与处于Choice
状态的预期值进行比较。如果使用的协议不正确,则使用LogMessage
状态输出消息并转换为Fail
状态。或者,您可以使用错误处理代码来报告设备类型不正确时的测试失败。
(可选)配置 userdata.json
文件包含测试套件所需的任何其他信息,但 userdata.json
文件中未指定这些信息。device.json
此文件的格式取决于测试套件中定义的 userdata_scheme.json 文件。如果您是测试编写者,请确保向将运行您编写的测试套件的用户提供此信息。
(可选)配置 resource.json
文件包含有关将用作资源设备的任何设备的信息。resource.json
资源设备是测试所测试设备的特定功能所需的设备。例如,要测试设备的蓝牙功能,您可以使用资源设备测试设备是否可以成功连接到设备。资源设备是可选的,您可以根据需要需要任意数量的资源设备。作为测试编写者,您可以使用
test.json 文件来定义测试所需的资源设备功能。然后,测试运行程序使用 resource.json
文件提供具有所需功能的资源设备池。确保您向将运行您编写的测试套件的用户提供此信息。
测试运行程序可以使用位于 resource.json
文件夹中的以下模板
文件提供此信息。
<device-tester-extract-location>
/configs/
[ { "id": "
<pool-id>
", "features": [ { "name": "<feature-name>
", "version": "<feature-value>
", "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
和uart
,对于 Docker 容器为docker
。 connectivity.ip
-
测试的设备 IP 地址。
此属性仅在
connectivity.protocol
设置为ssh
. 时适用。 connectivity.port
-
可选。用于 SSH 连接的端口号。
默认值是 22。
此属性仅在
connectivity.protocol
设置为ssh
. 时适用。 connectivity.auth
-
连接的身份验证信息。
此属性仅在
connectivity.protocol
设置为ssh
. 时适用。 connectivity.serialPort
-
可选。设备连接到的串行端口。
此属性仅在
connectivity.protocol
设置为uart
. 时适用。 connectivity.containerId
-
所测试的 Docker 容器的容器 ID 或名称。
此属性仅在
connectivity.protocol
设置为docker
. 时适用。 connectivity.containerUser
-
可选。要在容器中使用的用户的名称。默认值为 Dockerfile 中提供的用户。
默认值是 22。
此属性仅在
connectivity.protocol
设置为docker
. 时适用。
(可选)配置 config.json
文件包含 IDT 的配置信息。config.json
通常,测试运行程序不需要修改此文件,除非为 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 凭证,测试运行程序在位于 auth
文件夹的 config.json
文件中编辑
部分。
<device-tester-extract-location>
/configs/
{ "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
. 时适用。