Controllare lo stato del sistema

I controlli dello stato del sistema (SSC) vengono definiti a livello di configurazione della suite e vengono eseguiti tra ciascun modulo. Eseguono controlli per determinare se il modulo è cambiato e non ha ripristinato alcuni stati specifici, ad esempio modificando un valore della proprietà sistema.

Le SSC vengono utilizzate principalmente per garantire che gli autori dei moduli non dimenticano di eseguire la pulizia dopo i test, ma se lo fanno, forniscine una traccia in modo che possa essere gestita.

Un utilizzo secondario è ripristinare lo stato originale, se possibile, ad esempio chiudendo la tastiera se è stata lasciata aperta.

Definizione XML del controllo dello stato del sistema

<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" />

Le SSC sono definite nel tag system_checker nel file XML della configurazione Trading.

Implementazione

Ogni modulo di servizio di sicurezza deve implementare l'interfaccia ISystemStatusChecker, che fornisce i due metodi principali preExecutionCheck e postExecutionCheck che vengono eseguiti prima e dopo ogni esecuzione del modulo.

Un controllore può implementare solo uno dei due o entrambi se è necessario controllare lo stato prima del modulo e confrontarlo con lo stato dopo il modulo.

In Tradefed esistono diversi esempi di implementazioni. Per ogni implementazione è consigliabile concentrarsi su un singolo controllo per migliorare la riusabilità. Ad esempio, SystemServerStatusCheck controlla se il processo system_server è stato riavviato sul dispositivo durante l'esecuzione del complesso di test. In postExecutionCheck, chiama deviceSoftRestarted, che è definito in NativeDevice per verificare se il processo system_server è stato riavviato.

Ogni operazione restituisce StatusCheckerResult, che consente al cablaggio di decidere se acquisire informazioni aggiuntive, come una segnalazione di bug.

Dove sono definiti in CTS?

I controlli dello stato del sistema CTS sono definiti in /test/suite_harness/tools/cts-tradefed/res/config/cts-system-checkers.xml.

Come individuare gli errori dei controlli

Per impostazione predefinita, gli errori del controllore di sistema vengono visualizzati solo nei log e come segnalazioni di bug acquisite per l'invocazione con nome nel formato bugreport-checker-post-module-<module name>.zip.

In questo modo puoi scoprire dopo quale modulo è stata generata la segnalazione di bug.

È possibile rendere il report di controllo del sistema come un test non riuscito impostando l'opzione --report-system-checkers su true. In questo modo, l'esecuzione di un test risulta non riuscita e il motivo dell'errore è la particolare verifica del controllo dello stato.