IDT 컨텍스트 사용 - AWS IoT Greengrass

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

IDT 컨텍스트 사용

IDT가 테스트 스위트를 실행하면 테스트 스위트는 각 테스트 실행 방법을 결정하는 데 사용할 수 있는 데이터 집합에 액세스할 수 있습니다. 이 데이터를 IDT 컨텍스트라고 합니다. 예를 들어, 테스트 러너가 제공하는 사용자 데이터 구성userdata.jsonIDT 컨텍스트에서 테스트 스위트에 파일을 사용할 수 있습니다.

IDT 컨텍스트는 읽기 전용 JSON 문서로 간주될 수 있습니다. 테스트 스위트는 객체, 배열, 숫자 등과 같은 표준 JSON 데이터 유형을 사용하여 데이터를 검색하고 컨텍스트에 데이터를 쓸 수 있습니다.

컨텍스트 스키마

IDT 컨텍스트는 다음 형식을 사용합니다.

{ "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

다음 정보config.json파일. 이config필드에는 다음과 같은 추가 필드도 포함됩니다.

config.timeoutMultiplier

테스트 스위트에서 사용하는 모든 제한 시간 값에 대한 승수입니다. 이 값은 IDT CLI의 테스트 러너에 의해 지정됩니다. 기본값은 1입니다.

device

테스트 실행을 위해 선택한 장치에 대한 정보입니다. 이 정보는devices배열 요소device.json파일선택한 장치에 대해.

devicePool

테스트 실행을 위해 선택한 장치 풀에 대한 정보입니다. 이 정보는 에 정의된 최상위 디바이스 풀 배열 요소와 동일합니다.device.json선택한 장치 풀의 파일입니다.

resource

리소스 디바이스에 대한 정보resource.json파일.

resource.devices

이 정보는devices배열이 정의됨resource.json파일. 각deviceselement는 다음 추가 필드를 포함합니다.

resource.device.name

리소스 디바이스의 이름입니다. 이 값은requiredResource.name의 가치test.json파일.

testData.awsCredentials

이AWS테스트에서 연결하기 위해 사용하는 자격 증명AWS클라우드. 이 정보는 다음을 통해 얻을 수 있습니다.config.json파일.

testData.logFilePath

테스트 사례에서 로그 메시지를 기록하는 로그 파일의 경로입니다. 이 파일이 없는 경우 테스트 스위트에서 이 파일을 생성합니다.

userData

테스트 러너가 제공하는 정보userdata.json파일.

컨텍스트에서 데이터 액세스

JSON 파일 및 텍스트 실행 파일에서 JSONPath 표기법을 사용하여 컨텍스트를 쿼리 할 수 있습니다.GetContextValueGetContextStringAPI. IDT 컨텍스트에 액세스하는 JSONPath 문자열의 구문은 다음과 같이 다릅니다.

  • Insuite.jsontest.json, 를 사용합니다.{{query}}. 즉, 루트 요소를 사용하지 마십시오.$.표현을 시작합니다.

  • Intest_orchestrator.yaml, 를 사용합니다.{{query}}.

    더 이상 사용되지 않는 상태 머신을 사용하는 경우state_machine.json, 를 사용합니다.{{$.query}}.

  • API 명령에서는 다음을 사용합니다.query또는{{$.query}}명령에 따라 다릅니다. 자세한 내용은 SDK의 인라인 설명서 단원을 참조하십시오.

다음 표에서는 일반적인 JSONPath 표현식의 연산자에 대해 설명합니다.

Operator Description
$ The root element. Because the top-level context value for IDT is an object, you will typically use $. to start your queries.
.어린이 이름 Accesses the child element with name 어린이용 이름 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 $.구성.AWS리전.
[시작:끝] Filters elements from an array, retrieving items beginning from the 시작 index and going up to the 종료 index, both inclusive.
[인덱스1, 인덱스2,..., 인덱스N] 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.

필터 표현식을 만들려면 다음 구문을 사용합니다.

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

이 구문에서:

  • jsonpath는 표준 JSON 구문을 사용하는 JSONPath입니다.

  • value은 표준 JSON 구문을 사용하는 모든 사용자 정의 값입니다.

  • operator은 (는) 다음 연산자 중 하나입니다.

    • <(작음)

    • <=(작거나 같음)

    • ==(같음)

      표현식의 JSONPath 또는 값이 배열, 부울 또는 객체 값이면 사용할 수 있는 유일한 지원 이진 연산자입니다.

    • >=(크거나 같음)

    • >(큼)

    • =~(정규 표현식 일치). 필터 표현식에서 이 연산자를 사용하려면 표현식 왼쪽의 JSONPath 또는 값이 문자열로 평가되고 오른쪽은 다음 패턴 값이어야 합니다.RE2 구문.

{{형식으로 JsonPath 쿼리를 사용할 수 있습니다.질문}}} 의 자리 표시자 문자열로argsenvironmentVariables필드test.json파일 및 내부environmentVariables필드suite.json파일을 생성합니다. IDT는 컨텍스트 조회를 수행하고 쿼리의 평가된 값으로 필드를 채웁니다. 예:suite.jsonfile, 자리 표시자 문자열을 사용하여 각 테스트 케이스에 따라 변경되는 환경 변수 값을 지정할 수 있으며 IDT는 환경 변수를 각 테스트 사례에 대한 올바른 값으로 채 웁니다. 그러나 에서 자리 표시자 문자열을 사용하는 경우test.jsonsuite.jsonfiles의 경우 다음 고려 사항이 쿼리에 적용됩니다.

  • 각 발생은 다음과 같습니다.devicePool쿼리의 키는 모두 소문자로 표시됩니다. 즉, 사용devicepool대신.

  • 배열의 경우 문자열 배열만 사용할 수 있습니다. 또한 어레이는 비표준이 아닙니다.item1, item2,...,itemN형식 배열에 요소가 하나만 포함되어 있으면 다음과 같이 직렬화됩니다.item문자열 필드와 구별 할 수 없게 만듭니다.

  • 자리 표시자를 사용하여 컨텍스트에서 객체를 검색할 수 없습니다.

이러한 고려 사항으로 인해 가능하면 API를 사용하여 의 자리 표시자 문자열 대신 테스트 논리의 컨텍스트에 액세스하는 것이 좋습니다.test.jsonsuite.json파일을 생성합니다. 그러나 경우에 따라 JSONPath 자리 표시자를 사용하여 단일 문자열을 검색하여 환경 변수로 설정하는 것이 더 편리할 수 있습니다.