실패한 HLK 작업 내보내기
이제 전체 HLK 환경 외부의 머신에서 실행할 수 있도록 실패한 작업을 내보낼 수 있습니다. 드라이버 개발자의 경우 이 기능을 사용하면 테스트를 독립 실행형으로 실행하여 실패를 재현하는 프로세스를 간소화할 수 있습니다.
내보낸 테스트 환경은 전용 HLK 환경과 매우 유사합니다. 그러나 동일한 테스트 실행을 보장하지는 않습니다. 사용자는 다음 상황을 처리해야 할 수 있습니다.
- 다시 부팅은 테스트 인프라에서 처리되지 않습니다. 사용자는 대부분의 경우 시스템을 수동으로 다시 시작해야 합니다.
- 테스트 작업 내에서 HLK 클라이언트 인프라를 통해 테스트가 시스템을 다시 부팅하는 경우가 있을 수 있습니다. 예를 들어 이러한 다시 부팅은 독립 실행형 실행 중에 프롬프트 또는 다시 부팅으로 일괄 처리 파일에 캡처되지 않을 수 있습니다.
- 다른 작업에 의해 동일한 위치에 기록된 고유하지 않은 이름의 로그 파일로 인해 이러한 파일 중 일부를 덮어쓸 수 있습니다.
- 배치 파일에 기록된 매개 변수는 다른 시스템에서 실행할 때 달라질 수 있습니다. 예를 들어 하드웨어 인스턴스 ID는 다른 시스템으로 이동할 때 동일한 하드웨어 및 드라이버에 대해 다를 수 있으며 사용자는 해당 대상 값(예: 디바이스 관리자)을 조회하고 배치 파일을 올바른 값으로 업데이트해야 합니다.
- 시스템을 구성하기 위해 연결된 구성 작업에 의존하는 테스트는 HLK가 테스트 작업 자체만 내보내기 때문에 올바르게 준비되지 않을 수 있습니다.
모든 결과를 내보낼 수 있는 것은 아닙니다. 다음 목록에서는 내보낼 수 있는 테스트 및 테스트 결과의 제한 사항에 대해 설명합니다.
- 테스트가 실행되었고 통과, 실패 또는 취소 상태로 완료되어야 합니다.
- 테스트 실행은 클라이언트 시스템에서 인프라 로그를 성공적으로 반환해야 합니다. 이러한 파일은 테스트를 내보내는 데 필요합니다.
- 단일 머신 테스트만 내보낼 수 있습니다. 실행하는 데 여러 머신이 필요한 테스트는 내보낼 수 없습니다.
- 테스트는 HLK 데스크톱 클라이언트를 사용하여 실행해야 합니다. Windows Core 또는 프록시 모바일 클라이언트 시스템에서 실행한 테스트는 내보낼 수 없습니다.
- 알려진 인프라 문제 또는 기타 이유로 인해 내보낼 수 없는 것으로 태그가 지정된 테스트는 내보낼 수 없습니다.
- HLK 스튜디오의 결과 탭에서 실패한 결과를 마우스 오른쪽 단추로 클릭하고 테스트 실행 내보내기를 선택합니다.
- 저장 대화 상자가 나타납니다. 내보낸 테스트를 다른 머신으로 가져올 수 있도록 내보낸 작업을 플래시 드라이브 또는 기타 외부 위치에 저장합니다. 동일한 테스트를 동일한 위치로 두 번 이상 내보낼 수 없습니다. 내보내기가 완료되었음을 확인하는 대화 상자가 표시됩니다.
- 독립 실행형 시스템에서 테스트를 실행하는 데 필요한 테스트 이진 파일 및 일괄 처리 파일은 지정된 디렉터리로 내보냅니다. 내보낸 테스트는 실패한 작업의 이름 및 아키텍처를 사용하여 하위 디렉터리에 저장됩니다. 테스트를 실행하기 위해 설치해야 하는 인프라 구성 요소는 인프라가 대상으로 하는 아키텍처의 이름과 함께 Infrastructure라는 하위 디렉토리에 저장됩니다.
참고
인프라 구성 요소는 대상 시스템에 한 번만 설치해야 합니다. 실패한 각 작업에 대해 이러한 구성 요소를 다시 설치할 필요는 없습니다.
예를 들어 드라이브 E:\의 루트에 렌더링 대상 설정이라는 제목의 실패한 x64 작업을 저장하면 다음 폴더 구조를 사용하여 작업 폴더와 인프라 설치 프로그램을 내보냅니다.
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를 실행하여 인프라 구성 요소를 설치합니다. 인프라 설치 관리자는 구성 요소가 성공적으로 설치되었는지 여부를 나타내는 대화 상자를 표시합니다.
참고
인프라 구성 요소는 대상 시스템에 한 번만 설치해야 합니다. 실패한 각 작업에 대해 이러한 구성 요소를 다시 설치할 필요는 없습니다.
참고
설치 프로그램 및 작업의 아키텍처는 설치 프로그램이 설치된 대상 시스템의 아키텍처와 일치해야 합니다.
- (save folder)(job name)(architecture) 폴더의 일괄 처리 파일 내에서 테스트 머신에서 실행할 일괄 처리 파일을 필요한 대로 변경할 수 있습니다. 예를 들어 다음과 같이 변경할 수 있습니다.
- 작업 실패에 기여하지 않는 줄 주석 처리
- 내보낸 테스트가 실행되는 머신과 일치하도록 매개 변수 값을 변경합니다. 예를 들어 동일한 하드웨어의 인스턴스 ID는 종종 두 개의 별도 시스템에서 다르므로 내보낸 테스트를 실행하기 전에 업데이트해야 합니다.
- 디버거를 연결하는 명령 추가
참고
작업에 “머신을 다시 부팅할 수 있으므로 이 테스트를 실행할 수 없습니다.”라는 오류 메시지가 표시되면 아래 예제와 같이 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 환경 내에서 작업이 성공하는지 확인할 수 있습니다.
참고
성공적인 결과를 HLK 환경으로 다시 가져올 수 없습니다. 환경 내에서 작업을 다시 실행해야 합니다.