시스템 상태 확인

시스템 상태 검사기(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는 각 모듈 실행 전과 후에 실행되는 두 가지 기본 메서드인 preExecutionCheckpostExecutionCheck를 제공하는 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로 설정하여 시스템 검사기 보고서를 테스트 실패 자체로 만들 수도 있습니다. 그러면 테스트 실행이 실패로 표시되며, 실패 이유는 상태 검사기에 한정된 검사가 됩니다.