Testy jednostkowe jądra sieci

Od Androida 5.0 prawidłowe działanie stosu sieciowego na urządzeniach z Androidem jądra systemu wymagają liczby zatwierdzeń, które zostały stosunkowo niedawno wdrożone lub nawet nie doszły jeszcze do niej. Ręczne sprawdzenie lub śledzić brakujące zatwierdzenia, więc zespół Androida udostępnia testy, które wykorzystuje, aby sprawdzić, czy jądro działa zgodnie z oczekiwaniami.

Powody, dla których warto przeprowadzić testy

Te testy dotyczą 3 głównych przyczyny:

  1. Dokładna wersja jądra systemu Linux używana na urządzeniu to jest zwykle związane z konkretnymi urządzeniami i trudno jest stwierdzić, czy działa prawidłowo bez przeprowadzania testów.
  2. Forward-porting wstecznego przenoszenia poprawek jądra do różnych wersji jądra lub innych, drzewa urządzeń mogą powodować drobne problemy, których nie da się zauważyć bez przeprowadzamy testy.
  3. Nowe funkcje sieciowe mogą wymagać nowych funkcji jądra lub błędu jądra naprawiania błędów.

Jeśli testy nie zakończą się powodzeniem, stos sieciowy urządzenia działa nieprawidłowo, powodując problemy z łącznością widoczne dla użytkowników (np. Wi-Fi). Urządzenie prawdopodobnie nie przejdzie testu zgodności z Androidem. Testy pakietu (CTS).

Korzystanie z testów

Testy używają trybu użytkownika w trybie użytkownika do uruchamiania systemu jako proces na hoście z systemem Linux. Zobacz Tworzenie środowiska kompilacji dla odpowiednich wersji systemu operacyjnego. Platforma testowania jednostkowego uruchamia jądro z odpowiednim obrazem dysku i uruchamia testy systemu plików hosta. Testy są napisane w języku Python i wykorzystują interfejsy TAP do dla działania jądra i interfejsu API gniazda.

Kompilowanie jądra dla ARCH=um

Aby przeprowadzić testy, jądro musi skompilować na potrzeby ARCH=um SUBARCH=x86_64. To jest obsługiwaną architekturę zarówno na poziomie wyższym, jak i we wspólnych drzewach jądra Androida (np. android-4.4). Czasem jednak jądra systemu nie kompilują w tym trybie, ponieważ drzewa urządzeń zawierają kodu powiązanego z konkretnym urządzeniem lub sprzętowym w popularnych plikach (np. sys/exit.c).

W wielu przypadkach wystarczy upewnić się, że kod sprzętowy jest za elementem #ifdef. Zwykle jako #ifdef w opcji konfiguracji, która kontroluje określone odpowiednią dla kodu. Jeśli nie ma takiej opcji konfiguracji, konkretnego kodu sprzętowego w #ifndef CONFIG_UML blokach.

W zasadniczo, za naprawę tego błędu powinien odpowiadać dostawca drzewa jądra (np. chipsetu lub dostawcy układów SOC). Współpracujemy z producentami OEM i dostawcami, aby zapewnić które obecne i przyszłe jądra kompilują pod kątem ARCH=um SUBARCH=x86_64 bez konieczności wprowadzania zmian.

Przeprowadzanie testów

Terminy testów: kernel/tests/net/test. Zaleca się uruchamianie testów z poziomu głównej usługi AOSP, ponieważ są najbardziej aktualne, w niektórych przypadkach funkcje jądra są niezbędne prawidłowe działanie danej wersji Androida nie obejmuje jeszcze wszystkich testów w danym wydaniu. Informacje o przeprowadzaniu testów znajdziesz w jądrze plik README do testowania sieci. Ogólnie rzecz biorąc, z góry drzewa jądra uruchom polecenie:

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

Zdaj testy

Testowanie Pythona w sieci jądra pliki źródłowe zawierają komentarze, które określają zatwierdzenia jądra systemu wymagane do zaliczenia testów. Testy powinny zakończyć się we wspólnym drzewie jądra – wszystkie typowe gałęzie jądra android-4.4 i wyższe – w sekcji kernel/common. w projekcie AOSP. Dlatego zaliczenie testów w jądrze jest kwestią po prostu ciągłe scalanie z odpowiedniej wspólnej gałęzi jądra.

Współuczestnictwo

Zgłoś problemy

Zgłoś wszelkie problemy z testami sieci jądra w Androidzie narzędzie do rejestrowania problemów z narzędziem Komponent-Networking .

Zatwierdzenia dokumentów i dodawanie testów

Zgłoś problemy w sposób opisany powyżej i w miarę możliwości prześlij zmianę, aby rozwiązać problem. jeśli:

  • Testy nie zachodzą w powszechnych jądrach jądra systemu.
  • Ty znaleźć niezbędne zatwierdzenie, które nie zostało wymienione w komentarzach dotyczących źródła,
  • Skonfigurowanie testów tak, aby działały w nadrzędnym jądrze, wymaga dużych zmian
  • Uważasz, że testy są nadmiarowe lub że w przyszłości test się nie uda jądra systemu
  • Chcesz dodać więcej testów lub zwiększyć zasięg testów.