为测试运行器配置设置 - 免费 RTOS

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

为测试运行器配置设置

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

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

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

注意

如果您想在 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

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

devices.pairedResource

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

connectivity.protocol

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

当前,唯一支持的值是ssh物理设备、docker Docker 容器以及no-op与IDT主机没有直接连接但需要资源设备作为物理中间件才能与主机通信的设备。uart

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

connectivity.ip

测试的设备 IP 地址。

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

connectivity.port

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

默认值为 22。

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

connectivity.publicKeyPath

可选。用于验证待测设备连接的公有密钥的完整路径。如果指定publicKeyPath,则会在设备与被测设备建立SSH连接时IDT验证其公钥。如果未指定此值,则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,则会在设备与被测设备建立SSH连接时IDT验证其公钥。如果未指定此值,则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。通常,测试运行者无需修改此文件,除非提供其 AWS 区域的 AWS IDT用户凭证(可选)。如果提供了具有所需权限的 AWS 证书,则 AWS IoT Device Tester 收集使用情况指标并将其提交给 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>

要为配置 AWS 凭据IDT,测试运行者可以编辑位于该<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 时适用。