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

Amazon IoT Greengrass Version 1在 2023 年 6 月 30 日之前,不再接收功能更新,只会收到安全补丁和错误修复。有关更多信息,请参阅 。Amazon IoT Greengrass V1维护政策. 强烈建议您迁移到Amazon IoT Greengrass Version 2,它补充说重要新功能对其他平台的支持.

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

为测试运行者配置设置设置

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

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

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

注意

如果需要在 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文件测试套件中定义的。如果您是测试作者,请确保向将运行您编写的测试套件的用户提供此信息。

(可选)配置资源 .json

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

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

[ { "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 的配置信息。通常,测试运行者不需要修改此文件,除了提供他们的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_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>

配置AmazonIDT 凭证,测试运行者编辑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

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

auth.method

IDT 用来检索的方法Amazon凭证。支持的值为file从凭证文件检索凭证,environment以使用环境变量检索凭据。

auth.credentials.profile

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