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 執行個體,請參閱「Stop 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 金鑰,才能在沒有密碼的情況下登入遠端主機。下列步驟說明如何設定安全殼層金鑰:
- 如要產生私密金鑰和公開金鑰,請在 OmniLab ATS 主機上執行
ssh-keygen
。 - 上傳並附加公開金鑰至
~/.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 (遠端虛擬裝置)。狀態為「可用」或「已分配」。可用狀態中的預留位置表示虛擬裝置未執行,可用於測試。
圖 1. 選取虛擬裝置
新增裝置動作
如果您至少選取一個虛擬裝置,系統應會自動將相關聯的裝置動作加入清單。這項動作包含建立虛擬裝置所需的 TradeFed 參數和測試資源。
圖 2. 本機虛擬裝置的裝置動作
圖 3. 遠端虛擬裝置的裝置動作
設定測試資源
Cuttlefish 虛擬裝置需要三項測試資源:虛擬機器工具、映像檔和 Acloud。在一般的 Cuttlefish 方案 (例如 ci.android.com 上的 aosp_cf_x86_64_phone
) 中,虛擬機器工具會封裝在 cvd-host_package.tar.gz
中,而映像檔則位於 aosp_cf_x86_64_phone-img-*.zip
中。Acloud 二進位檔是在 OmniLab ATS 中建構,且與所有 Cuttlefish 版本相容。您只需要為了偵錯而變更 Acloud 二進位檔的預設下載網址。
圖 4. 測試虛擬裝置的資源
查看測試執行作業
裝置記錄 (包括 kernel.log
、host_log.txt
和 launcher.log
) 會收集在輸出檔案資料夾中。按一下「查看輸出檔案」即可查看這些檔案。
圖 5. 測試執行結果