失敗した HLK ジョブのエクスポート
これで、失敗したジョブをエクスポートして、完全な HLK 環境の外部にあるマシンで実行でるようになります。 ドライバー開発者の場合、この機能を使用すると、テストをスタンドアロンで実行してエラーを再現するプロセスを簡素化できます。
エクスポートされたテスト環境は、専用の HLK 環境をほぼ忠実にシミュレートします。 ただし、これは同一のテストの実行を保証するものではありません。 ユーザーが次の状況に対処する必要がある可能性があります。
- テスト インフラストラクチャで再起動が処理されない場合。 多くの場合、システムを手動で再起動する必要があります。
- 特定のテストのタスク内で HLK クライアント インフラストラクチャを介してテストがシステムを再起動する場合があります。 たとえば、スタンドアロンでの実行中には、これらの再起動がプロンプトまたは再起動としてバッチ ファイルでキャプチャされない場合があります。
- 別々のタスクが同じ場所に書き込んだ一意でないファイル名のログ ファイルの場合、ファイルの一部が上書きされる可能性があります。
- 実行されるシステムによっては、バッチ ファイルに書き込まれるパラメーターが異なる場合があります。 たとえば、同じハードウェアとドライバーのハードウェア インスタンス ID が、別のシステムに移動すると異なる可能性があります。この場合、(たとえばデバイス マネージャーで) 対応する対象値を参照してバッチ ファイルを正しい値で更新する必要がある場合があります。
- HLK はテスト ジョブ自体のみをエクスポートするため、システムを構成するために関連付けられている構成ジョブに依存するテストはの準備が適正でない場合があります。
すべての結果をエクスポートできるわけではありません。 次の一覧は、エクスポート可能なテストとテスト結果の制限について説明するものです。
- テストは実行されると、成功、失敗、または取り消しなどの状態で完了することになります。
- テストの実行では、クライアント システムからインフラストラクチャ ログが正常に返される必要があります。 テストをエクスポートするには、これらのファイルが必要です。
- エキスポートできるのは、単一のコンピューターのテストのみです。 実行に複数のコンピューターを必要があるテストはエクスポートできません。
- HLK デスクトップ クライアントを使用して実行するテストである必要があります。 Windows Core またはプロキシ モバイル クライアント システムでのテストの実行はエクスポートできません。
- 既知のインフラストラクチャの問題やその他の理由により、エクスポート不可としてタグ付けされたテストはエクスポートできません。
- HLK Studio の [Results] (結果) タブで、失敗した結果を右クリックして、[Export Test Run] (テストの実行をエクスポート) を選択します。
- 保存ダイアログ ボックスが表示されます。 エクスポートしたジョブをフラッシュ ドライブまたはその他の外部の場所に保存すると、エクスポート済みのたテストを別のコンピューターに移動することができます。 同じテストを同じ場所に複数回エクスポートすることはできません。 エクスポートが完了した確認をダイアログ ボックスが表示します。
- スタンドアロン システムでテストを実行するために必要なテスト バイナリとバッチ ファイルが、指定されたディレクトリにエクスポートされます。 エクスポートされたテストは、失敗したジョブの名前とアーキテクチャが付けられたサブディレクトリに保存されます。 テストを実行するためにインストールする必要があるインフラストラクチャ コンポーネントは、インフラストラクチャの対象となるアーキテクチャ名と共に Infrastructure と名前が付けられたサブディレクトリに保存されます。
Note
ターゲット システムでのインフラストラクチャ コンポーネントのインストールは 1 回のみとする必要があります。 失敗したジョブのたびにこれらのコンポーネントを再インストールする必要はありません。
たとえば、Set Render Target という名前の失敗した x64 ジョブを E:\ ドライブのルートに保存すると、このジョブのフォルダーと次のとおりのフォルダー構造のインフラストラクチャ インストーラーがエクスポートされます。
E:.
├───Infrastructure(X64)
└───Set_Render_Target(X64)
├───CoreClr
├───MinTe
│ └───CoreClr
├───NetFx2.0
├───NetFx4.5
├───verifysupportfiles
│ ├───CoreClr
│ ├───MinTe
│ │ └───CoreClr
│ ├───NetFx2.0
│ └───NetFx4.5
└───[windir]
└───system32
エクスポートされたテスト パッケージには、次のとおりのファイルとサブフォルダーが含まれています。
- readme1st.txt - エクスポートされたテストを実行する方法に関する情報が含まれています
- run.cmd - テスト バイナリおよびテストの実行に必要となる
- その他のファイルの実行に使用されるバッチ ファイルです
- setup(architecture).exe - インフラストラクチャのインストールに使用される実行可能ファイルをインストールします
エクスポートしたテスト フォルダーを新しいコンピューターに移動してテストします。 テストの一部の失敗を避けるため、ディレクトリには空白文字を含めることはできません。
テストを実行する前に、(フォルダーを保存する) \Infrastructure(architecture)\setup(architecture).exe を実行してインフラストラクチャ コンポーネントをインストールします。 インフラストラクチャ インストーラーは、コンポーネントのインストールが成功したかどうかを示すダイアログ ボックスを表示します。
Note
ターゲット システムでのインフラストラクチャ コンポーネントのインストールは 1 回のみとする必要があります。 失敗したジョブのたびにこれらのコンポーネントを再インストールする必要はありません。
Note
インストーラーとジョブのアーキテクチャは、インストール先のターゲット システムのアーキテクチャと一致している必要があります。
- テスト用マシンで実行する上で必要となる変更を (save folder)(job name)(architecture) フォルダーのバッチ ファイルに加えます。 たとえば、次の変更を行う場合があります。
- ジョブの失敗の原因ではない行をコメントアウトする
- エクスポートされたテストを実行するマシンに応じてパラメーター値を変更する。 たとえば、同じハードウェアのインスタンス ID でも 2 つの別個のシステムでは異なる場合が多いため、エクスポートされたテストを実行する前にこの更新を行う必要があります。
- デバッガーに接続するためのコマンドを追加する
Note
タスクで「マシンが再起動する可能性があるため、このテストは実行できません。」というエラー メッセージが表示された場合は、以下の例のとおり run.cmd を編集して、失敗したコマンドの行に /rebootstatefile=(some_file_name) を追加する必要があります。
cmd /c TE.exe /inproc /enablewttlogging /appendwttlogging devfund_pcirootportsurpriseremovetest_wlk_certification.dll
/p:"MultiDeviceHardwareIdSdelQueryHardwareID=!MultiDeviceHardwareIdSdelQueryHardwareID!"
/p:"MultiDeviceInstanceIdSdelWDKDeviceID=!MultiDeviceInstanceIdSdelWDKDeviceID!" /p:"DQ=!DQ!"
/p:"TestCycles=!TestCycles!" /p:"IOPeriod=!IOPeriod!" /p:"WDTFREMOTESYSTEM=!WDTFREMOTESYSTEM!"
/p:"Wpa2PskAesSsid=!Wpa2PskAesSsid!"
/p:"DriverVerifierAdditionalDrivers=!DriverVerifierAdditionalDrivers!"
/p:"DriverVerifierExcludedFlags=!DriverVerifierExcludedFlags!"
/p:"DriverVerifierCustomizeConfiguration=!DriverVerifierCustomizeConfiguration!"
/rebootStateFile=rebootstatefile.xml
- 変更が完了したら、管理者特権でコマンド プロンプトを起動し、テスト ディレクトリに移動して、run.cmd を実行します。 バッチ ファイル内の各タスクは、バッチ ファイルの実行する際に開始点として使用できるタスク番号に関連付けられています。 既定では、実行はタスク間で一時停止します。 次の実行モードがサポートされています。
- パラメーターを指定せずに "Run" を実行すると、バッチ ファイルの先頭から実行が開始され、各タスクの間で一時停止します。
- "Run 5" を実行すると、バッチ ファイルを起動してタスク 5 にスキップします。
- "Run FAST" は、バッチ ファイルを高速モードで開始します (タスク間で一時停止しません)。
- "Run 5 FAST" は、バッチ ファイルをタスク 5 から高速モードで開始します (タスク間で一時停止しません)。
- "RebootResume" は、最後の再起動時のスクリプトの最後の実行からバッチ ファイルを開始します。 FAST フラグもサポートされています。
- "RerunLast" はバッチファイルが最後に終了した際に実行されていたコマンドからバッチファイルを開始します。 このコマンドを使用すると、Control + C キーを押してタスク中にスクリプトを終了できます。rerunlast.cmd を実行して前のコマンドを再実行すると、タスクを複数回再実行できます。 FAST フラグもサポートされています。
- テストの失敗の原因となっている問題を特定して修正を行った後、修正プログラムをデプロイして、HLK 環境内でジョブが成功することを確認できます。
Note
成功した結果を HLK 環境にインポートすることはできません。 その環境内からジョブを再び実行する必要があります。