Çekirdek ağ birimi testleri

Android 5.0'dan beri Linux'ta Android ağ yığınının doğru şekilde çalışması çekirdekler, nispeten yakın zamanda yukarı akışlı birkaç kaydetme gerektiriyor veya henüz yayına geçmemişsiniz. Verilerinizi manuel olarak doğrulamak kolay değildir. eksik kayıt işlemlerini takip edebilmesini sağlamak için Android ekibi çekirdeğin beklendiği gibi çalıştığından emin olmak için kullandığı testleri paylaşıyor.

Testlerin çalıştırılma nedenleri

Bu testler üç temel amaç için nedenler:

  1. Bir cihazda kullanılan Linux çekirdeğinin tam sürümü özgüdür ve herhangi bir çekirdeğin düzgün şekilde çalıştığından emin olun.
  2. İleriye doğru taşıma ve Çekirdek yamalarını farklı çekirdek sürümlerine veya farklı sürümlere cihaz ağaçları, cihaz kuralları olmadan tespit edilemeyecek şekilde uygulayacaksınız.
  3. Yeni ağ iletişimi özellikleri, yeni çekirdek işlevi veya çekirdek hatası gerektirebilir gider.

Testler başarısız olursa cihazın ağ yığını düzgün çalışmadığı için kullanıcının görebildiği bağlantı hatalarına (ör. bağlantının kesilmesi) Kablosuz ağlar). Cihaz, büyük olasılıkla Android Uyumluluk Testi'nde de başarısız olacaktır Paket (CTS) testleri.

Testleri kullanın

Testlerde Kullanıcı Modu Linux kullanılarak çekirdeğine, Linux ana makinesinde bir işlem olarak uygulanır. Görüntüleyin Aşağıdakiler için bir Derleme Ortamı Oluşturma: uygun işletim sistemi sürümleri. Birim testi çerçevesi çekirdeği uygun bir disk görüntüsüyle başlatır ve ana makine dosya sisteminde görünür. Testler Python'da yazılmıştır ve TAP arayüzlerini kullanarak davranışını ve yuva API'sini kullanmaya devam etmesini sağlar.

ARCH=um için çekirdeğini derleyin

Testlerin çalıştırılabilmesi için çekirdek ARCH=um SUBARCH=x86_64 için derlemelidir. Bu, hem üretimde hem de ortak Android çekirdek ağaçlarında desteklenen mimari (ör. android-4.4). Ancak bazen cihaz cihaz ağaçları ortak dosyalardaki cihaza özgü veya donanıma özgü kod (örneğin, sys/exit.c) tıklayın.

Çoğu durumda, bir riskin donanıma özgü kod bir #ifdef arkasındadır. Genellikle bu, olup olmadığını kontrol eden bir yapılandırma seçeneğinde #ifdef bir özellik olduğunu unutmayın. Böyle bir yapılandırma seçeneği yoksa donanıma özgü kod gibi #ifndef CONFIG_UML bloklarda

İçinde bunun düzeltilmesi, çekirdek ağacı sağlayıcısının sorumluluğunda olmalıdır. (ör. yonga seti veya SoC tedarikçisi). OEM'ler ve tedarikçilerle birlikte çalışarak bu mevcut ve gelecekteki çekirdeklerin herhangi bir değişiklik yapmadan ARCH=um SUBARCH=x86_64 için derlenmesini sağlar.

Testleri yapın

Testlerin yapılacağı saat: kernel/tests/net/test. Testlerin AOSP ana adresinden çalıştırılması önerilir, çünkü en güncel içeriklerdir; bazı durumlarda, istemciler için gereken çekirdek özelliklerini belirli bir Android sürümünde doğru şekilde çalışmamanın henüz tam test kapsamına sahip olmaması izin veriliyor. Testlerin nasıl çalıştırılacağı hakkında bilgi edinmek için çekirdeke ağ testi BENİOKU dosyasını inceleyin. Temel olarak çekirdek ağacınızın en üst kısmından şu komutu çalıştırın:

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

Testleri geçin

Python'da çekirdek ağ testi kaynak dosyalar, gereken en önemli şeydir. Testler yaygın çekirdek ağaçlarında geçmelidir. android-4.4 ve daha yüksek yaygın çekirdek dalları kernel/common AOSP'deki bir projedir. Bu nedenle, bir çekirdekte testleri geçmek, tek bir kod oluşturacaktır.

Katkılar

Sorun bildir

Çekirdek ağı testleriyle ilgili sorunları Android Bileşen Ağ İletişimi ile ilgili sorun izleyici etiket.

Doküman kaydetme ve test ekleme

Sorunları yukarıda açıklandığı şekilde bildirin ve mümkünse sorunu düzeltmek için bir değişiklik yükleyin, eğer:

  • Testler yaygın çekirdek ağaçlarını geçemez
  • Siz kaynak yorumlarda bahsedilmeyen gerekli bir kayıt bulması durumunda
  • Yukarı akış çekirdeklerini geçmek için test etmek büyük değişiklikler gerektirir
  • Testlerin gereğinden fazla belirlendiğini veya ileride testin başarısız olduğunu düşünüyorsanız çekirdekler
  • Mevcut testlere daha fazla test veya kapsam eklemek istiyorsunuz testler.