Çekirdek ağ birim testleri

Android 5.0'den beri, Linux çekirdeklerinde Android ağ yığınının düzgün çalışması için nispeten yakın zamanda ana ağa aktarılan veya henüz ana ağa aktarılmamış bir dizi taahhüt gerekir. Gerekli çekirdek işlevlerini manuel olarak doğrulamak veya eksik taahhütleri izlemek kolay değildir. Bu nedenle Android ekibi, çekirdeğin beklendiği gibi davranmasını sağlamak için kullandığı testleri paylaşmaktadır.

Testleri çalıştırma nedenleri

Bu testlerin üç ana nedeni vardır:

  1. Bir cihazda kullanılan Linux çekirdeğinin tam sürümü genellikle cihaza özeldir ve testleri çalıştırmadan herhangi bir çekirdeğin düzgün çalışıp çalışmadığını bilmek zordur.
  2. Çekirdek yamalarını farklı çekirdek sürümlerine veya farklı cihaz ağaçlarına ileriye ve geriye taşımak, testleri çalıştırmadan tespit edilmesi imkansız olabilecek küçük sorunlara neden olabilir.
  3. Yeni ağ özellikleri için yeni çekirdek işlevleri veya çekirdek hata düzeltmeleri gerekebilir.

Testler geçemezse cihazın ağ yığını hatalı davranır ve kullanıcı tarafından görülebilen bağlantı hatalarına (ör. kablosuz ağlardan bağlantının kesilmesi) neden olur. Cihaz, Android Uyumluluk Test Paketi (CTS) testlerinde de muhtemelen başarısız olur.

Testleri kullanma

Testler, Linux ana makinesinde çekirdeği bir işlem olarak başlatmak için Kullanıcı Modu Linux'u kullanır. Uygun işletim sistemi sürümleri için Derleme Ortamı Oluşturma bölümüne bakın. Birim test çerçevesi, çekirdeği uygun bir disk görüntüsüyle başlatır ve testleri ana makine dosya sisteminden çalıştırır. Testler Python'da yazılmıştır ve çekirdek davranışını ve soket API'sini test etmek için TAP arayüzlerini kullanır.

Çekirdeği ARCH=um için derleme

Testlerin çalıştırılması için çekirdeğin ARCH=um SUBARCH=x86_64 için derlenmesi gerekir. Bu, hem yayın öncesi hem de ortak Android çekirdek ağaçlarında (android-4.4 gibi) desteklenen bir mimaridir. Ancak cihaz ağaçları ortak dosyalarda cihaza veya donanıma özel kod içerdiğinden (örneğin, sys/exit.c) cihaz çekirdekleri bazen bu modda derlenmez.

Çoğu durumda, donanıma özgü kodun #ifdef içinde yer aldığından emin olmak yeterlidir. Bu genellikle, kodla ilgili belirli bir özelliği kontrol eden bir yapılandırma seçeneğinde #ifdef olmalıdır. Böyle bir yapılandırma seçeneği yoksa donanıma özgü kodu #ifndef CONFIG_UML bloklarının içine yerleştirin.

Genel olarak bu sorunun düzeltilmesi, çekirdek ağacı sağlayıcısının (ör. yonga seti veya SoC tedarikçisi) sorumluluğundadır. Mevcut ve gelecekteki çekirdeklerin herhangi bir değişiklik gerektirmeden ARCH=um SUBARCH=x86_64 için derlenmesini sağlamak amacıyla OEM'ler ve tedarikçi firmalarla birlikte çalışıyoruz.

Testleri çalıştırma

Testler kernel/tests/net/test adresindedir. Testlerin en güncel sürümleri olduğu için AOSP ana sürümünden çalıştırılması önerilir. Bazı durumlarda, belirli bir Android sürümünde düzgün çalışması için gerekli olan çekirdek özellikleri henüz ilgili sürümde tam test kapsamına alınmamıştır. Testlerin nasıl çalıştırılacağına dair bilgi için çekirdek ağ testi README dosyasına bakın. Temel olarak, çekirdek ağacınızın üst kısmından şunları çalıştırın:

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

Testleri geçme

Çekirdek ağ testi Python kaynak dosyaları, testleri geçmek için gerekli olduğu bilinen çekirdek taahhütlerini belirten yorumlar içerir. Testler, AOSP'deki kernel/common projesinde ortak çekirdek ağaçlarında (android-4.4 ve sonraki tüm ortak çekirdek dalları) geçmelidir. Bu nedenle, bir çekirdekteki testleri geçmek için tek yapmanız gereken, ilgili ortak çekirdek dalından sürekli olarak birleştirme işlemi gerçekleştirmektir.

Katkılar

Sorun bildir

Çekirdek ağ testleriyle ilgili sorunları Android sorun izleyicisinde Bileşen-Ağ etiketiyle bildirin.

Doküman taahhütleri ve test ekleme

Aşağıda açıklandığı şekilde sorunları bildirin ve mümkünse sorunu düzeltmek için bir değişiklik yükleyin.

  • Testler, ortak çekirdek ağaçlarında geçmiyor
  • Kaynak yorumlarda bahsedilmeyen gerekli bir taahhüt bulursanız
  • Testlerin yayın öncesi çekirdeklerde başarılı olması için büyük değişiklikler yapılması gerekir
  • Testlerin gereğinden fazla ayrıntılı olduğunu veya testin gelecekteki çekirdeklerde başarısız olduğunu düşünüyorsanız
  • Mevcut testlere daha fazla test veya daha fazla kapsam eklemek istiyorsanız.