Controllare lo stato del sistema

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

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

Un utilizzo secondario è anche quello di ripristinare lo stato originale, se possibile, ad esempio chiudendo la schermata di blocco se era rimasta 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" />

Gli SSC sono definiti nel tag system_checker nel file XML di configurazione di Tradefed.

Implementazione

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

È possibile che un controllo 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 diverse implementazioni di esempio. Per migliorare la riusabilità, è consigliabile che ogni implementazione si concentri su un singolo controllo. Ad esempio, SystemServerStatusCheck verifica se il processo system_server è stato riavviato sul dispositivo durante l'esecuzione della suite di test. In postExecutionCheck, chiama deviceSoftRestarted, definito in NativeDevice per verificare se il processo system_server è stato riavviato.

Ogni operazione restituisce StatusCheckerResult, che consente all'harness di decidere se devono essere acquisite 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 controllo del sistema vengono visualizzati solo nei log e nei report sui bug acquisiti per la chiamata 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 fare in modo che il report del controllo del sistema venga considerato come un errore del test impostando l'opzione --report-system-checkers su true. Il risultato è un'esecuzione di test che viene visualizzata come non riuscita e il motivo del mancato superamento è il controllo specifico del controllo dello stato.