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à di sistema.

I controlli di sicurezza dei moduli vengono utilizzati principalmente per assicurarsi che gli autori dei moduli non dimentichino di eseguire la pulizia dopo i test; ma se lo fanno, forniscono una traccia in modo che il problema possa essere risolto.

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

I codici SSC sono definiti nel tag system_checker nel file XML di configurazione di TradeFed.

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.

È possibile che un controllore implementi 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 trovare gli errori del controllo

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 che lo strumento di controllo del sistema registri un errore di test impostando l'opzione --report-system-checkers su true. Di conseguenza, la corsa di test viene visualizzata come non riuscita e il motivo dell'errore è il controllo dello stato.