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á.
Use o contexto do IDT
Quando o IDT executa um pacote de testes, o pacote de testes pode acessar um conjunto de dados que podem ser usados para determinar como cada teste é executado. Esses dados são chamados de contexto do IDT. Por exemplo, a configuração de dados do usuário fornecida pelos executores de teste em um arquivo userdata.json
é disponibilizada para conjuntos de testes no contexto do IDT.
O contexto do IDT pode ser considerado um documento JSON somente para leitura. Os conjuntos de testes podem recuperar e gravar dados no contexto usando tipos de dados JSON padrão, como objetos, matrizes, números e assim por diante.
Esquema de contexto
O contexto do IDT usa o seguinte 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
-
Informações do arquivo config.json. O campo
config
também contém o seguinte campo adicional:config.timeoutMultiplier
-
O multiplicador para qualquer valor de tempo limite usado pelo pacote de testes. Esse valor é especificado pelo executor de teste da CLI do IDT. O valor padrão é
1
.
device
-
Informações sobre o dispositivo selecionado para a execução do teste. Essas informações são equivalentes ao elemento da matriz
devices
no arquivo device.json do dispositivo selecionado. devicePool
-
Informações sobre o grupo de dispositivos selecionado para a execução do teste. Essas informações são equivalentes ao elemento de matriz do grupo de dispositivos de nível superior definido no arquivo
device.json
do grupo de dispositivos selecionado. resource
-
Informações sobre dispositivos de recursos do arquivo
resource.json
.resource.devices
-
Essas informações são equivalentes à matriz
devices
definida no arquivoresource.json
. Cada elementodevices
inclui o seguinte campo adicional:resource.device.name
-
O nome do recurso do dispositivo. Esse valor é definido como o valor
requiredResource.name
no arquivotest.json
.
testData.awsCredentials
-
As credenciais AWS usadas pelo teste para se conectar à nuvem AWS. Essas informações são obtidas no arquivo
config.json
. testData.logFilePath
-
O caminho para o arquivo de log no qual o caso de teste grava mensagens de log. O pacote de testes criará esse arquivo se ele não existir.
userData
-
Informações fornecidas pelo executor de testes no arquivo userdata.json.
Acesse dados no contexto
Você pode consultar o contexto usando a notação JSONPath dos seus arquivos JSON e do seu executável de texto com GetContextValue
e as APIs GetContextString
. A sintaxe das strings do JSONPath para acessar o contexto do IDT varia da seguinte forma:
-
Em
suite.json
etest.json
, você usa{{
. Ou seja, não use o elemento raizquery
}}$.
para iniciar sua expressão. -
Em
statemachine.json
, você usa{{$.
.query
}} -
Nos comandos da API, você usa
ouquery
{{$.
, dependendo do comando. Para obter mais informações, consulte a documentação em linha dos SDKs.query
}}
A tabela a seguir descreve os operadores em uma expressão 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
$.config.awsRegion . |
[start:end] |
Filters elements from an array, retrieving items
beginning from the start index and going up to the
end index, both inclusive. |
[index1, index2, … , 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 criar expressões de filtro, use a sintaxe a seguir:
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
Nesta sintaxe:
-
jsonpath
é um JSONPath que usa a sintaxe JSON padrão. -
value
é qualquer valor personalizado que usa a sintaxe JSON padrão. -
operator
é uma das seguintes operações:-
<
(Menor que) -
<=
(Menor ou igual a) -
==
(Igual a)Se o JSONPath ou o valor em sua expressão for um valor de matriz, booliano ou objeto, esse será o único operador binário compatível que você poderá usar.
-
>=
(Maior ou igual a) -
>
(Maior que) -
=~
(Correspondência de expressão regular). Para usar esse operador em uma expressão de filtro, o JSONPath ou valor no lado esquerdo da expressão deve ser avaliado como uma string e o lado direito deve ser um valor padrão que siga a sintaxe RE2.
-
Você pode usar consultas JSONPath no formato {{query
}} como strings de espaços reservados nos args
e campos environmentVariables
nos arquivos test.json
e nos campos environmentVariables
e arquivos suite.json
. O IDT realiza uma pesquisa de contexto e preenche os campos com o valor avaliado da consulta. Por exemplo, no arquivo suite.json
, você pode usar strings de espaços reservados para especificar valores de variáveis de ambiente que mudam com cada caso de teste e o IDT preencherá as variáveis de ambiente com o valor correto para cada caso de teste. No entanto, quando você usa strings de espaços reservados em test.json
e arquivos suite.json
as seguintes considerações se aplicam às suas consultas:
-
Cada ocorrência da chave
devicePool
em sua consulta deve estar em letras minúsculas. Ou seja, usedevicepool
em vez disso. -
Para matrizes, você só pode usar matrizes de strings. Além disso, as matrizes usam um formato
item1, item2,...,itemN
não padronizado. Se a matriz contiver somente um elemento, ela será serializada comoitem
, tornando-a indistinguível de um campo de strings. -
Você não pode usar espaços reservados para recuperar objetos a partir do contexto.
Devido a essas considerações, recomendamos que, sempre que possível, você use a API para acessar o contexto em sua lógica de teste em vez de strings de espaços reservados em test.json
e arquivos suite.json
. No entanto, em alguns casos, pode ser mais conveniente usar espaços reservados JSONPath para recuperar strings únicas para definir como variáveis de ambiente.