AWS IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1 维护策略。在此日期之后,将 AWS IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 AWS IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,这样可以添加重要的新功能并支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为测试运行者配置设置
要运行自定义测试套件,测试运行者必须根据他们要运行的测试套件配置设置。设置是根据位于该
文件夹中的 JSON 配置文件模板指定的。如果需要,测试运行者还必须设置 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 设备目录中列出您的主板,在此处指定的 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
-
用于与此设备通信的通信协议。池中的每台设备都必须使用相同的协议。
目前,唯一支持的值,对于物理设备为
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
文件提供具有所需功能的资源设备池。请务必将此信息提供给将运行您编写的测试套件的用户。
测试运行者可以使用位于
文件夹中的以下模板 <device-tester-extract-location>
/configs/resource.json
文件来提供此信息。
[ { "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.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
时适用。
(可选)配置 config.json
config.json
文件包含 IDT 的配置信息。通常,测试运行者无需修改此文件,除非提供他们的 IDT AWS 用户凭证和 AWS 区域(可选)。如果提供了具有所需权限的 AWS 凭证,则 AWS IoT 设备测试人员会收集使用情况指标并将其提交给 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
时适用。