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

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

为测试运行者配置设置

要运行自定义测试套件,测试运行者必须根据他们想要运行的测试套件配置其设置。设置是根据位于<device-tester-extract-location>/configs/folder。如果需要,测试运行者还必须设置 AWS 凭证,IDT 将用于连接到 AWS 云。

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

配置 device.json

这些区域有:device.json文件包含有关运行测试的设备的信息(例如,IP 地址、登录信息、操作系统和 CPU 体系结构)。

测试运行者可以使用以下模板提供此信息。device.json文件位于<device-tester-extract-location>/configs/folder。

[ { "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 上下文使用devicePool.features查询,或从状态机上下文使用pool.features查询。

features.name

功能名称。

features.value

支持的要素值。

features.configs

功能的配置设置(如果需要)。

features.config.name

配置设置的名称。

features.config.value

支持的设置值。

devices

池中要测试的设备阵列。至少需要一台设备。

devices.id

用户定义的测试的设备的唯一标识符。

connectivity.protocol

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

目前唯一支持的值是sshuart用于物理设备,以及dockerDocker 容器。

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状态。

或者,您可以使用错误处理代码报告错误设备类型的测试失败。

(可选)配置用户数据 .json

这些区域有:userdata.json文件包含测试套件所需的任何其他信息,但未在device.json文件。此文件的格式取决于userdata_scheme.jsonfile在测试套件中定义。如果您是测试编写者,请确保将此信息提供给将运行您编写的测试套件的用户。

(可选)配置资源 .json

这些区域有:resource.json文件包含有关将用作资源设备的任何设备的信息。资源设备是测试被测设备的某些功能所需的设备。例如,要测试设备的蓝牙功能,您可以使用资源设备来测试设备是否可以成功连接到该设备。资源设备是可选的,您可以根据需要需要任意数量的资源设备。作为测试编写者,您可以使用测试 .json 文件来定义测试所需的资源设备功能。测试运行者然后使用resource.json文件来提供具有所需功能的资源设备池。请确保将此信息提供给将运行您编写的测试套件的用户。

测试运行者可以使用以下模板提供此信息。resource.json文件位于<device-tester-extract-location>/configs/folder。

[ { "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

可选。包含设备支持的功能的数组。此字段中所需的信息在测试 .json 文件,并确定要运行哪些测试以及如何运行这些测试。如果测试套件不需要任何功能,则不需要此字段。

features.name

功能名称。

features.version

功能版本。

features.jobSlots

设置指示可同时使用该设备的测试次数。默认值为 1

devices

池中要测试的设备阵列。至少需要一台设备。

devices.id

用户定义的测试的设备的唯一标识符。

connectivity.protocol

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

目前唯一支持的值是sshuart用于物理设备,以及dockerDocker 容器。

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 时适用。

(可选)配置 .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_IDAWS_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/folder。

{ "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 时适用。