Definir configurações para executores de teste - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Definir configurações para executores de teste

Para executar conjuntos de testes personalizados, os executores de teste devem definir suas configurações com base no pacote de testes que desejam executar. As configurações são especificadas com base nos modelos de arquivo de configuração JSON localizados na pasta <device-tester-extract-location>/configs/. Se necessário, os executores de teste também devem configurar as credenciais da AWS que o IDT usará para se conectar à nuvem da AWS.

Como redator de testes, você precisará configurar esses arquivos para depurar seu pacote de testes. Você deve fornecer instruções aos executores de teste para que eles possam definir as configurações a seguir conforme necessário para executar seus conjuntos de testes.

Configurar device.json

O arquivo device.json contém informações sobre os dispositivos nos quais os testes são executados (por exemplo, endereço IP, informações de login, sistema operacional e arquitetura da CPU).

Os executores de teste podem fornecer essas informações usando o seguinte modelo de arquivo device.json localizado na pasta <device-tester-extract-location>/configs/.

[ { "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>", } } ] } ]

Todos os campos que contêm valores são necessários, conforme descrito aqui:

id

Um ID alfanumérico definido pelo usuário que identifica uma coleção de dispositivos chamada de grupo de dispositivos. Os dispositivos que pertencem a um grupo devem ter hardware idêntico. Quando um conjunto de testes é executado, os dispositivos do grupo são usados para paralelizar a carga de trabalho. Vários dispositivos são usados para executar testes diferentes.

sku

Um valor alfanumérico que identifica exclusivamente o dispositivo em teste. A SKU é usada para rastrear os dispositivos qualificados.

nota

Se você deseja listar sua placa no AWS Partner Device Catalog, a SKU especificada aqui deve corresponder à SKU que você usa no processo de oferta.

features

Opcional. Uma matriz que contém atributos compatíveis com o dispositivo. Os atributos do dispositivo são valores definidos pelo usuário que você configura em seu pacote de testes. Você deve fornecer aos executores de teste informações sobre os nomes e valores dos atributos a serem incluídos no arquivo device.json. Por exemplo, se você quiser testar um dispositivo que funciona como um servidor MQTT para outros dispositivos, poderá configurar sua lógica de teste para validar níveis específicos compatíveis com um atributo chamado MQTT_QOS. Os executores de teste fornecem esse nome de atributo e definem o valor do atributo para os níveis de QOS compatíveis com o dispositivo. Você pode recuperar as informações fornecidas do contexto do IDT com a consulta devicePool.features ou do contexto da máquina de estados com a consulta pool.features.

features.name

O nome do atributo.

features.value

Os valores do atributo compatível.

features.configs

Definições de configuração, se necessário, para o atributo.

features.config.name

O nome do conjunto de configurações.

features.config.value

Os valores de configuração compatíveis.

devices

Uma variedade de dispositivos no grupo a serem testados. Pelo menos um dispositivo é necessário.

devices.id

Um identificador exclusivo, definido pelo usuário, para o dispositivo que está sendo testado.

connectivity.protocol

O protocolo de comunicação usado para se comunicar com esse dispositivo. Cada dispositivo em um grupo deve usar o mesmo protocolo.

No momento, os únicos valores compatíveis são ssh e uartpara dispositivos físicos e docker para contêineres do Docker.

connectivity.ip

O endereço IP do dispositivo que está sendo testado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.port

Opcional. O número da porta a ser usada para as conexões SSH.

O valor padrão é 22.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.auth

Informações de autenticação da conexão.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.auth.method

O método de autenticação usado para acessar um dispositivo pelo protocolo de conectividade indicado.

Os valores compatíveis são:

  • pki

  • password

connectivity.auth.credentials

As credenciais usadas para autenticação.

connectivity.auth.credentials.password

A senha usada para fazer login no dispositivo que está sendo testado.

Esse valor se aplica somente se connectivity.auth.method estiver definido como password.

connectivity.auth.credentials.privKeyPath

O caminho completo para a chave privada usada para fazer login no dispositivo que está sendo testado.

Esse valor se aplica somente se connectivity.auth.method estiver definido como pki.

connectivity.auth.credentials.user

O nome de usuário para fazer login no dispositivo que está sendo testado.

connectivity.serialPort

Opcional. A porta serial à qual o dispositivo está conectado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como uart.

connectivity.containerId

O ID do contêiner ou o nome do contêiner do Docker que está sendo testado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como docker.

connectivity.containerUser

Opcional. O nome de usuário a ser usado dentro do contêiner. O valor padrão é o usuário fornecido no Dockerfile.

O valor padrão é 22.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como docker.

nota

Para verificar se os executores de teste configuram a conexão incorreta do dispositivo para um teste, você pode recuperar pool.Devices[0].Connectivity.Protocol do contexto da máquina de estados e compará-lo com o valor esperado em um estado Choice. Se um protocolo incorreto for usado, imprima uma mensagem usando o estado LogMessage e faça a transição para o estado Fail.

Como alternativa, você pode usar o código de processamento de erros para relatar uma falha no teste referente a tipos de dispositivos incorretos.

(Opcional) Configurar userdata.json

O arquivo userdata.json contém qualquer informação adicional que seja exigida por um pacote de testes, mas que não esteja especificada no arquivo device.json. O formato desse arquivo depende do arquivo userdata_scheme.json definido no pacote de testes. Se você é um escritor de testes, certifique-se de fornecer essas informações aos usuários que executarão os conjuntos de testes que você escreve.

(Opcional) Configure resource.json

O arquivo resource.json contém informações sobre todos os dispositivos que serão usados como dispositivos de recursos. Os dispositivos de recursos são necessários para testar determinadas capacidades de um dispositivo em teste. Por exemplo, para testar a capacidade Bluetooth de um dispositivo, você pode usar um dispositivo de recurso para testar se seu dispositivo consegue se conectar a ele com sucesso. Os dispositivos de recursos são opcionais, e você pode exigir quantos dispositivos de recursos forem necessários. Como redator de testes, você usa o arquivo test.json para definir os atributos do dispositivo de atributos necessários para um teste. Em seguida, os executores de teste usam o arquivo resource.json para fornecer um grupo de dispositivos de atributos contendo os atributos necessários. Certifique-se de fornecer essas informações aos usuários que executarão os conjuntos de testes que você escreve.

Os executores de teste podem fornecer essas informações usando o seguinte modelo de arquivo resource.json localizado na pasta <device-tester-extract-location>/configs/.

[ { "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>", } } ] } ]

Todos os campos que contêm valores são necessários, conforme descrito aqui:

id

Um ID alfanumérico definido pelo usuário que identifica uma coleção de dispositivos chamada de grupo de dispositivos. Os dispositivos que pertencem a um grupo devem ter hardware idêntico. Quando um conjunto de testes é executado, os dispositivos do grupo são usados para paralelizar a carga de trabalho. Vários dispositivos são usados para executar testes diferentes.

features

Opcional. Uma matriz que contém atributos compatíveis com o dispositivo. As informações necessárias nesse campo estão definidas nos arquivos test.json no pacote de testes e determinam quais testes devem ser executados e como executá-los. Se o pacote de testes não exigir nenhum atributo, esse campo não será obrigatório.

features.name

O nome do atributo.

features.version

A versão do atributo.

features.jobSlots

Configuração para indicar quantos testes podem usar o dispositivo simultaneamente. O valor padrão é 1.

devices

Uma variedade de dispositivos no grupo a serem testados. Pelo menos um dispositivo é necessário.

devices.id

Um identificador exclusivo, definido pelo usuário, para o dispositivo que está sendo testado.

connectivity.protocol

O protocolo de comunicação usado para se comunicar com esse dispositivo. Cada dispositivo em um grupo deve usar o mesmo protocolo.

No momento, os únicos valores compatíveis são ssh e uartpara dispositivos físicos e docker para contêineres do Docker.

connectivity.ip

O endereço IP do dispositivo que está sendo testado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.port

Opcional. O número da porta a ser usada para as conexões SSH.

O valor padrão é 22.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.auth

Informações de autenticação da conexão.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como ssh.

connectivity.auth.method

O método de autenticação usado para acessar um dispositivo pelo protocolo de conectividade indicado.

Os valores compatíveis são:

  • pki

  • password

connectivity.auth.credentials

As credenciais usadas para autenticação.

connectivity.auth.credentials.password

A senha usada para fazer login no dispositivo que está sendo testado.

Esse valor se aplica somente se connectivity.auth.method estiver definido como password.

connectivity.auth.credentials.privKeyPath

O caminho completo para a chave privada usada para fazer login no dispositivo que está sendo testado.

Esse valor se aplica somente se connectivity.auth.method estiver definido como pki.

connectivity.auth.credentials.user

O nome de usuário para fazer login no dispositivo que está sendo testado.

connectivity.serialPort

Opcional. A porta serial à qual o dispositivo está conectado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como uart.

connectivity.containerId

O ID do contêiner ou o nome do contêiner do Docker que está sendo testado.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como docker.

connectivity.containerUser

Opcional. O nome de usuário a ser usado dentro do contêiner. O valor padrão é o usuário fornecido no Dockerfile.

O valor padrão é 22.

Essa propriedade será aplicada somente se connectivity.protocol estiver definido como docker.

(Opcional) Configurar config.json

O arquivo config.json contém as informações de configuração para o IDT. Normalmente, os executores de teste não precisarão modificar esse arquivo, exceto para fornecer suas credenciais de usuário da AWS para o IDT e, opcionalmente, para uma região da AWS. Se as credenciais da AWS com as permissões necessárias forem fornecidas, o AWS IoT Device Tester coletará e enviará métricas de uso para a AWS. Esse atributo é opcional e usado para aprimorar a funcionalidade do IDT. Para obter mais informações, consulte Métricas de uso do IDT.

Os executores de teste podem configurar suas credenciais da AWS por meio de uma das maneiras a seguir:

  • Arquivo de credenciais

    O IDT usa o mesmo arquivo de credenciais que a AWS CLI. Para obter mais informações, consulte Arquivos de configuração e credenciais.

    O local do arquivo de credenciais varia de acordo com o sistema operacional que você está usando:

    • macOS, Linux: ~/.aws/credentials

    • Windows: C:\Users\UserName\.aws\credentials

  • Variáveis de ambiente

    As variáveis de ambiente são variáveis mantidas pelo sistema operacional e usadas pelos comandos do sistema. As variáveis definidas durante uma sessão SSH não estão disponíveis após o encerramento da sessão. O IDT pode usar as variáveis de ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY para armazenar credenciais da AWS

    Para definir essas variáveis no Linux, macOS ou Unix, use export:

    export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

    Para definir essas variáveis no Windows, use set:

    set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

Para configurar as credenciais da AWS para o IDT, os executores de teste editam a seção auth no arquivo config.json localizado na pasta <device-tester-extract-location>/configs/.

{ "log": { "location": "logs" }, "configFiles": { "root": "configs", "device": "configs/device.json" }, "testPath": "tests", "reportPath": "results", "awsRegion": "<region>", "auth": { "method": "file | environment", "credentials": { "profile": "<profile-name>" } } } ]

Todos os campos que contêm valores são necessários, conforme descrito aqui:

nota

Todos os caminhos nesse arquivo são definidos em relação a <device-tester-extract-location>.

log.location

O caminho para a pasta de logs no <device-tester-extract-location>.

configFiles.root

O caminho para a pasta que contém os arquivos de configuração.

configFiles.device

O caminho para o arquivo device.json.

testPath

O caminho para a pasta que contém conjuntos de testes.

reportPath

O caminho para a pasta que conterá os resultados do teste depois que o IDT executar um pacote de testes.

awsRegion

Opcional. A região da AWS que os conjuntos de testes usarão. Se não for definida, os conjuntos de testes usarão a região padrão especificada em cada um deles.

auth.method

O método que o IDT usa para recuperar credenciais da AWS. Os valores aceitos são file para recuperar credenciais de um arquivo de credenciais e environment para recuperar credenciais usando variáveis de ambiente.

auth.credentials.profile

O perfil de credenciais a ser usado no arquivo de credenciais. Essa propriedade será aplicada somente se auth.method estiver definido como file.