Utilizar el contexto IDT - AWS IoT Greengrass

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.

Utilizar el contexto IDT

Cuando IDT ejecuta un conjunto de pruebas, el conjunto de pruebas puede acceder a un conjunto de datos que se pueden utilizar para determinar cómo se ejecuta cada prueba. Estos datos se denominan contexto IDT. Por ejemplo, la configuración de datos de usuario proporcionada por los ejecutores de pruebas en unuserdata.jsonse pone a disposición de los grupos de pruebas en el contexto IDT.

El contexto IDT se puede considerar un documento JSON de solo lectura. Los conjuntos de pruebas pueden recuperar datos y escribirlos en el contexto utilizando tipos de datos JSON estándar, como objetos, matrices, números, etc.

Esquema contextual

El contexto IDT utiliza el siguiente formato:

{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier }, "device": { <device-json-device-element> }, "devicePool": { <device-json-pool-element> }, "resource": { "devices": [ { <resource-json-device-element> "name": "<resource-name>" } ] }, "testData": { "awsCredentials": { "awsAccessKeyId": "<access-key-id>", "awsSecretAccessKey": "<secret-access-key>", "awsSessionToken": "<session-token>" }, "logFilePath": "/path/to/log/file" }, "userData": { <userdata-json-content> } }
config

Información delconfig.jsonarchivo. Laconfigtambién contiene el siguiente campo adicional:

config.timeoutMultiplier

El multiplicador del valor de tiempo de espera utilizado por el conjunto de pruebas. Este valor lo especifica el ejecutor de prueba de la CLI de IDT. El valor predeterminado es 1.

device

Información sobre el dispositivo seleccionado para la prueba. Esta información equivale a ladeviceselemento array en eldevice.jsonarchivopara el dispositivo seleccionado.

devicePool

Información sobre el grupo de dispositivos seleccionado para la ejecución de prueba. Esta información es equivalente al elemento de matriz de grupos de dispositivos de nivel superior definido en eldevice.jsonpara el grupo de dispositivos seleccionado.

resource

Información sobre los dispositivos de recursos de laresource.jsonfile.

resource.devices

Esta información equivale a ladevicesmatriz definida en elresource.jsonfile. Cadadevicesincluye el siguiente campo adicional:

resource.device.name

El nombre del dispositivo de recursos. Este valor se establece en elrequiredResource.namevalor en eltest.jsonfile.

testData.awsCredentials

LaAWScredenciales utilizadas por la prueba para conectarse alAWSnube. Esta información se obtiene delconfig.jsonfile.

testData.logFilePath

Ruta del archivo de registro en el que el caso de prueba escribe mensajes de registro. El conjunto de pruebas crea este archivo si no existe.

userData

Información proporcionada por el corredor de pruebas en eluserdata.jsonarchivo.

Acceda a los datos en el contexto

Puede consultar el contexto mediante la notación JSONPath desde los archivos JSON y desde el ejecutable de texto con elGetContextValueyGetContextStringAPIs. La sintaxis de las cadenas JSONPath para acceder al contexto IDT varía de la siguiente manera:

  • Ensuite.jsonytest.json, utiliza{{query}}. Es decir, no uses el elemento raíz$.para empezar tu expresión.

  • Entest_orchestrator.yaml, utiliza{{query}}.

    Si utiliza la máquina de estado obsoleta, entonces enstate_machine.json, utiliza{{$.query}}.

  • En los comandos de la API, utilizasqueryo{{$.query}}, según el comando. Para obtener más información, consulte la documentación en línea de los SDK.

En la siguiente tabla se describen los operadores de una expresión JSONPath típica:

Operator Description
$ The root element. Because the top-level context value for IDT is an object, you will typically use $. to start your queries.
.ChildName Accesses the child element with name ChildName from an object. If applied to an array, yields a new array with this operator applied to each element. The element name is case sensitive. For example, the query to access the awsRegion value in the config object is Región $.config.awsRegion.
[start:end] Filters elements from an array, retrieving items beginning from the iniciar index and going up to the fin index, both inclusive.
[índice 1, índice 2,..., indexN] Filters elements from an array, retrieving items from only the specified indices.
[? (expr)] Filters elements from an array using the expr expression. This expression must evaluate to a boolean value.

Para crear expresiones de filtro, utilice la siguiente sintaxis:

<jsonpath> | <value> operator <jsonpath> | <value>

En esta sintaxis:

  • jsonpathes un JSONPath que utiliza sintaxis JSON estándar.

  • valuees cualquier valor personalizado que utilice la sintaxis JSON estándar.

  • operatores uno de los siguientes operadores:

    • <(Menor que)

    • <=(Menor o igual que)

    • ==(Igual que)

      Si el valor o JSONPath de su expresión es un valor de matriz, booleano o objeto, este es el único operador binario compatible que puede utilizar.

    • >=(Mayor o igual que)

    • >(Mayor que)

    • =~(coincidencia de expresiones regulares). Para utilizar este operador en una expresión de filtro, el JSONPath o el valor de la parte izquierda de la expresión deben evaluarse en una cadena y el lado derecho debe ser un valor de patrón que siga elSintaxis RE2.

Puede utilizar consultas JSONPath en el formulario {{query}} como cadenas de marcador de posición dentro delargsyenvironmentVariablescampos entest.jsonarchivos y dentro delenvironmentVariablescampos ensuite.jsonarchivos. IDT realiza una búsqueda de contexto y rellena los campos con el valor evaluado de la consulta. Por ejemplo, en elsuite.json, puede utilizar cadenas de marcador de posición para especificar valores de variables de entorno que cambian con cada caso de prueba e IDT rellenará las variables de entorno con el valor correcto para cada caso de prueba. Sin embargo, cuando utiliza cadenas de marcador de posición entest.jsonysuite.json, se aplican las siguientes consideraciones para sus consultas:

  • Debe tener cada vez que se produzca eldevicePoolclave en la consulta en minúsculas. Es decir, usedevicepoolen su lugar.

  • Para matrices, solo puede utilizar matrices de cadenas. Además, los arreglos utilizan un elemento no estándaritem1, item2,...,itemNformato. Si la matriz contiene solo un elemento, se serializa comoitem, lo que lo hace indistinguible de un campo de cadena.

  • No se pueden utilizar marcadores de posición para recuperar objetos del contexto.

Debido a estas consideraciones, recomendamos que, siempre que sea posible, utilice la API para acceder al contexto de su lógica de prueba en lugar de cadenas de marcador de posición entest.jsonysuite.jsonarchivos. Sin embargo, en algunos casos podría resultar más conveniente utilizar marcadores de posición JSONPath para recuperar cadenas individuales para definirlas como variables de entorno.