OmniLab ATS hỗ trợ thiết bị ảo Cuttlefish cho phép bạn chạy các kiểm thử mà không cần thiết bị Android thực. Cuttlefish phù hợp để kiểm thử các chức năng độc lập với phần cứng. Trước khi bắt đầu sử dụng thiết bị ảo, hãy làm theo hướng dẫn sử dụng để cài đặt OmniLab ATS.
OmniLab ATS hỗ trợ các thiết bị ảo ở 3 chế độ: cục bộ, từ xa và Điều phối đám mây. Bảng sau đây so sánh các chế độ.
| Thiết bị ảo cục bộ | Thiết bị ảo từ xa | Điều phối đám mây |
|---|---|---|
| Chạy trên các máy chủ ATS worker | Chạy trên các máy chủ từ xa mà máy chủ worker ATS có thể truy cập thông qua SSH | Chạy trên các máy chủ cục bộ hoặc từ xa do Cloud Orchestrator quản lý |
| Dựa trên x86 | Có thể là x86 hoặc ARM, tuỳ thuộc vào cấu trúc máy chủ | Có thể là x86 hoặc ARM, tuỳ thuộc vào cấu trúc máy chủ |
| Dễ thiết lập hơn | Thiết lập phức tạp hơn | Hiệu suất cao, có khả năng mở rộng, hỗ trợ khởi chạy phiên bản song song |
Bạn có thể bật chế độ thiết bị ảo cục bộ và từ xa một cách độc lập. Ngoài ra, bạn có thể bật tính năng Điều phối trên đám mây. Đây là một giải pháp thay thế hiện đại, cung cấp đầy đủ các tính năng tương đương với cả hai chế độ, cùng với các lợi thế chính như khởi chạy thực thể song song và cách ly tài nguyên tốt hơn. Để biết thông tin chi tiết về từng chế độ, hãy xem:
- Thiết lập thiết bị ảo cục bộ
- Thiết lập thiết bị ảo từ xa
- Thiết lập thiết bị ảo được điều phối trên đám mây
Thiết lập thiết bị ảo cục bộ
Phần này mô tả các bước thiết lập OmniLab ATS cho các thiết bị ảo cục bộ.
Cài đặt các phần phụ thuộc của Cuttlefish
Chạy lệnh sau để đảm bảo các mô-đun kernel cần thiết được tải:
sudo modprobe -a kvm tun vhost_net vhost_vsockKhởi động OmniLab ATS bằng các thiết bị ảo cục bộ
Trước khi bắt đầu OmniLab ATS, hãy đảm bảo rằng tất cả các phiên bản Cuttlefish đều đã dừng. OmniLab ATS tự động khởi chạy và dừng các thiết bị ảo trong chu kỳ kiểm thử, đồng thời các phiên bản Cuttlefish hiện có sẽ xung đột với các phiên bản do OmniLab ATS quản lý. Để biết thông tin chi tiết về cách dừng các phiên bản Cuttlefish, hãy xem phần Dừng Cuttlefish.
Để bật thiết bị ảo cục bộ, hãy chạy:
mtt start --max_local_virtual_devices NN là số lượng thiết bị ảo tối đa mà OmniLab ATS có thể phân bổ đồng thời. Số mặc định là 0.
Nếu lệnh không thành công do thiếu các nút thiết bị, hãy làm theo các bước trong thông báo lỗi để tải các mô-đun hạt nhân. Nếu quá trình này vẫn không thành công, hãy khởi động lại máy.
Thiết lập thiết bị ảo từ xa
Phần này mô tả các bước thiết lập OmniLab ATS cho các thiết bị ảo từ xa.
Cài đặt các phần phụ thuộc của Cuttlefish
Để cài đặt các phần phụ thuộc của Cuttlefish, hãy làm theo các bước sau.
Cài đặt các gói Debian trên máy chủ từ xa bằng cách làm theo các bước trong phần Cuttlefish > Bắt đầu.
Định cấu hình số lượng thiết bị ảo tối đa trên máy chủ từ xa bằng cách làm theo các bước sau:
- Chỉnh sửa
/etc/default/cuttlefish-host-resourcesbằng đặc quyền gốc. - Đặt
num_cvd_accountsthành số lượng thiết bị ảo tối đa được phép trên máy chủ lưu trữ này. - Chạy
sudo systemctl restart cuttlefish-host-resources. - Chạy
ifconfigvà xác minh số lượng giao diệncvd-wtap-*.
- Chỉnh sửa
Tạo tài khoản SSH
Vì máy chủ OmniLab ATS kết nối với máy chủ từ xa thông qua SSH, nên bạn phải chuẩn bị một tài khoản SSH trên máy chủ từ xa. Vì OmniLab ATS thao tác với các tệp trong thư mục HOME, nên bạn nên tạo một tài khoản chuyên dụng.
Máy chủ OmniLab ATS yêu cầu một cặp khoá SSH để đăng nhập vào máy chủ từ xa mà không cần mật khẩu. Các bước sau đây mô tả cách thiết lập khoá SSH:
- Để tạo khoá riêng tư và khoá công khai, hãy chạy
ssh-keygentrên máy chủ OmniLab ATS. - Tải khoá công khai lên và thêm khoá này vào
~/.ssh/authorized_keystrên máy chủ từ xa.
Nếu tài khoản SSH của bạn khác với tài khoản dùng để cài đặt các phần phụ thuộc Cuttlefish, hãy chạy lệnh trên máy chủ từ xa này để cho phép tài khoản SSH khởi chạy Cuttlefish:
sudo usermod -aG kvm,cvdnetwork,render $USERKhởi động OmniLab ATS bằng các thiết bị ảo từ xa
Trước khi bắt đầu OmniLab ATS, hãy đảm bảo rằng tất cả các phiên bản Cuttlefish đều đã dừng. OmniLab ATS tự động khởi chạy và dừng các thiết bị ảo trong chu kỳ kiểm thử, đồng thời các phiên bản Cuttlefish hiện có sẽ xung đột với các phiên bản do OmniLab ATS quản lý. Để biết thông tin chi tiết về cách dừng các phiên bản Cuttlefish, hãy xem phần Dừng Cuttlefish.
Để có hiệu suất tốt hơn, bạn nên thiết lập máy chủ OmniLab ATS và máy chủ từ xa trong mạng cục bộ.
Để bật các thiết bị ảo từ xa, hãy chạy lệnh trên máy chủ lưu trữ OmniLab ATS:
mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEYUSER là tên tài khoản SSH.
HOST là địa chỉ IPv4 của máy chủ từ xa.
N là số lượng thiết bị ảo tối đa mà OmniLab ATS có thể phân bổ đồng thời.
KEY là đường dẫn đến khoá SSH riêng tư trên máy chủ OmniLab ATS.
Lệnh này kiểm tra kết nối với máy chủ từ xa trước khi khởi động OmniLab ATS.
Nếu bảng điều khiển hiển thị một thông báo cảnh báo như The specified --remote_virtual_devices and --remote_ssh_key are invalid., bạn nên kiểm tra chế độ thiết lập SSH.
Để tránh xung đột tài nguyên, một máy chủ ATS OmniLab có thể kết nối tối đa với một máy chủ từ xa. Không thể kết nối nhiều máy chủ OmniLab ATS với một máy chủ từ xa cùng một lúc.
Chạy kiểm thử bằng thiết bị ảo
Phần này mô tả các bước chạy một kiểm thử trên thiết bị ảo cục bộ hoặc từ xa.
Một số thiết bị chọn lọc
Trong danh sách thiết bị, OmniLab ATS hiển thị các thiết bị ảo dưới dạng phần giữ chỗ thay vì số sê-ri thực tế của chúng. Các phần giữ chỗ được hiển thị ở định dạng HOSTNAME:local-virtual-device-ID cho thiết bị ảo cục bộ; remote-virtual-ADDRESS-ID cho thiết bị ảo từ xa. Trạng thái có thể là Đã có sẵn hoặc Đã được phân bổ. Phần giữ chỗ ở trạng thái Có sẵn cho biết thiết bị ảo không chạy và có thể được phân bổ cho hoạt động kiểm thử.
Hình 1. Chọn thiết bị ảo
Thêm các thao tác trên thiết bị
Nếu bạn chọn ít nhất một thiết bị ảo, thì thao tác trên thiết bị liên kết sẽ tự động được thêm vào danh sách. Thao tác này bao gồm các tham số TradeFed bắt buộc và tài nguyên kiểm thử để tạo thiết bị ảo.
Hình 2. Các thao tác trên thiết bị đối với thiết bị ảo cục bộ
Hình 3. Thao tác trên thiết bị đối với thiết bị ảo từ xa
Thiết lập tài nguyên thử nghiệm
Thiết bị ảo Cuttlefish cần 3 tài nguyên kiểm thử, đó là các công cụ máy ảo, hình ảnh và Acloud.
Trong bản dựng Cuttlefish thông thường (ví dụ: aosp_cf_x86_64_only_phone-userdebug trên ci.android.com), các công cụ máy ảo được đóng gói trong cvd-host_package.tar.gz và hình ảnh nằm trong aosp_cf_x86_64_only_phone-img-*.zip. Tệp nhị phân Acloud được tạo trong OmniLab ATS và tương thích với mọi phiên bản Cuttlefish. Bạn chỉ cần thay đổi URL tải xuống mặc định của tệp nhị phân Acloud cho mục đích gỡ lỗi.
Hình 4. Tài nguyên kiểm thử cho thiết bị ảo
Xem các lần chạy thử
Nhật ký thiết bị, bao gồm kernel.log, host_log.txt và launcher.log, được thu thập trong thư mục tệp đầu ra. Nhấp vào Xem tệp đầu ra để xem các tệp đó.
Hình 5. Kết quả chạy thử