Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到Amazon IoT Greengrass Version 2,它补充说重要的新功能和支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为测试运行者配置设置设置
要运行自定义测试套件,测试运行者必须根据他们想要运行的测试套件配置自己的设置。设置是根据位于
folder。如果需要,测试跑步者还必须设置AmazonIDT 将用来连接到Amazon云。<device-tester-extract-location>
/configs/
作为测试作者,您需要将这些文件配置为调试测试套件. 您必须向测试运行者提供说明,以便他们可以根据需要配置以下设置来运行测试套件。
配置 device.json
这些区域有:device.json
文件包含有关运行测试的设备的信息(例如,IP 地址、登录信息、操作系统和 CPU 体系结构)。
测试运行者可以使用以下模板提供这些信息:device.json
位于中的文件
folder。<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 用于跟踪符合条件的设备。
注意
如果需要在 Amazon 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文件测试套件中定义的。如果您是测试作者,请确保向将运行您编写的测试套件的用户提供此信息。
(可选)配置资源 .json
这些区域有:resource.json
文件包含有关将用作资源设备的任何设备的信息。资源设备是测试受测设备的某些功能所需的设备。例如,要测试设备的蓝牙功能,可以使用资源设备来测试设备是否可以成功连接到它。资源设备是可选的,您可以根据需要多个资源设备。作为测试作家,你使用test.json 文件以定义测试所需的资源设备功能。然后测试跑步者使用resource.json
文件以提供具有所需功能的资源设备池。确保向将运行您编写的测试套件的用户提供此信息。
测试运行者可以使用以下模板提供这些信息:resource.json
位于中的文件
folder。<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.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 的配置信息。通常,测试运行者不需要修改此文件,除了提供他们的AmazonIDT 的用户凭据,也可以选择Amazon区域。如果Amazon提供了具有所需权限的凭据Amazon IoT设备测试程序收集使用情况指标并向Amazon. 这是一种可选功能,用于改进 IDT 功能。有关更多信息,请参阅 IDT 用量指标。
测试跑步者可以配置他们的Amazon使用以下方法之一使用凭证:
-
凭证文件
IDT 使用与 Amazon CLI 相同的凭证文件。有关更多信息,请参阅配置和凭证文件。
凭证文件的位置因您使用的操作系统而异:
-
macOS、Linux:
~/.aws/credentials
-
Windows:
C:\Users\
UserName
\.aws\credentials
-
-
环境变量
环境变量是由操作系统维护且由系统命令使用的变量。在 SSH 会话期间定义的变量在该会话关闭后不可用。IDT 可以使用
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
要存储的环境变量Amazon证书要在 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>
配置AmazonIDT 凭证,测试运行者编辑auth
部分中的config.json
位于中的文件
folder。<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
-
可选。这些区域有:Amazon测试套件将使用的区域。如果未设置,则测试套件将使用每个测试套件中指定的默认区域。
auth.method
-
IDT 用来检索的方法Amazon凭证。支持的值为
file
从凭证文件检索凭证,environment
以使用环境变量检索凭据。 auth.credentials.profile
-
要从凭证文件使用的凭证配置文件。此属性仅在
auth.method
设置为file
时适用。