Kiểm tra đơn vị mạng nhân

Kể từ Android 5.0, hoạt động chính xác của ngăn xếp mạng Android trên nhân Linux yêu cầu một số cam kết được cập nhật tương đối gần đây hoặc chưa được cập nhật. Không dễ để xác minh thủ công chức năng kernel cần thiết hoặc theo dõi các cam kết bị thiếu, vì vậy nhóm Android đang chia sẻ các thử nghiệm mà họ sử dụng để đảm bảo kernel hoạt động như mong đợi.

Tại sao phải chạy thử nghiệm?

Những thử nghiệm này tồn tại vì ba lý do chính:

  1. Phiên bản chính xác của nhân Linux được sử dụng trên một thiết bị thường dành riêng cho từng thiết bị và rất khó để biết liệu nhân Linux nào có hoạt động bình thường nếu không chạy thử nghiệm hay không.
  2. Việc chuyển tiếp và chuyển ngược các bản vá hạt nhân sang các phiên bản hạt nhân khác nhau hoặc các cây thiết bị khác nhau có thể gây ra các vấn đề khó phát hiện nếu không chạy thử nghiệm.
  3. Các tính năng mạng mới có thể yêu cầu chức năng kernel mới hoặc sửa lỗi kernel.

Nếu các bài kiểm tra không vượt qua, ngăn xếp mạng của thiết bị sẽ hoạt động không chính xác, gây ra lỗi kết nối mà người dùng có thể nhìn thấy (chẳng hạn như mạng Wi-Fi bị rớt). Thiết bị cũng có thể sẽ không đạt các bài kiểm tra Bộ kiểm tra khả năng tương thích Android (CTS).

Sử dụng các bài kiểm tra

Các thử nghiệm sử dụng Linux Chế độ người dùng để khởi động kernel như một tiến trình trên máy chủ Linux. Xem Thiết lập môi trường xây dựng để có các phiên bản hệ điều hành phù hợp. Khung kiểm tra đơn vị khởi động hạt nhân với ảnh đĩa thích hợp và chạy kiểm tra từ hệ thống tệp máy chủ. Các bài kiểm tra được viết bằng Python và sử dụng giao diện TAP để thực hiện hành vi của kernel và API socket.

Biên dịch kernel cho ARCH=um

Để chạy thử nghiệm, kernel phải biên dịch cho ARCH=um SUBARCH=x86_64 . Đây là kiến ​​trúc được hỗ trợ cả ở thượng nguồn và trong các cây nhân Android phổ biến (chẳng hạn như android-4.4 ). Nhưng đôi khi nhân thiết bị không biên dịch ở chế độ này vì cây thiết bị chứa mã dành riêng cho thiết bị hoặc phần cứng cụ thể trong các tệp phổ biến (ví dụ: sys/exit.c ).

Trong nhiều trường hợp, việc đảm bảo rằng mã dành riêng cho phần cứng nằm sau #ifdef là đủ. Thông thường, đây phải là #ifdef trên tùy chọn cấu hình kiểm soát tính năng cụ thể có liên quan đến mã. Nếu không có tùy chọn cấu hình như vậy, hãy đặt mã dành riêng cho phần cứng bên trong các khối #ifndef CONFIG_UML .

Nói chung, việc khắc phục vấn đề này là trách nhiệm của nhà cung cấp cây nhân (chẳng hạn như nhà cung cấp chipset hoặc SoC). Chúng tôi đang làm việc với các OEM và nhà cung cấp để đảm bảo rằng các hạt nhân hiện tại và tương lai sẽ biên dịch cho ARCH=um SUBARCH=x86_64 mà không yêu cầu bất kỳ thay đổi nào.

Chạy thử nghiệm

Các bài kiểm tra có tại kernel/tests/net/test . Chúng tôi khuyên bạn nên chạy thử nghiệm từ AOSP main vì chúng là những thử nghiệm cập nhật nhất; trong một số trường hợp, các tính năng hạt nhân cần thiết để hoạt động bình thường trong một bản phát hành Android nhất định chưa có phạm vi thử nghiệm đầy đủ trong bản phát hành nhất định. Để biết thông tin về cách chạy thử nghiệm, hãy xem tệp README thử nghiệm mạng hạt nhân . Về cơ bản, từ đầu cây kernel của bạn, hãy chạy:

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

Vượt qua các bài kiểm tra

Kiểm tra mạng nhân Các tệp nguồn Python chứa các nhận xét chỉ định các cam kết của nhân được biết là cần thiết để vượt qua các bài kiểm tra. Các bài kiểm tra phải vượt qua trong các cây hạt nhân chung - tất cả các nhánh hạt nhân chung android-4.4 trở lên - trong kernel/common trong AOSP. Do đó, việc vượt qua các bài kiểm tra trên kernel chỉ đơn giản là vấn đề hợp nhất liên tục từ nhánh kernel chung tương ứng.

Đóng góp

Vấn đề báo cáo

Vui lòng báo cáo mọi sự cố với các thử nghiệm mạng hạt nhân trong trình theo dõi sự cố Android với nhãn Mạng thành phần .

Ghi lại các cam kết và thêm các bài kiểm tra

Vui lòng báo cáo sự cố như được mô tả ở trên và nếu có thể hãy tải lên thay đổi để khắc phục sự cố nếu:

  • Các bài kiểm tra không vượt qua trên cây hạt nhân thông thường
  • Bạn tìm thấy một cam kết cần thiết không được đề cập trong các nhận xét nguồn,
  • Việc vượt qua các bài kiểm tra trên các hạt nhân ngược dòng đòi hỏi những thay đổi lớn
  • Bạn cho rằng các thử nghiệm được chỉ định quá mức hoặc thử nghiệm thất bại trên các hạt nhân trong tương lai
  • Bạn muốn thêm nhiều bài kiểm tra hơn hoặc phạm vi bao quát hơn cho các bài kiểm tra hiện có.