Configure los ajustes para los ejecutores de pruebas - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configure los ajustes para los ejecutores de pruebas

Para ejecutar conjuntos de pruebas personalizados, los ejecutores de pruebas deben configurar sus ajustes en función del conjunto de pruebas que desean ejecutar. Los ajustes se especifican en función de las plantillas del archivo de configuración JSON que se encuentran en la carpeta <device-tester-extract-location>/configs/. Si es necesario, los ejecutores de las pruebas también deben configurar las credenciales de AWS que IDT utilizará para conectarse a la nube AWS.

Como redactor de pruebas, necesitará configurar estos archivos para depurar su conjunto de pruebas. Debe proporcionar instrucciones a los ejecutores de pruebas para que puedan configurar los siguientes ajustes según sea necesario para ejecutar sus conjuntos de pruebas.

Configurar device.json

El archivo device.json contiene información sobre los dispositivos en los que se ejecutan las pruebas (por ejemplo, dirección IP, información de acceso, sistema operativo y arquitectura de la CPU).

Los ejecutores de pruebas pueden proporcionar esta información mediante el siguiente archivo device.json de plantilla que se encuentra en la carpeta <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 los campos que contienen valores son obligatorios tal y como se describe aquí:

id

Un ID alfanumérico definido por el usuario que identifica de forma única una colección de dispositivos que se conoce como grupo de dispositivos. Los dispositivos que pertenecen a un grupo deben tener idéntico hardware. Al ejecutar un conjunto de pruebas, los dispositivos del grupo se utilizan para paralelizar la carga de trabajo. Se utilizan varios dispositivos para ejecutar diferentes pruebas.

sku

Un valor alfanumérico que identifica de forma única el dispositivo a prueba. El SKU se utiliza para realizar un seguimiento de los dispositivos cualificados.

nota

Si desea enumerar la placa en el catálogo de dispositivos de AWS Partner, el SKU que especifique aquí debe coincidir con el SKU que utilice en el proceso de publicación.

features

Opcional. Una matriz que contenga las características compatibles del dispositivo. Las características del dispositivo son valores definidos por el usuario que se configuran en el conjunto de pruebas. Debe proporcionar a los participantes en las pruebas información sobre los nombres y valores de las características que desee incluir en el archivo device.json. Por ejemplo, si quiere probar un dispositivo que funciona como servidor MQTT para otros dispositivos, puede configurar la lógica de prueba para validar los niveles admitidos específicos para una característica denominada MQTT_QOS. Los ejecutores de pruebas proporcionan el nombre de esta característica y establecen el valor de la función en los niveles de QOS compatibles con su dispositivo. Puede recuperar la información proporcionada desde el contexto IDT con la consulta devicePool.features, o desde el contexto máquina de estado con la consulta pool.features.

features.name

El nombre de la característica.

features.value

Los valores de las características compatibles.

features.configs

Los ajustes de configuración de la característica, si son necesarios.

features.config.name

El nombre del ajuste de configuración.

features.config.value

Los valores de configuración admitidos.

devices

Un conjunto de dispositivos en el grupo a probar. Se requiere al menos un dispositivo.

devices.id

Un identificador único y definido por el usuario para el dispositivo que se está probando.

connectivity.protocol

El protocolo de comunicación que se usará para la comunicación con este dispositivo. Cada dispositivo de un grupo debe usar el mismo protocolo.

Actualmente, los únicos valores que se admiten son ssh y uart para dispositivos físicos, y docker para contenedores de Docker.

connectivity.ip

La dirección IP del dispositivo que se está probando.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.port

Opcional. El número de puerto a utilizar para las conexiones SSH.

El valor predeterminado es 22.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.auth

Información de autenticación para la conexión.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.auth.method

El método de autenticación que se utiliza para acceder a un dispositivo a través de un determinado protocolo de conectividad.

Los valores admitidos son:

  • pki

  • password

connectivity.auth.credentials

Las credenciales que se utilizan para la autenticación.

connectivity.auth.credentials.password

La contraseña se utiliza para iniciar sesión en el dispositivo que se va a probar.

Este valor solo se aplica si connectivity.auth.method está establecido en password.

connectivity.auth.credentials.privKeyPath

La ruta completa a la clave privada que se utiliza para iniciar sesión en el dispositivo que se está probando.

Este valor solo se aplica si connectivity.auth.method está establecido en pki.

connectivity.auth.credentials.user

El nombre de usuario para iniciar sesión en el dispositivo que se está probando.

connectivity.serialPort

Opcional. El puerto serie al que está conectado el dispositivo.

Esta propiedad solo se aplica si connectivity.protocol está establecido en uart.

connectivity.containerId

El ID de contenedor o el nombre del contenedor de Docker que se está probando.

Esta propiedad solo se aplica si connectivity.protocol está establecido en docker.

connectivity.containerUser

Opcional. El nombre del usuario a utilizar dentro del contenedor. El valor predeterminado es el usuario proporcionado en el Dockerfile.

El valor predeterminado es 22.

Esta propiedad solo se aplica si connectivity.protocol está establecido en docker.

nota

Para comprobar si los ejecutores de las pruebas configuran una conexión de dispositivo incorrecta para una prueba, puede recupera pool.Devices[0].Connectivity.Protocol del contexto de la máquina de estados y realizar una comparación con el valor esperado en un estado Choice. Si se utiliza un protocolo incorrecto, imprima un mensaje con el estado LogMessage y haga la transición al estado Fail.

Como alternativa, puede utilizar un código de gestión de errores para informar de un fallo en la prueba si el tipo de dispositivo es incorrecto.

(Opcional) Configuración de userdata.json

El archivo userdata.json contiene cualquier información adicional que requiera un conjunto de pruebas, pero que no esté especificada en el archivo device.json. El formato de este archivo depende del userdata_scheme.jsonarchivo definido en el conjunto de pruebas. Si es un redactor de pruebas, asegúrese de proporcionar esta información a los usuarios que ejecutarán los conjuntos de pruebas que escriba.

(Opcional) Configuración de resource.json

El archivo resource.json contiene información sobre los dispositivos que se utilizarán como dispositivos de recursos. Los dispositivos de recursos son dispositivos que se requieren para probar ciertas capacidades de un dispositivo que se está probando. Por ejemplo, para probar la capacidad Bluetooth de un dispositivo, puedes usar un dispositivo de recursos para comprobar si el dispositivo se puede conectar correctamente a él. Los dispositivos de recursos son opcionales y puede necesitar tantos dispositivos de recursos como necesite. Como redactor de pruebas, utiliza el archivo test.json para definir las funciones del dispositivo de recursos que se requieren para una prueba. A continuación, los ejecutores de pruebas utilizan el archivo resource.json para proporcionar un conjunto de dispositivos de recursos que tengan las funciones necesarias. Asegúrese de proporcionar esta información a los usuarios que vayan a ejecutar los conjuntos de pruebas que escriba.

Los ejecutores de pruebas pueden proporcionar esta información mediante el siguiente archivo resource.json de plantilla que se encuentra en la carpeta <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 los campos que contienen valores son obligatorios tal y como se describe aquí:

id

Un ID alfanumérico definido por el usuario que identifica de forma única una colección de dispositivos que se conoce como grupo de dispositivos. Los dispositivos que pertenecen a un grupo deben tener idéntico hardware. Al ejecutar un conjunto de pruebas, los dispositivos del grupo se utilizan para paralelizar la carga de trabajo. Se utilizan varios dispositivos para ejecutar diferentes pruebas.

features

Opcional. Una matriz que contenga las características compatibles del dispositivo. La información requerida en este campo se define en los archivos test.json del conjunto de pruebas y determina qué pruebas se van a ejecutar y cómo se van a ejecutar. Si el conjunto de pruebas no requiere ninguna característica, este campo no es obligatorio.

features.name

El nombre de la característica.

features.version

La versión de la característica.

features.jobSlots

Configuración para indicar cuántas pruebas pueden utilizar el dispositivo simultáneamente. El valor predeterminado es 1.

devices

Un conjunto de dispositivos en el grupo a probar. Se requiere al menos un dispositivo.

devices.id

Un identificador único y definido por el usuario para el dispositivo que se está probando.

connectivity.protocol

El protocolo de comunicación que se usará para la comunicación con este dispositivo. Cada dispositivo de un grupo debe usar el mismo protocolo.

Actualmente, los únicos valores que se admiten son ssh y uart para dispositivos físicos, y docker para contenedores de Docker.

connectivity.ip

La dirección IP del dispositivo que se está probando.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.port

Opcional. El número de puerto a utilizar para las conexiones SSH.

El valor predeterminado es 22.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.auth

Información de autenticación para la conexión.

Esta propiedad solo se aplica si connectivity.protocol está establecido en ssh.

connectivity.auth.method

El método de autenticación que se utiliza para acceder a un dispositivo a través de un determinado protocolo de conectividad.

Los valores admitidos son:

  • pki

  • password

connectivity.auth.credentials

Las credenciales que se utilizan para la autenticación.

connectivity.auth.credentials.password

La contraseña se utiliza para iniciar sesión en el dispositivo que se va a probar.

Este valor solo se aplica si connectivity.auth.method está establecido en password.

connectivity.auth.credentials.privKeyPath

La ruta completa a la clave privada que se utiliza para iniciar sesión en el dispositivo que se está probando.

Este valor solo se aplica si connectivity.auth.method está establecido en pki.

connectivity.auth.credentials.user

El nombre de usuario para iniciar sesión en el dispositivo que se está probando.

connectivity.serialPort

Opcional. El puerto serie al que está conectado el dispositivo.

Esta propiedad solo se aplica si connectivity.protocol está establecido en uart.

connectivity.containerId

El ID de contenedor o el nombre del contenedor de Docker que se está probando.

Esta propiedad solo se aplica si connectivity.protocol está establecido en docker.

connectivity.containerUser

Opcional. El nombre del usuario a utilizar dentro del contenedor. El valor predeterminado es el usuario proporcionado en el Dockerfile.

El valor predeterminado es 22.

Esta propiedad solo se aplica si connectivity.protocol está establecido en docker.

(Opcional) Configuración de config.json

El archivo config.json contiene información de configuración para IDT. Por lo general, los ejecutores de pruebas no necesitarán modificar este archivo excepto para proporcionar sus credenciales de usuario de AWS para IDT y, opcionalmente, una región AWS. Si se proporcionan las credenciales de AWS con los permisos necesarios, AWS IoT Device Tester recopila y envía las métricas de uso a AWS. Se trata de una característica opcional y se utiliza para mejorar la funcionalidad de IDT. Para obtener más información, consulte Métricas de uso de IDT.

Los ejecutores de pruebas pueden configurar sus credenciales de AWS de una de las siguientes maneras:

  • Archivo de credenciales

    IDT utiliza el mismo archivo de credenciales que la AWS CLI. Para obtener más información, consulte Archivos de configuración y credenciales.

    La ubicación del archivo de credenciales varía en función del sistema operativo que utilice:

    • macOS, Linux: ~/.aws/credentials

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

  • Variables de entorno

    Las variables de entorno son las variables que mantiene el sistema operativo y utilizan los comandos del sistema. Las variables definidas durante una sesión de SSH no están disponibles una vez cerrada la sesión. IDT pude usar las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY para almacenar sus credenciales de AWS.

    Para establecer estas variables en Linux, MacOS, o Unix, utilice export:

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

    Para establecer estas variables en Windows, utilice set:

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

Para configurar las credenciales de AWS para IDT, los ejecutores de pruebas editan la sección auth del archivo config.json ubicado en la carpeta <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 los campos que contienen valores son obligatorios tal y como se describe aquí:

nota

Todas las rutas de este archivo se definen en relación con <device-tester-extract-location>.

log.location

La ruta a la carpeta de registros en <device-tester-extract-location>.

configFiles.root

La ruta a la carpeta que contiene los archivos de configuración.

configFiles.device

La ruta del archivo device.json.

testPath

La ruta a la carpeta que contiene los conjuntos de pruebas.

reportPath

La ruta a la carpeta que contendrá los resultados de las pruebas después de que IDT ejecute un conjunto de pruebas.

awsRegion

Opcional. La región AWS que utilizarán los conjuntos de pruebas. Si no se establece, los conjuntos de pruebas utilizarán la región predeterminada especificada en cada conjunto de pruebas.

auth.method

El método que utiliza IDT para recuperar las credenciales de AWS. Los valores admitidos son file para recuperar las credenciales de un archivo de credenciales y environment para recuperar las credenciales mediante variables de entorno.

auth.credentials.profile

El perfil de credenciales que se va a utilizar del archivo de credenciales. Esta propiedad solo se aplica si auth.method está establecido en file.