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:
- 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.
- İ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.
- 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.