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

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

为测试运行器配置设置

要运行自定义测试套件,测试运行器必须根据他们要运行的测试套件配置设置。设置是根据位于该 <device-tester-extract-location>/configs/ 文件夹中的配置文件模板指定的。如果需要,测试运行器还必须设置 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>", "pairedResource": "<device-id>", //used for no-op protocol "connectivity": { "protocol": "ssh | uart | docker | no-op", // ssh "ip": "<ip-address>", "port": <port-number>, "publicKeyPath": "<public-key-path>", "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 合作伙伴设备目录中列出您的主板,在此处指定的 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

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

devices.pairedResource

用户定义的资源设备的唯一标识符。使用 no-op 连接协议测试设备时,此值是必需的。

connectivity.protocol

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

当前,支持的值只包括适用于物理设备的 sshuart、适用于 Docker 容器的 docker 以及适用于设备的 no-op,这些设备与 IDT 主机没有直接连接,但需要将资源设备作为物理中间件才能与主机通信。

对于无操作设备,您可以在 devices.pairedResource 中配置资源设备 ID。您还必须在 resource.json 文件中指定此 ID。已配对的设备必须是与待测设备进行物理配对的设备。IDT 识别并连接到配对的资源设备后,根据 test.json 文件中描述的功能,IDT 将不会连接到其他资源设备。

connectivity.ip

测试的设备 IP 地址。

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

connectivity.port

可选。用于 SSH 连接的端口号。

默认值为 22。

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

connectivity.publicKeyPath

可选。用于验证待测设备连接的公有密钥的完整路径。如果指定 publicKeyPath,IDT 会在与待测设备建立 SSH 连接时验证设备的公有密钥。如果未指定此值,IDT 将创建 SSH 连接,但不验证设备的公有密钥。

我们强烈建议您指定公有密钥的路径,并使用安全的方法来获取此公有密钥。对于基于标准命令行的 SSH 客户端,known_hosts 文件中提供了公有密钥。如果您指定单独的公有密钥文件,则该文件必须使用与 known_hosts 文件相同的格式,即 ip-address key-type public-key

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>, "publicKeyPath": "<public-key-path>", "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.publicKeyPath

可选。用于验证待测设备连接的公有密钥的完整路径。如果指定 publicKeyPath,IDT 会在与待测设备建立 SSH 连接时验证设备的公有密钥。如果未指定此值,IDT 将创建 SSH 连接,但不验证设备的公有密钥。

我们强烈建议您指定公有密钥的路径,并使用安全的方法来获取此公有密钥。对于基于标准命令行的 SSH 客户端,known_hosts 文件中提供了公有密钥。如果您指定单独的公有密钥文件,则该文件必须使用与 known_hosts 文件相同的格式,即 ip-address key-type public-key

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 Device Tester 会收集使用情况指标并将其提交给 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 时适用。