Test delle unità di networking del kernel

Da Android 5.0, il corretto funzionamento dello stack di rete Android su Linux richiede un certo numero di commit eseguiti in upstream di recente o non sono ancora arrivati a monte. Non è facile verificare manualmente il funzionalità kernel richiesta o tenere traccia dei commit mancanti, quindi il team Android condivide i test che utilizza per assicurarsi che il kernel si comporti come previsto.

Motivi per eseguire i test

Questi test esistono per tre motivi:

  1. La versione esatta del kernel Linux utilizzata su un dispositivo è di solito sono specifici del dispositivo ed è difficile sapere se un kernel funziona correttamente senza eseguire i test.
  2. il trasferimento di il backporting delle patch del kernel su versioni del kernel diverse o potrebbero introdurre piccoli problemi impossibili da individuare senza eseguendo i test.
  3. Le nuove funzionalità di networking potrebbero richiedere nuove funzionalità o un bug del kernel correzioni.

Se i test non vengono superati, lo stack di rete del dispositivo non si comporta correttamente, causando bug di connettività visibili all'utente (ad esempio una caduta reti Wi-Fi). Probabilmente il dispositivo non supererà il test di compatibilità Android suite di test (CTS).

Utilizzare i test

I test utilizzano l'interfaccia utente in modalità Linux per avviare come processo su una macchina host Linux. Consulta Creazione di un ambiente di creazione per versioni appropriate del sistema operativo. Il framework del test delle unità avvia il kernel con un'immagine disco appropriata ed esegue i test del file system host. I test sono scritti in Python e utilizzano le interfacce TAP per il comportamento del kernel e l'API socket.

Compila il kernel per ARCH=um

Per eseguire i test, che il kernel deve compilare per ARCH=um SUBARCH=x86_64. Si tratta di un architettura supportata sia upstream sia nei comuni alberi di kernel Android (ad esempio android-4.4). A volte, però, il dispositivo i kernel non vengono compilati in questa modalità, perché le strutture ad albero dei dispositivi contengono codice specifico per dispositivo o hardware in file comuni (ad esempio sys/exit.c).

In molti casi, è sufficiente assicurarsi che un codice specifico dell'hardware è protetto da un #ifdef. In genere questo dovrebbe essere un #ifdef su un'opzione di configurazione che controlla lo specifico una caratteristica pertinente al codice. Se questa opzione di configurazione non è disponibile, inserisci codice specifico dell'hardware all'interno di blocchi #ifndef CONFIG_UML.

Nella in generale, la risoluzione di questo problema dovrebbe essere responsabilità del provider (come il chipset o il fornitore di SoC). Stiamo collaborando con OEM e fornitori per garantire che i kernel attuali e futuri vengono compilati per ARCH=um SUBARCH=x86_64 senza richiedere alcuna modifica.

Esegui i test

I test si svolgono alle ore kernel/tests/net/test. È consigliabile eseguire i test dall'ambiente principale AOSP in quanto sono le più aggiornate; in alcuni casi, le funzionalità del kernel che sono necessarie il corretto funzionamento in una determinata release di Android non ha ancora una copertura completa dei test nella release specificata. Per informazioni su come eseguire i test, consulta la sezione del kernel file README del test di rete. Fondamentalmente, dalla parte superiore dell'albero del kernel, esegui:

ANDROID_TREE/kernel/tests/net/test/run_net_test.sh all_tests.sh

Supera i test

Il test della rete kernel in Python i file sorgente contengono commenti che specificano i commit del kernel che sono noti necessari per superare i test. I test devono essere superati negli alberi di kernel comuni, rami kernel comuni android-4.4 e superiori, nel kernel/common progetto in AOSP. Perciò, passare i test su un kernel è semplicemente questione che unisce continuamente dal ramo del kernel comune corrispondente.

Contributi

Segnala problemi

Segnala eventuali problemi con i test di rete del kernel nel Issue Tracker con il Networking dei componenti dell'etichetta.

Commit dei documenti e aggiunta di test

Segnala i problemi come descritto sopra e, se possibile, carica una modifica per risolverli. se:

  • I test non superano i comuni alberi di kernel
  • Tu trovare un commit necessario non menzionato nei commenti sulla fonte,
  • Il superamento dei test sui kernel upstream richiede modifiche importanti
  • Ritieni che i test siano sovraspecificati o che il test non vada a buon fine in futuro kernel
  • Vuoi aggiungere altri test o più coperture agli account esistenti test.