OmniLab ATS 支援 Cuttlefish 虛擬裝置,可讓您在沒有 Android 實體裝置的情況下執行測試。Cuttlefish 適合測試與硬體無關的函式。開始使用虛擬裝置前,請按照使用者指南安裝 OmniLab ATS。
OmniLab ATS 支援兩種模式的虛擬裝置:本機和遠端。下表比較這兩種模式。
本機虛擬裝置 | 遠端虛擬裝置 |
---|---|
在 ATS 工作站主機上執行 | 在 ATS 工作站主機可透過 SSH 存取的遠端主機上執行 |
x86 型 | 視主機架構而定,可以是 x86 或 ARM |
設定更簡單 | 設定較為複雜 |
本機和遠端虛擬裝置可分別啟用。如要瞭解各模式的詳細資訊,請參閱:
設定本機虛擬裝置
本節說明如何為本機虛擬裝置設定 OmniLab ATS。
安裝 Cuttlefish 依附元件
執行下列指令,確保載入必要的核心模組:
sudo modprobe -a kvm tun vhost_net vhost_vsock
使用本機虛擬裝置啟動 OmniLab ATS
開始使用 OmniLab ATS 前,請務必停止所有 Cuttlefish 執行個體。OmniLab ATS 會在測試週期自動啟動及停止虛擬裝置,現有的 Cuttlefish 執行個體會與 OmniLab ATS 管理的執行個體發生衝突。如要瞭解如何停止 Cuttlefish 執行個體,請參閱「停止 Cuttlefish」一文。
如要啟用本機虛擬裝置,請執行下列指令:
mtt start --max_local_virtual_devices N
N
是 OmniLab ATS 可同時分配的虛擬裝置數量上限。預設值為 0。
如果指令因缺少裝置節點而失敗,請按照錯誤訊息中的步驟載入核心模組。如果仍無法完成,請重新啟動電腦。
設定遠端虛擬裝置
本節說明如何設定 OmniLab ATS,以便使用遠端虛擬裝置。
安裝 Cuttlefish 依附元件
如要安裝 Cuttlefish 依附元件,請按照下列步驟操作。
按照「Cuttlefish > 開始使用」一文中的步驟,在遠端主機上安裝 Debian 套件。
按照下列步驟,在遠端主機上設定虛擬裝置數量上限:
- 使用 Root 權限編輯
/etc/default/cuttlefish-host-resources
。 - 將
num_cvd_accounts
設為允許在此主機上使用的虛擬裝置數量上限。 - 執行
sudo systemctl restart cuttlefish-host-resources
。 - 執行
ifconfig
並驗證cvd-wtap-*
介面數量。
- 使用 Root 權限編輯
建立 SSH 帳戶
由於 OmniLab ATS 主機會透過 SSH 連線至遠端主機,因此您必須在遠端主機上準備 SSH 帳戶。由於 OmniLab ATS 會操控 HOME 目錄中的檔案,建議您建立專用帳戶。
OmniLab ATS 主機需要一組 SSH 金鑰,才能在不輸入密碼的情況下登入遠端主機。請按照下列步驟設定 SSH 金鑰:
- 如要產生私密金鑰和公開金鑰,請在
ssh-keygen
OmniLab ATS 主機上執行。 - 上傳公開金鑰,並附加至
~/.ssh/authorized_keys
遠端主機。
如果您的 SSH 帳戶與安裝 Cuttlefish 依附元件時使用的帳戶不同,請在遠端主機上執行下列指令,允許 SSH 帳戶啟動 Cuttlefish:
sudo usermod -aG kvm,cvdnetwork,render $USER
使用遠端虛擬裝置啟動 OmniLab ATS
開始使用 OmniLab ATS 前,請務必停止所有 Cuttlefish 執行個體。OmniLab ATS 會在測試週期自動啟動及停止虛擬裝置,現有的 Cuttlefish 執行個體會與 OmniLab ATS 管理的執行個體發生衝突。如要瞭解如何停止 Cuttlefish 執行個體,請參閱「停止 Cuttlefish」一文。
為提升效能,建議您在區域網路中設定 OmniLab ATS 主機和遠端主機。
如要啟用遠端虛擬裝置,請在 OmniLab ATS 主機上執行下列指令:
mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY
USER
是 SSH 帳戶名稱。
HOST
是遠端主機的 IPv4 位址。
N
是 OmniLab ATS 可同時分配的虛擬裝置數量上限。
KEY
是OmniLab ATS 主機上私密安全殼層金鑰的路徑。
這項指令會在啟動 OmniLab ATS 前,測試與遠端主機的連線。
如果控制台顯示類似 The specified --remote_virtual_devices and --remote_ssh_key are invalid.
的警告訊息,請檢查 SSH 設定。
為避免資源衝突,OmniLab ATS 主機最多只能連線至一部遠端主機。多個 OmniLab ATS 主機無法同時連線至一個遠端主機。
使用虛擬裝置執行測試
本節說明在本地或遠端虛擬裝置上執行測試的步驟。
選取裝置
在裝置清單中,OmniLab ATS 會將虛擬裝置顯示為預留位置,而非實際序號。本機虛擬裝置的預留位置格式為「HOSTNAME:local-virtual-device-ID」;遠端虛擬裝置的預留位置格式為「remote-virtual-ADDRESS-ID」。狀態為「可用」或「已分配」。處於「Available」狀態的預留位置表示虛擬裝置未執行,可分配給測試。
圖 1. 選取虛擬裝置
新增裝置動作
如果選取至少一個虛擬裝置,相關聯的裝置動作應會自動新增至清單。這項動作包含建立虛擬裝置所需的 TradeFed 參數和測試資源。
圖 2. 本機虛擬裝置的裝置動作
圖 3. 遠端虛擬裝置的裝置動作
設定測試資源
Cuttlefish 虛擬裝置需要三項測試資源:虛擬機器工具、映像檔和 Acloud。在典型的 Cuttlefish 建構版本 (例如 ci.android.com 上的 aosp_cf_x86_64_only_phone-userdebug
),虛擬機器工具會封裝在 cvd-host_package.tar.gz
中,映像檔則位於 aosp_cf_x86_64_only_phone-img-*.zip
。Acloud 二進位檔建構於 OmniLab ATS,且與所有版本的 Cuttlefish 相容。只有在偵錯時,才需要變更 Acloud 二進位檔的預設下載網址。
圖 4. 虛擬裝置測試資源
查看測試執行作業
裝置記錄 (包括 kernel.log
、host_log.txt
和 launcher.log
) 會收集在輸出檔案資料夾中。按一下「查看輸出檔案」即可查看。
圖 5. 測試執行結果