テストの実行者向けの設定の構成 - 無料RTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

テストの実行者向けの設定の構成

カスタムテストスイートを実行するには、テストの実行者は、実行するテストスイートに基づいて設定を設定する必要があります。設定は、<device-tester-extract-location>/configs/ フォルダにある設定ファイルテンプレートに基づいて指定します。必要に応じて、テストの実行者は IDT が AWS クラウドへの接続に使用する AWS 認証情報も設定する必要があります。

テストを作成するユーザーは、テストスイートをデバッグするために、以下に示すファイルの設定が必要になります。また、テストスイートを実行するために必要な以下の設定を設定できるように、テストの実行者に指示を提供する必要があります。

device.json の設定

device.json ファイルには、テストが実行されるデバイスに関する情報 (IP アドレス、ログイン情報、オペレーティングシステム、CPU アーキテクチャなど) が含まれています。

テストの実行者は、<device-tester-extract-location>/configs/ フォルダにある次のテンプレート device.json ファイルを使用してこの情報を指定できます。

[ { "id": "<pool-id>", "sku": "<pool-sku>", "features": [ { "name": "<feature-name>", "value": "<feature-value>", "configs": [ { "name": "<config-name>", "value": "<config-value>" } ], } ], "devices": [ { "id": "<device-id>", "pairedResource": "<device-id>", //used for no-op protocol "connectivity": { "protocol": "ssh | uart | docker | no-op", // ssh "ip": "<ip-address>", "port": <port-number>, "publicKeyPath": "<public-key-path>", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

以下に説明するように、値が含まれているすべてのフィールドは必須です。

id

デバイスプールと呼ばれるデバイスのコレクションを一意に識別するユーザー定義の英数字の ID。プールに属するデバイスには、同一のハードウェアが必要です。テストスイートを実行する場合、プールのデバイスを使用してワークロードを並列化します。複数のデバイスを使用して異なるテストを実行します。

sku

テスト対象デバイスを一意に識別する英数字の値。SKU は、認定されたデバイスの追跡に使用されます。

注記

AWS Partner Device Catalog にボードを一覧表示する場合、ここで指定する SKU は、一覧表示プロセスで使用する SKU と一致する必要があります。

features

オプション。デバイスでサポートされている機能を含む配列。デバイス機能は、テストスイートに設定するユーザー定義の値です。テストの実行者に、device.json ファイルに含める機能名および値に関する情報を提供する必要があります。例えば、他のデバイスの MQTT サーバーとして機能するデバイスをテストする場合は、MQTT_QoS という名前の機能に対する特定のサポートレベルを検証するようにテストロジックを設定します。テストの実行者は、この機能名を指定し、デバイスによってサポートされる QoS レベルにその機能値を設定します。指定された情報は、devicePool.features クエリを使用して IDT コンテキストから、または pool.features クエリを使用してステートマシンコンテキストから取得できます。

features.name

機能の名前。

features.value

サポートされている機能値。

features.configs

機能の構成設定 (必要な場合)。

features.config.name

構成設定の名前。

features.config.value

サポートされている設定値。

devices

テスト対象のプール内のデバイスの配列。少なくとも 1 つのデバイスが必要です。

devices.id

テスト対象のデバイスのユーザー定義の一意の識別子。

devices.pairedResource

リソースデバイスに対してユーザーが定義した一意の識別子。この値は、no-op 接続プロトコルを使用してデバイスをテストする場合に必要です。

connectivity.protocol

このデバイスと通信するために使用される通信プロトコル。プール内の各デバイスは、同じプロトコルを使用する必要があります。

現在、サポートされている値は、物理デバイスの場合は sshuart、Docker コンテナの場合は docker、IDT ホストマシンと直接接続されていないが、ホストマシンと通信するための物理ミドルウェアとしてリソースデバイスを必要とするデバイスの場合は no-op だけです。

no-op デバイスの場合は、devices.pairedResource でリソースデバイス ID を設定します。この ID も resource.json ファイルで指定する必要があります。ペアリングするデバイスは、テスト対象のデバイスと物理的にペアリングされているデバイスである必要があります。IDT は、ペアリングされたリソースデバイスを識別して接続した後は、test.json ファイルに記述されている機能に従って他のリソースデバイスに接続することはありません。

connectivity.ip

テスト対象のデバイスの IP アドレス。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.port

オプション。SSH 接続に使用するポート番号。

デフォルト値は 22 です。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.publicKeyPath

オプション。テスト対象のデバイスへの接続を認証するために使用される公開キーへのフルパス。publicKeyPath を指定すると、IDT がテスト対象のデバイスへの SSH 接続を確立するときに、デバイスの公開キーを検証します。この値が指定されていない場合、IDT は SSH 接続を作成しますが、デバイスのパブリックキーは検証しません。

公開キーへのパスを指定し、安全な方法を使用して、この公開キーをフェッチすることを強くお勧めします。標準のコマンドラインベースの SSH クライアントの場合、パブリックキーは known_hosts ファイルで提供されます。別の公開キーファイルを指定する場合、このファイルは known_hosts ファイルと同じ形式、つまり (ip-address key-type public-key) を使用する必要があります。

connectivity.auth

接続の認証情報。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.auth.method

指定された接続プロトコルを介してデバイスにアクセスするために使用される認証方法。

サポートされている値は以下のとおりです。

  • pki

  • password

connectivity.auth.credentials

認証に使用される認証情報。

connectivity.auth.credentials.password

テスト中のデバイスにサインインするためのパスワード。

この値は、connectivity.auth.methodpassword に設定されている場合にのみ適用されます。

connectivity.auth.credentials.privKeyPath

テスト中のデバイスにサインインするためのプライベートキーへの完全パス。

この値は、connectivity.auth.methodpki に設定されている場合にのみ適用されます。

connectivity.auth.credentials.user

テスト対象デバイスにサインインするためのユーザー名。

connectivity.serialPort

オプション。デバイスが接続されているシリアルポート。

このプロパティは、connectivity.protocoluart に設定されている場合にのみ適用されます。

connectivity.containerId

テスト対象の Docker コンテナのコンテナ ID または名前。

このプロパティは、connectivity.protocoldocker に設定されている場合にのみ適用されます。

connectivity.containerUser

オプション。コンテナ内のユーザー名。デフォルト値は Dockerfile で指定されたユーザーです。

デフォルト値は 22 です。

このプロパティは、connectivity.protocoldocker に設定されている場合にのみ適用されます。

注記

テストの実行者がテストに対して誤ったデバイス接続を構成しているかどうかを確認するには、ステートマシンコンテキストから pool.Devices[0].Connectivity.Protocol を取得し、この値を Choice ステート内の予想値と比較します。正しくないプロトコルが使用されている場合は、LogMessage ステートを使用してメッセージを出力し、Fail ステートに移行します。

または、エラー処理コードを使用して、誤ったデバイスタイプによるテスト失敗をレポートすることもできます。

(オプション) userdata.json の設定

userdata.json ファイルには、device.json ファイルには指定されていない、テストスイートに必要とされる追加情報が含まれています。このファイルの形式は、テストスイートに定義されている userdata_scheme.json ファイルによって異なります。テストを作成するユーザーは、作成したテストスイートを実行するユーザーにこの情報を提供してください。

(オプション) resource.json の設定

resource.json ファイルには、リソースデバイスとして使用されるすべてのデバイスに関する情報が含まれています。リソースデバイスは、テスト対象のデバイスの特定の機能をテストするために必要なデバイスです。例えば、デバイスの Bluetooth 機能をテストするには、リソースデバイスを使用して、デバイスがリソースデバイスに正常に接続できるかどうかをテストできます。リソースデバイスはオプションで、必要な数だけリソースデバイスを要求できます。テストを作成するユーザーは、test.json ファイル を使用して、テストに必要なリソースデバイスの機能を定義します。テストの実行者は、resource.json ファイルを使用して、必要な機能を持つリソースデバイスのプールを指定します。作成したテストスイートを実行するユーザーに、以下の情報を提供してください。

テストの実行者は、<device-tester-extract-location>/configs/ フォルダにある次のテンプレート resource.json ファイルを使用してこの情報を指定できます。

[ { "id": "<pool-id>", "features": [ { "name": "<feature-name>", "version": "<feature-value>", "jobSlots": <job-slots> } ], "devices": [ { "id": "<device-id>", "connectivity": { "protocol": "ssh | uart | docker", // ssh "ip": "<ip-address>", "port": <port-number>, "publicKeyPath": "<public-key-path>", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>", // pki "privKeyPath": "/path/to/private/key", // password "password": "<password>", } }, // uart "serialPort": "<serial-port>", // docker "containerId": "<container-id>", "containerUser": "<container-user-name>", } } ] } ]

以下に説明するように、値が含まれているすべてのフィールドは必須です。

id

デバイスプールと呼ばれるデバイスのコレクションを一意に識別するユーザー定義の英数字の ID。プールに属するデバイスには、同一のハードウェアが必要です。テストスイートを実行する場合、プールのデバイスを使用してワークロードを並列化します。複数のデバイスを使用して異なるテストを実行します。

features

オプション。デバイスでサポートされている機能を含む配列。このフィールドに必要な情報は、テストスイートの test.json ファイル に定義されています。この情報によって、実行するテストと、テストの実行方法が決まります。テストスイートに機能が必要ない場合は、このフィールドは必須ではありません。

features.name

機能の名前。

features.version

機能バージョン。

features.jobSlots

デバイスを同時に使用できるテストの数を示すための設定。デフォルト値は、1です。

devices

テスト対象のプール内のデバイスの配列。少なくとも 1 つのデバイスが必要です。

devices.id

テスト対象のデバイスのユーザー定義の一意の識別子。

connectivity.protocol

このデバイスと通信するために使用される通信プロトコル。プール内の各デバイスは、同じプロトコルを使用する必要があります。

現在、サポートされている値は、物理デバイス用の ssh および uart と、Docker コンテナ用の docker のみです。

connectivity.ip

テスト対象のデバイスの IP アドレス。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.port

オプション。SSH 接続に使用するポート番号。

デフォルト値は 22 です。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.publicKeyPath

オプション。テスト対象のデバイスへの接続を認証するために使用される公開キーへのフルパス。publicKeyPath を指定すると、IDT がテスト対象のデバイスへの SSH 接続を確立するときに、デバイスの公開キーを検証します。この値が指定されていない場合、IDT は SSH 接続を作成しますが、デバイスのパブリックキーは検証しません。

公開キーへのパスを指定し、安全な方法を使用して、この公開キーをフェッチすることを強くお勧めします。標準のコマンドラインベースの SSH クライアントの場合、パブリックキーは known_hosts ファイルで提供されます。別の公開キーファイルを指定する場合、このファイルは known_hosts ファイルと同じ形式、つまり (ip-address key-type public-key) を使用する必要があります。

connectivity.auth

接続の認証情報。

このプロパティは、connectivity.protocolssh に設定されている場合にのみ適用されます。

connectivity.auth.method

指定された接続プロトコルを介してデバイスにアクセスするために使用される認証方法。

サポートされている値は以下のとおりです。

  • pki

  • password

connectivity.auth.credentials

認証に使用される認証情報。

connectivity.auth.credentials.password

テスト中のデバイスにサインインするためのパスワード。

この値は、connectivity.auth.methodpassword に設定されている場合にのみ適用されます。

connectivity.auth.credentials.privKeyPath

テスト中のデバイスにサインインするためのプライベートキーへの完全パス。

この値は、connectivity.auth.methodpki に設定されている場合にのみ適用されます。

connectivity.auth.credentials.user

テスト対象デバイスにサインインするためのユーザー名。

connectivity.serialPort

オプション。デバイスが接続されているシリアルポート。

このプロパティは、connectivity.protocoluart に設定されている場合にのみ適用されます。

connectivity.containerId

テスト対象の Docker コンテナのコンテナ ID または名前。

このプロパティは、connectivity.protocoldocker に設定されている場合にのみ適用されます。

connectivity.containerUser

オプション。コンテナ内のユーザー名。デフォルト値は Dockerfile で指定されたユーザーです。

デフォルト値は 22 です。

このプロパティは、connectivity.protocoldocker に設定されている場合にのみ適用されます。

(オプション) config.json の設定

config.json ファイルには、IDT 向けの設定情報が含まれています。通常、テストの実行者は、IDT の AWS ユーザー認証情報と、オプションで AWS リージョンを提供する場合を除き、このファイルを変更する必要はありません。必要なアクセス許可を持つ認証情報が提供されている場合、 AWS は使用状況メトリクスを AWS IoT Device Tester 収集して に送信します AWS。これはオプトイン機能で、IDT 機能を改善するために使用されます。詳細については、「IDT 使用状況メトリクス」を参照してください。

テストの実行者は、次のいずれかの方法で AWS 認証情報を設定できます。

  • 認証情報ファイル

    IDT では、 AWS CLIと同じ認証情報ファイルが使用されます。詳細については、「設定ファイルと認証情報ファイル」を参照してください。

    認証情報ファイルの場所は、使用しているオペレーティングシステムによって異なります。

    • macOS、Linux: ~/.aws/credentials

    • Windows: C:\Users\UserName\.aws\credentials

  • 環境変数

    環境変数は、オペレーティングシステムによって維持され、システムコマンドによって使用される変数です。SSH セッション中に定義された変数は、そのセッションの終了後は使用できません。IDT は、環境変数の AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY を使用して AWS 認証情報を保存します。

    これらの変数を Linux、macOS、または Unix で設定するには、export を使用します。

    export AWS_ACCESS_KEY_ID=<your_access_key_id> export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

    Windows でこれらの変数を設定するには、set を使用します。

    set AWS_ACCESS_KEY_ID=<your_access_key_id> set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>

IDT の AWS 認証情報を設定するには、テストランナーは <device-tester-extract-location>/configs/フォルダにある config.json ファイルの authセクションを編集します。

{ "log": { "location": "logs" }, "configFiles": { "root": "configs", "device": "configs/device.json" }, "testPath": "tests", "reportPath": "results", "awsRegion": "<region>", "auth": { "method": "file | environment", "credentials": { "profile": "<profile-name>" } } } ]

以下に説明するように、値が含まれているすべてのフィールドは必須です。

注記

このファイル内のすべてのパスは、<device-tester-extract-location> に対して定義されます。

log.location

<device-tester-extract-location> のログフォルダへのパス。

configFiles.root

設定ファイルが含まれるフォルダへのパス。

configFiles.device

device.json ファイルへのパス。

testPath

テストスイートが含まれるフォルダへのパス。

reportPath

IDT がテストスイートを実行した後にテスト結果が含まれるフォルダへのパス。

awsRegion

オプション。テストスイートが使用する AWS リージョン。設定されない場合、テストスイートは各テストスイートに指定されているデフォルトのリージョンを使用します。

auth.method

IDT が AWS 認証情報を取得するために使用するメソッド。サポートされる値は、file (認証情報ファイルから認証情報を取得) と environment (環境変数を使用して認証情報を取得) です。

auth.credentials.profile

認証情報ファイルから使用する認証情報プロファイル。このプロパティは、auth.methodfile に設定されている場合にのみ適用されます。