IDT 컨텍스트 사용 - AWS IoT Greengrass

다음에 대한 설명서를 보고 있습니다.AWS IoT Greengrass Version 1.AWS IoT Greengrass Version 2의 최신 주요 버전입니다AWS IoT Greengrass. 사용에 관한 자세한 내용은 단원을 참조하십시오.AWS IoT Greengrass V2에 대한 자세한 내용은AWS IoT Greengrass Version 2개발자 안내서.

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

IDT 컨텍스트 사용

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

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.jsonfile. 이config필드에는 다음과 같은 추가 필드도 포함됩니다.

config.timeoutMultiplier

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

device

테스트 실행을 위해 선택한 장치에 대한 정보입니다. 이 정보는 다음과 동일합니다.devices배열 요소의device.jsonfile을 선택합니다.

devicePool

테스트 실행을 위해 선택한 디바이스 풀에 대한 정보입니다. 이 정보는 속성 매니저에서 정의된 최상위 디바이스 풀 어레이 요소와 동일합니다.device.json파일을 선택합니다.

resource

리소스 장치에 대한 정보resource.json파일을 생성합니다.

resource.devices

이 정보는 다음과 동일합니다.devices배열에 정의된resource.json파일을 생성합니다. EAdevices요소에는 다음과 같은 추가 필드가 포함됩니다.

resource.device.name

리소스 디바이스의 이름입니다. 이 값은requiredResource.name값입니다.test.json파일을 생성합니다.

testData.awsCredentials

이AWS에 연결하기 위해 테스트에서 사용하는AWS클라우드. 이 정보는에서 얻어진다config.json파일을 생성합니다.

testData.logFilePath

테스트 케이스가 로그 메시지를 기록하는 로그 파일의 경로입니다. 테스트 제품군은이 파일이 존재하지 않으면 생성합니다.

userData

테스트 러너가 제공하는 정보는userdata.jsonfile.

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

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

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

  • Instatemachine.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 구성 object is $. 구성. AWS지역.
[시작:끝] Filters elements from an array, retrieving items beginning from the start index and going up to the END index, both inclusive.
[인덱스1, 인덱스2,..., 인덱스N] Filters elements from an array, retrieving items from only the specified indices.
[? (해외 거주자)] 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 쿼리를 사용할 수 있습니다 {{query}} 에서 자리 표시 자 문자열로argsenvironmentVariables필드test.json파일 및environmentVariables필드suite.json파일을 생성합니다. IDT는 컨텍스트 조회를 수행하고 쿼리의 평가된 값으로 필드를 채웁니다. 예를 들어,suite.json파일에서 자리 표시자 문자열을 사용하여 각 테스트 사례에 따라 변경되는 환경 변수 값을 지정할 수 있으며 IDT는 각 테스트 사례에 대한 올바른 값으로 환경 변수를 채웁니다. 그러나 자리 표시자 문자열을 사용할 때test.jsonsuite.json파일에서 쿼리에 다음 고려 사항이 적용됩니다.

  • 각 발생 해야 합니다.devicePool키를 모두 소문자로 입력하십시오. 즉,devicepool대신 사용.

  • 배열의 경우 문자열 배열 만 사용할 수 있습니다. 또한 배열은 비표준item1, item2,...,itemN형식 배열이 하나의 요소를 포함하는 경우, 그것은으로 직렬화item를 사용하여 문자열 필드와 구별 할 수 없습니다.

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

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