Thiết bị ảo trong OmniLab ATS

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 ở 2 chế độ: cục bộ và từ xa. Bảng sau đây so sánh hai chế độ này.

Thiết bị ảo cục bộ Thiết bị ảo từ xa
Chạy trên các máy chủ worker ATS Chạy trên các máy chủ từ xa mà máy chủ ATS worker có thể truy cập thông qua SSH
Dựa trên x86 Có thể là x86 hoặc ARM, tuỳ thuộc vào cấu trúc của máy chủ
Dễ thiết lập hơn Thiết lập phức tạp hơn

Bạn có thể bật các thiết bị ảo cục bộ và từ xa một cách độc lập. Để 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ộ

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_vsock

Khở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 N

N 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.

  1. 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.

  2. Đị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:

    1. Chỉnh sửa /etc/default/cuttlefish-host-resources bằng đặc quyền gốc.
    2. Đặt num_cvd_accounts thành số lượng thiết bị ảo tối đa được phép trên máy chủ lưu trữ này.
    3. Chạy sudo systemctl restart cuttlefish-host-resources.
    4. Chạy ifconfig và xác minh số lượng giao diện cvd-wtap-*.

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:

  1. Để tạo khoá riêng tư và khoá công khai, hãy chạy ssh-keygen trên máy chủ OmniLab ATS.
  2. Tải khoá công khai lên và thêm khoá này vào ~/.ssh/authorized_keys trê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 $USER

Khở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 KEY

USER 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.

Chọn thiết bị

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. Các trạng thái này là Đã có sẵn hoặ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ử.

Chọn Thiết bị ảo

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ì hành động của 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 động của thiết bị ảo cục bộ

Hình 2. Các thao tác trên thiết bị đối với thiết bị ảo cục bộ

Thao tác trên thiết bị ảo từ xa

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.

Tài nguyên kiểm thử thiết bị ảo

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.txtlauncher.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 đó.

Kết quả chạy thử

Hình 5. Kết quả chạy thử