核心網路單元測試

自 Android 5.0 起,Linux 上的 Android 網路堆疊可正常運作 核心需要一些近期上游的修訂版本 或是尚未上游您可以輕鬆手動驗證 需要核心功能,或追蹤缺少的修訂版本,因此 Android 團隊 是分享所使用的測試,確保核心運作符合預期。

執行測試的原因

這些測試針對三大 原因:

  1. 裝置上搭載的 Linux kernel 確切版本為 通常專屬於特定裝置,而您將難以判斷 無需執行測試,即可正常運作。
  2. 向前移植與 將核心修補程式向後移植到不同核心版本或不同版本 裝置樹狀結構可能會引起一些細微問題,而 並進行測試
  3. 使用新的網路功能可能需要新的核心功能或核心錯誤 找出程式碼中的安全漏洞和錯誤 並提供修正建議

如果測試未通過,代表裝置的網路堆疊 運作異常,造成使用者可見的連線錯誤 (例如應用程式停止運作) Wi-Fi 網路)。該裝置也可能無法通過 Android 相容性測試 套件 (CTS) 測試。

使用測試

測試會使用 User-Mode Linux 來啟動 做為 Linux 主體機器上的程序詳情請見 建立建構環境: 適用的作業系統版本單元測試架構 使用適當的磁碟映像檔啟動核心,然後從 主機檔案系統測試是以 Python 編寫,並透過 TAP 介面執行 運動核心行為和通訊端 API

編譯 ARCH=um 的核心

若要執行測試 核心必須針對 ARCH=um SUBARCH=x86_64 進行編譯。這是 支援上游和常見 Android 核心樹狀結構的架構 (例如 android-4.4)。但有時也會是裝置 在這個模式下,系統不會編譯核心,因為裝置樹狀結構含有 將裝置專屬程式碼或硬體專屬程式碼納入常見檔案中 (例如 sys/exit.c)。

在許多情況下,這足以確保 硬體專屬程式碼位於 #ifdef 後方。這通常應該 是設定選項的 #ifdef,用於控制 程式碼相關功能如果沒有這類設定選項,請將 位於 #ifndef CONFIG_UML 區塊內的硬體專屬程式碼

於 一般而言,修正此問題應該由核心樹提供者負責 例如晶片組或 SoC 供應商我們正與原始設備製造商 (OEM) 及供應商合作, 目前和未來的核心為 ARCH=um SUBARCH=x86_64 編譯,且無須進行任何變更。

執行測試

測試位於 kernel/tests/net/test。 建議您透過 Android 開放原始碼計畫主平台執行測試,因為這類測試 都是最新版本;在某些情況下,核心功能必須 在特定 Android 版本中可執行的作業尚未有完整的測試涵蓋範圍 特定版本的相關資訊如要瞭解如何執行測試,請參閱核心說明 網路測試 README 檔案。從核心樹狀結構頂端,執行:

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

通過測試

核心網路測試 Python 來源檔案包含的註解指定了已知核心修訂版本 才能通過測試這些測試應透過常見的核心樹狀結構傳遞。 共同核心分支 android-4.4 以上版本 - kernel/common 專案。因此,在核心上傳遞測試 持續從對應的常見核心分支版本合併。

貢獻

回報問題

回報 Android 中核心網路測試的相關問題 Issue Tracker 搭配 Component-Networking 標籤。

文件修訂版本及新增測試

按照上述方式回報問題,如果可以上傳變更來修正問題, 如果:

  • 這些測試無法通過常見的核心樹狀結構
  • 個人中心 尋找來源註解中未提及的必要修訂版本。
  • 要讓測試通過上游核心,必須進行重大變更
  • 您認為測試過度指定,或未來測試失敗 核心
  • 您想在現有廣告活動 測試。