Çekirdek Ağ Birimi Testleri

Android 5.0'dan bu yana, Android ağ yığınının Linux çekirdekleri üzerinde düzgün çalışması, nispeten yakın zamanda yukarı akışa alınmış veya henüz yukarı akışa yapılmamış bir dizi taahhüt gerektirir. Gerekli çekirdek işlevselliğini manuel olarak doğrulamak veya eksik taahhütleri takip etmek kolay değil; bu nedenle Android ekibi, çekirdeğin beklendiği gibi davrandığından emin olmak için kullandığı testleri paylaşıyor.

Testleri neden yapmalısınız?

Bu testler üç ana nedenden dolayı mevcuttur:

  1. Bir aygıtta kullanılan Linux çekirdeğinin tam sürümü genellikle aygıta özgüdür ve testleri çalıştırmadan herhangi bir çekirdeğin düzgün çalışıp çalışmayacağını bilmek zordur.
  2. Çekirdek yamalarını farklı çekirdek sürümlerine veya farklı cihaz ağaçlarına ileri ve geri taşımak, testleri çalıştırmadan tespit edilmesi imkansız olabilecek ince sorunları ortaya çıkarabilir.
  3. Yeni ağ özellikleri, yeni çekirdek işlevselliği veya çekirdek hata düzeltmeleri gerektirebilir.

Testler geçilmezse cihazın ağ yığını hatalı davranarak kullanıcının görebileceği bağlantı hatalarına (Wi-Fi ağlarının kesilmesi gibi) neden olur. Cihaz muhtemelen Android Uyumluluk Testi Paketi (CTS) testlerinde de başarısız olacaktır.

Testleri kullanma

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

ARCH=um için çekirdeğin derlenmesi

Testlerin çalışması için çekirdeğin ARCH=um SUBARCH=x86_64 için derlenmesi gerekir. Bu, hem yukarı yönde hem de ortak Android çekirdek ağaçlarında ( android-4.4 gibi) desteklenen bir mimaridir. Ancak bazen aygıt çekirdekleri bu modda derlenmez çünkü aygıt ağaçları ortak dosyalarda aygıta özgü veya donanıma özgü kodlar içerir (örneğin sys/exit.c ).

Çoğu durumda donanıma özgü kodun #ifdef arkasında olduğundan emin olmak yeterlidir. Genellikle bu, kodla ilgili belirli özelliği kontrol eden bir yapılandırma seçeneğindeki #ifdef olmalıdır. Böyle bir yapılandırma seçeneği yoksa donanıma özel kodu #ifndef CONFIG_UML bloklarının içine yerleştirin.

Genel olarak, bunun düzeltilmesi çekirdek ağacı sağlayıcısının (yonga seti veya SoC satıcısı gibi) sorumluluğunda olmalıdır. Mevcut ve gelecekteki çekirdeklerin herhangi bir değişiklik gerektirmeden ARCH=um SUBARCH=x86_64 için derlenmesini sağlamak için OEM'ler ve satıcılarla birlikte çalışıyoruz.

Testleri çalıştırma

Testler kernel/tests/net/test adresindedir. Testlerin AOSP main'den çalıştırılması tavsiye edilir çünkü bunlar en güncel testlerdir; Bazı durumlarda, belirli bir Android sürümünde düzgün çalışma için gerekli olan çekirdek özellikleri, söz konusu sürümde henüz tam test kapsamına sahip değildir. Testlerin nasıl çalıştırılacağı hakkında bilgi için çekirdek ağ testi README dosyasına bakın. Temel olarak, çekirdek ağacınızın üst kısmından şunu çalıştırın:

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

Testleri geçmek

Ç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 projedeki ortak çekirdek ağaçlarında (tüm ortak çekirdek dalları android-4.4 ve üstü) geçmelidir. Bu nedenle, bir çekirdek üzerindeki testleri geçmek, ilgili ortak çekirdek dalından sürekli olarak birleşme meselesidir.

Katkı

Raporlama sorunları

Lütfen Android sorun izleyicideki çekirdek ağ testleriyle ilgili tüm sorunları Bileşen Ağ İletişimi etiketiyle bildirin.

Taahhütleri belgeleme ve testler ekleme

Lütfen sorunları yukarıda açıklandığı şekilde bildirin ve aşağıdaki durumlarda mümkünse sorunu düzeltmek için bir değişiklik yükleyin:

  • Testler ortak çekirdek ağaçlarında geçmiyor
  • Kaynak yorumlarında belirtilmeyen gerekli bir taahhüt buluyorsunuz,
  • Testlerin yukarı akış çekirdeklerine geçmesini sağlamak büyük değişiklikler gerektirir
  • Testlerin gereğinden fazla belirtildiğini veya gelecekteki çekirdeklerde testin başarısız olduğunu düşünüyorsunuz
  • Mevcut testlere daha fazla test veya daha fazla kapsam eklemek istiyorsunuz.