为测试运行者配置设置 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 Amazon IoT Greengrass V1 维护策略。在此日期之后,将 Amazon IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 Amazon IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 Amazon IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为测试运行者配置设置

要运行自定义测试套件,测试运行者必须根据他们要运行的测试套件配置设置。设置是根据位于该 <device-tester-extract-location>/configs/ 文件夹中的 JSON 配置文件模板指定的。如果需要,测试运行者还必须设置 IDT 用于连接 Amazon 云的 Amazon 凭证。

作为测试编写者,您需要配置这些文件来调试您的测试套件。您必须向测试运行者提供说明,以便他们可以根据需要配置以下设置来运行您的测试套件。

配置 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 用于跟踪符合条件的设备。

注意

如果需要在 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

用于与此设备通信的通信协议。池中的每台设备都必须使用相同的协议。

目前,唯一支持的值,对于物理设备为 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 设置为 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

用于与此设备通信的通信协议。池中的每台设备都必须使用相同的协议。

目前,唯一支持的值,对于物理设备为 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 设置为 docker 时适用。

connectivity.containerUser

可选。容器内用户对用户的名称。默认值为 Dockerfile 中提供的用户。

默认值为 22。

此属性仅在 connectivity.protocol 设置为 docker 时适用。

(可选)配置 config.json

config.json 文件包含 IDT 的配置信息。通常,测试运行者无需修改此文件,除非提供他们的 IDT Amazon 用户凭证和 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_IDAWS_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>

要配置 IDT 的 Amazon 凭证,测试运行者需要编辑 <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

可选。测试套件将使用的 Amazon 区域。如果未设置,则测试套件将使用每个测试套件中指定的默认区域。

auth.method

IDT 用于检索 Amazon 凭证的方法。支持的值是用于从凭证文件中检索凭证的 file,以及使用环境变量检索凭证的 environment

auth.credentials.profile

要从凭证文件中使用的凭证配置文件。此属性仅在 auth.method 设置为 file 时适用。