Definir configurações para os executores de teste - Gratuito RTOS

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 os executores de teste

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

Como escritor de teste, será necessário configurar esses arquivos para depurar seu pacote de teste. É preciso fornecer instruções aos executores de teste para que eles possam definir as seguintes configurações conforme necessário para executar seus pacotes de testes.

Configurar device.json

O device.json arquivo 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 CPU arquitetura).

Os executores de teste podem fornecer essas informações usando o seguinte arquivo device.json de modelo 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>", "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>", } } ] } ]

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. O SKU é usado para rastrear dispositivos qualificados.

nota

Se você quiser listar sua placa no Catálogo de dispositivos AWS parceiros, o que SKU você especificar aqui deve corresponder ao SKU que você usa no processo de listagem.

features

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

features.name

O nome do recurso.

features.value

Os valores dos recursos compatíveis.

features.configs

Definições de configuração, se necessárias, para o recurso.

features.config.name

O nome do ajuste de configurações.

features.config.value

Os valores de configuração compatíveis.

devices

Uma matriz 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.

devices.pairedResource

Um identificador exclusivo, definido pelo usuário, para um dispositivo de recursos. Este valor é necessário quando você testa dispositivos usando o protocolo de conectividade no-op.

connectivity.protocol

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

Atualmente, os únicos valores suportados são ssh e uart para dispositivos físicos, docker para contêineres Docker e no-op para dispositivos que não têm uma conexão direta com a máquina IDT host, mas precisam de um dispositivo de recursos como middleware físico para se comunicarem com a máquina host.

Para dispositivos não operacionais, você configura o ID do dispositivo de recurso em devices.pairedResource. Também é preciso especificar esse ID no arquivo resource.json. O dispositivo emparelhado deve ser um dispositivo fisicamente emparelhado com o dispositivo em teste. Depois de IDT identificar e se conectar ao dispositivo de recursos emparelhado, não se IDT conectará a outros dispositivos de recursos de acordo com os recursos descritos no test.json arquivo.

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 SSH conexões.

O valor padrão é 22.

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

connectivity.publicKeyPath

Opcional. O caminho completo para a chave pública usada para autenticar conexões com o dispositivo em teste. Quando você especifica opublicKeyPath, IDT valida a chave pública do dispositivo ao estabelecer uma SSH conexão com o dispositivo em teste. Se esse valor não for especificado, IDT cria uma SSH conexão, mas não valida a chave pública do dispositivo.

É altamente recomendável especificar o caminho para a chave pública e use um método seguro para buscar essa chave pública. Para SSH clientes baseados em linha de comando padrão, a chave pública é fornecida no known_hosts arquivo. Se especificar um arquivo de chave pública separado, esse arquivo deverá usar o mesmo formato do arquivo known_hosts , ou seja, ip-address key-type public-key.

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 para o usuário 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 o pool.Devices[0].Connectivity.Protocol do contexto da máquina de estado e compará-la 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, é possível usar o código de tratamento de erros para relatar uma falha no teste para tipos de dispositivos incorretos.

(Opcional) Configurar userdata.json

O arquivo userdata.json contém qualquer informação adicional exigida por um pacote de teste, mas não está especificada no arquivo device.json. O formato deste arquivo depende do arquivo userdata_scheme.json definido no pacote de teste. Se for um redator de testes, certifique-se de fornecer essas informações aos usuários que executarão os pacotes de testes escritos.

(Opcional) Configurar 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 dispositivos necessários para testar determinados recursos de um dispositivo em teste. Por exemplo, para testar a capacidade Bluetooth de um dispositivo, é possível usar um dispositivo de recurso para testar se seu dispositivo consegue se conectar com êxito. Os dispositivos de recursos são opcionais e pode exigir quantos dispositivos de recursos precisar. Como redator de teste, é possível usar o arquivo test.json para definir os recursos do dispositivo de recursos necessários para um teste. Em seguida, os executores de teste usam o arquivo resource.json para fornecer um pool de dispositivos de recursos com os recursos necessários. Certifique-se de fornecer essas informações aos usuários que executarão os pacotes de testes escritos.

Os executores de teste podem fornecer essas informações usando o seguinte arquivo resource.json de modelo 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>, "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>", } } ] } ]

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 recursos compatíveis com o dispositivo. As informações necessárias neste campo são definidas nos arquivos test.json no pacote de teste e determinam quais testes devem ser executados e como executá-los. Se o pacote de teste não exigir nenhum recurso, este campo não será obrigatório.

features.name

O nome do recurso.

features.version

A versão do recurso.

features.jobSlots

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

devices

Uma matriz 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 uart para 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 SSH conexões.

O valor padrão é 22.

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

connectivity.publicKeyPath

Opcional. O caminho completo para a chave pública usada para autenticar conexões com o dispositivo em teste. Quando você especifica opublicKeyPath, IDT valida a chave pública do dispositivo ao estabelecer uma SSH conexão com o dispositivo em teste. Se esse valor não for especificado, IDT cria uma SSH conexão, mas não valida a chave pública do dispositivo.

É altamente recomendável especificar o caminho para a chave pública e use um método seguro para buscar essa chave pública. Para SSH clientes baseados em linha de comando padrão, a chave pública é fornecida no known_hosts arquivo. Se especificar um arquivo de chave pública separado, esse arquivo deverá usar o mesmo formato do arquivo known_hosts , ou seja, ip-address key-type public-key.

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 para o usuário 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 config.json arquivo contém informações de configuração doIDT. Normalmente, os executores de teste não precisarão modificar esse arquivo, exceto para fornecer suas credenciais de AWS usuário eIDT, opcionalmente, para uma região. AWS Se AWS as credenciais com as permissões necessárias forem fornecidas, AWS IoT Device Tester coleta e envia métricas de uso para o. AWS Esse é um recurso opcional e é usado para melhorar a IDT funcionalidade. Para obter mais informações, consulte Envie métricas IDT de uso.

Os executores de teste podem configurar suas AWS credenciais de uma das seguintes formas:

  • Arquivo de credenciais

    IDTusa o mesmo arquivo de credenciais do 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 SSH sessão não estão disponíveis após o encerramento da sessão. IDTpode usar as variáveis de AWS_SECRET_ACCESS_KEY ambiente AWS_ACCESS_KEY_ID e para armazenar AWS credenciais

    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 AWS as credenciaisIDT, os executores de teste editam a auth seção no config.json arquivo localizado na <device-tester-extract-location>/configs/ pasta.

{ "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 ao <device-tester-extract-location>.

log.location

O caminho para a pasta de registros 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 a função device.json.

testPath

O caminho para a pasta que contém pacotes de teste.

reportPath

O caminho para a pasta que conterá os resultados do teste após a IDT execução de uma suíte de testes.

awsRegion

Opcional. A AWS região que as suítes de teste usarão. Se não for definida, os pacotes de teste usarão a região padrão especificada em cada pacote de teste.

auth.method

O método IDT usado para recuperar AWS credenciais. Os valores aceitos são file recuperar credenciais de um arquivo de credenciais e recuperar credenciais environment 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.