AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utiliser le contexte IDT
Lorsque IDT exécute une suite de tests, la suite de tests peut accéder à un ensemble de données qui peuvent être utilisées pour déterminer comment chaque test s'exécute. Ces données sont appelées contexte IDT. Par exemple, la configuration des données utilisateur fournie par les exécuteurs de tests dans unuserdata.json
est mis à la disposition des suites de tests dans le contexte IDT.
Le contexte IDT peut être considéré comme un document JSON en lecture seule. Les suites de tests peuvent extraire des données du contexte et les écrire à l'aide de types de données JSON standard tels que des objets, des tableaux, des nombres, etc.
Schéma contextuel
Le contexte IDT utilise le format suivant :
{ "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
-
Informations provenant duconfig.jsonfichier. Le
config
contient également le champ supplémentaire suivant :config.timeoutMultiplier
-
Multiplicateur pour toute valeur de délai d'attente utilisée par la suite de tests. Cette valeur est spécifiée par le lanceur de test à partir de l'interface de ligne de commande IDT. La valeur par défaut est
1
.
device
-
Informations sur le périphérique sélectionné pour le test. Ces informations sont équivalentes à l'information
devices
élément de tableau dans ledevice.jsonfichierpour l'appareil sélectionné. devicePool
-
Informations sur le pool de périphériques sélectionné pour le test. Ces informations sont équivalentes à l'élément de tableau de pool de périphériques de niveau supérieur défini dans le
device.json
pour le pool de périphériques sélectionné. resource
-
Informations sur les périphériques de ressources provenant du
resource.json
dans le fichier.resource.devices
-
Ces informations sont équivalentes à l'information
devices
tableau défini dans le tableauresource.json
dans le fichier. EACHdevices
inclut le champ supplémentaire suivant :resource.device.name
-
Nom du périphérique de ressources. Cette valeur est définie sur le paramètre
requiredResource.name
valeur dans le moduletest.json
dans le fichier.
testData.awsCredentials
-
LeAWSinformations d'identification utilisées par le test pour se connecter auAWScloud. Ces informations sont obtenues auprès du
config.json
dans le fichier. testData.logFilePath
-
Chemin d'accès au fichier journal dans lequel le scénario de test écrit des messages de journal. S'il n'existe pas, la suite de tests crée ce fichier.
userData
-
Informations fournies par le coureur de test dans leuserdata.jsonfichier.
Accédez aux données dans le contexte
Vous pouvez interroger le contexte à l'aide de la notation JSONPath à partir de vos fichiers JSON et de votre exécutable de texte avec leGetContextValue
etGetContextString
API. La syntaxe des chaînes JSONPath pour accéder au contexte IDT varie comme suit :
-
Dans
suite.json
ettest.json
, vous utilisez{{
. En d'autres termes, n'utilisez pas l'élément racinequery
}}$.
pour commencer votre expression. -
Dans
statemachine.json
, vous utilisez{{$.
.query
}} -
Dans les commandes API, vous utilisez
ouquery
{{$.
, selon la commande. Pour de plus amples informations, veuillez consulter la documentation en ligne dans les kits SDK.query
}}
Le tableau suivant décrit les opérateurs dans une expression JSONPath typique :
Operator | Description |
---|---|
$ |
The root element. Because the top-level context
value for IDT is an object, you will typically use $. to
start your queries. |
.nom d'enfant |
Accesses the child element with name
Nom de l'enfant 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
Région $.config.awsRegion . |
[début : fin] |
Filters elements from an array, retrieving items
beginning from the démarrer index and going up to the
fin 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. |
Pour créer des expressions de filtre, utilisez la syntaxe suivante :
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
Dans cette syntaxe :
-
jsonpath
est un JSONPath qui utilise la syntaxe JSON standard. -
value
est toute valeur personnalisée qui utilise la syntaxe JSON standard. -
operator
est l'un des opérateurs suivants :-
<
(Inférieur à) -
<=
(Inférieur ou égal à) -
==
(Egal à)Si le JSONPath ou la valeur de votre expression est une valeur de tableau, d'un booléen ou d'un objet, il s'agit du seul opérateur binaire pris en charge que vous pouvez utiliser.
-
>=
(Supérieur ou égal à) -
>
(Supérieur à) -
=~
(correspondance d'expression régulière). Pour utiliser cet opérateur dans une expression de filtre, le JSONPath ou la valeur située sur le côté gauche de votre expression doit être évalué en chaîne et le côté droit doit être une valeur de modèle qui suit leSyntaxe RE2.
-
Vous pouvez utiliser des requêtes JSONPath sous la forme {{requête
}} sous forme de chaînes d'espace réservé dans leargs
etenvironmentVariables
champs danstest.json
et dans le dossierenvironmentVariables
champs danssuite.json
fichiers suivants. IDT effectue une recherche de contexte et remplit les champs avec la valeur évaluée de la requête. Par exemple, dans lesuite.json
, vous pouvez utiliser des chaînes d'espace réservé pour spécifier des valeurs de variables d'environnement qui changent avec chaque cas de test et IDT renseignera les variables d'environnement avec la valeur correcte pour chaque cas de test. Toutefois, lorsque vous utilisez des chaînes d'espace réservé danstest.json
etsuite.json
, les considérations suivantes s'appliquent à vos requêtes :
-
Vous devez chaque occurrence du
devicePool
dans votre requête en minuscules. C'est-à-dire, utilisezdevicepool
. -
Pour les tableaux, vous ne pouvez utiliser que des tableaux de chaînes. De plus, les baies utilisent un système non standard
item1, item2,...,itemN
. Si le tableau ne contient qu'un seul élément, il est sérialisé comme suit :item
, ce qui le rend indiscernable d'un champ de chaîne. -
Vous ne pouvez pas utiliser d'espaces réservés pour récupérer des objets du contexte.
En raison de ces considérations, nous recommandons que, dans la mesure du possible, vous utilisiez l'API pour accéder au contexte de votre logique de test plutôt que des chaînes d'espace réservé danstest.json
etsuite.json
fichiers suivants. Cependant, dans certains cas, il peut être plus pratique d'utiliser des espaces réservés JSONPath pour récupérer des chaînes uniques à définir comme variables d'environnement.