Kiểm thử đơn vị mạng hạt nhân

Kể từ Android 5.0, ngăn xếp mạng Android hoạt động đúng cách trên Linux nhân đòi hỏi một số thay đổi được cập nhật tương đối gần đây hoặc chưa được lưu giữ. Việc xác minh chức năng nhân hệ điều hành hoặc theo dõi các thay đổi bị thiếu, để nhóm Android đang chia sẻ các bài kiểm thử mà nó sử dụng để đảm bảo hạt nhân hoạt động như mong đợi.

Lý do để chạy thử nghiệm

Các chương trình kiểm thử này dành cho 3 lý do:

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

Nếu quy trình kiểm thử không thành công, ngăn xếp mạng của thiết bị 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ư lỗi kết nối mạng Wi-Fi). Thiết bị này cũng có thể sẽ không vượt qua được quy trình Kiểm tra tính tương thích với Android Kiểm tra bộ (CTS).

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

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

Biên dịch hạt nhân cho ARCH=um

Để chạy chương trình kiểm thử, nhân hệ điều hành phải biên dịch cho ARCH=um SUBARCH=x86_64. Đây là một cấu trúc được hỗ trợ cả thượng nguồn và trong cây nhân hệ điều hành Android phổ biến (chẳng hạn như android-4.4). Nhưng đôi khi thiết bị nhân 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 chung (ví dụ: sys/exit.c).

Trong nhiều trường hợp, chỉ cần đảm bảo rằng mã dành riêng cho phần cứng đứng sau #ifdef. Thông thường, thao tác này sẽ là #ifdef trên tuỳ chọn cấu hình kiểm soát việc liên quan đến mã. Nếu không có tuỳ 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 khối #ifndef CONFIG_UML.

Trong nói chung, việc khắc phục sự cố này là trách nhiệm của trình cung cấp cây nhân (chẳng hạn như bộ vi mạch hoặc nhà cung cấp SoC). Chúng tôi đang hợp tác với nhà sản xuất thiết bị gố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 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 kiểm thử

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

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

Vượt qua kiểm thử

Kiểm thử mạng nhân hệ điều hành Python tệp nguồn chứa nhận xét chỉ định các thay đổi trong kernel đã biết cần thiết để vượt qua bài kiểm thử. Các bài kiểm thử phải đạt trong 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 phần kernel/common dự án trong AOSP. Do đó, việc vượt qua các bài kiểm thử trên một hạt nhân chỉ đơn giản là vấn đề liên tục hợp nhất từ nhánh hạt nhân chung tương ứng.

Đóng góp

Báo cáo vấn đề

Báo cáo mọi sự cố với kiểm thử mạng nhân hệ điều hành trong Android công cụ theo dõi lỗi với tính năng Kết nối mạng thành phần .

Ghi lại các thay đổi và thêm chương trình kiểm thử

Báo cáo vấn đề như mô tả ở trên và nếu có thể, hãy tải một thay đổi lên để khắc phục vấn đề, nếu:

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