시스템 상태 검사기(SSC)는 도구 모음 수준 구성에서 정의되며 각 모듈 간에 실행됩니다. 또한 검사를 수행하여 모듈이 변경되었는지, 일부 상태를 복원하지 않았는지 확인합니다(예: 시스템 속성 값 변경).
SSC는 주로 테스트 이후에 모듈 작성자가 정리 과정을 잊지 않았는지 확인하는 용도로 사용되며, 과정을 잊은 경우에는 해결이 가능하도록 추적 기록을 제공합니다.
부수적인 용도는 가능한 경우 원래 상태를 복원하는 것입니다(예: 열려 있는 키가드 해제).
시스템 상태 검사기 XML 정의
<system_checker class="com.android.tradefed.suite.checker.KeyguardStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.LeakedThreadStatusChecker" />
<system_checker class="com.android.tradefed.suite.checker.SystemServerStatusChecker" />
SSC는 Tradefed 구성 XML의 system_checker
태그 아래에 정의되어 있습니다.
구현
모든 SSC는 각 모듈 실행 전과 후에 실행되는 두 가지 기본 메서드인 preExecutionCheck
및 postExecutionCheck
를 제공하는 ISystemStatusChecker
인터페이스를 구현해야 합니다.
검사기는 둘 중 하나만 구현할 수 있으며, 모듈 전에 상태를 확인하여 모듈 이후의 상태와 비교하는 경우에는 둘 다를 구현할 수도 있습니다.
Tradefed에 여러 구현 예시가 마련되어 있습니다. 각 구현은 단일 검사에 집중하여 재사용성을 개선하는 것이 좋습니다. 예를 들어 SystemServerStatusCheck
는 테스트 모음이 실행되는 동안 기기에서 system_server
프로세스가 재시작되었는지 확인합니다. postExecutionCheck
에서는 NativeDevice
에 정의된 deviceSoftRestarted
를 호출하여 system_server
프로세스가 재시작되었는지 확인합니다.
각 작업은 하네스에서 버그 신고와 같은 추가 정보의 캡처 여부를 결정할 수 있게 해주는 StatusCheckerResult
를 반환합니다.
CTS가 정의된 위치
CTS 시스템 상태 검사기는 /test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml에 정의되어 있습니다.
검사기 실패를 찾는 방법
기본적으로 시스템 검사기 실패는 로그에만 표시되며, 다음 형식에 따라 이름이 지정된 버그에 관한 버그 신고서로 로그에 표시됩니다.
bugreport-checker-post-module-<module name>.zip
이를 통해 어떤 모듈 이후에 버그 신고서가 생성되었는지 알아낼 수 있습니다.
--report-system-checkers
옵션을 true
로 설정하여 시스템 검사기 보고서를 테스트 실패 자체로 만들 수도 있습니다. 그러면 테스트 실행이 실패로 표시되며, 실패 이유는 상태 검사기에 한정된 검사가 됩니다.