Thiết bị ảo trong OmniLab ATS

OmniLab ATS hỗ trợ thiết bị ảo Cuttlefish cho phép bạn chạy kiểm thử mà không cần thiết bị Android thực. Mực ống phù hợp để kiểm thử các hàm không phụ thuộc vào 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ợ thiết bị ảo ở hai chế độ, cục bộ và từ xa. Bảng sau đây so sánh hai chế độ.

Thiết bị ảo cục bộ Thiết bị ảo từ xa
Chạy trên máy chủ worker ATS 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
Dùng nền tảng 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 Khó thiết lập hơn

Bạn có thể bật 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 rằng các mô-đun nhân cần thiết đã được tải:

sudo modprobe -a kvm tun vhost_net vhost_vsock

Khởi động OmniLab ATS bằng thiết bị ảo cục bộ

Trước khi bắt đầu chạy OmniLab ATS, hãy đảm bảo bạn đã dừng tất cả các thực thể Cuttlefish. 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 thực thể Cuttlefish hiện có xung đột với các thực thể do OmniLab ATS quản lý. Để biết thông tin chi tiết về cách dừng các thực thể 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 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 nhân. Nếu 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 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ủ 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ủ ATS OmniLab kết nối với máy chủ từ xa thông qua SSH, nên bạn phải chuẩn bị tài khoản SSH trên máy chủ lưu trữ 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 và nối khoá công khai 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, để cho phép tài khoản SSH chạy Cuttlefish, hãy chạy lệnh này trên máy chủ từ xa:

sudo usermod -aG kvm,cvdnetwork,render $USER

Khởi động OmniLab ATS bằng thiết bị ảo từ xa

Trước khi khởi động OmniLab ATS, hãy đảm bảo tất cả các thực thể 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 thực thể Cuttlefish hiện có xung đột với các thực thể do OmniLab ATS quản lý. Để biết thông tin chi tiết về cách dừng các thực thể Cuttlefish, hãy xem phần Dừng Cuttlefish.

Để đạt đượ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 thiết bị ảo từ xa, hãy chạy lệnh sau trên máy chủ 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ể đồng thời phân bổ.

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 thông báo cảnh báo xuất hiện, chẳng hạn như The specified --remote_virtual_devices and --remote_ssh_key are invalid. trên bảng điều khiển, bạn nên kiểm tra chế độ thiết lập SSH.

Để tránh xung đột tài nguyên, máy chủ OmniLab ATS có thể kết nối với tối đa một máy chủ từ xa. Nhiều máy chủ OmniLab ATS không thể kết nối 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 kiểm thử trên thiết bị ảo cục bộ hoặc từ xa.

Chọn thiết bị

Trên danh sách thiết bị, OmniLab ATS hiển thị các thiết bị ảo ở dạng phần giữ chỗ thay vì số sê-ri thực tế của các thiết bị đó. Phần giữ chỗ hiển thị ở định dạng HOSTNAME:local-virtual-device-ID đối với thiết bị ảo cục bộ; remote-virtual-ADDRESS-ID đối với 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 kiểm thử.

Chọn Thiết bị ảo

Hình 1. Chọn thiết bị ảo

Thêm 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 trên thiết bị được 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 trên thiết bị ảo cục bộ

Hình 2. Thao tác trên thiết bị cho các thiết bị ảo cục bộ

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

Hình 3. Thao tác trên thiết bị cho thiết bị ảo từ xa

Thiết lập tài nguyên kiểm thử

Các thiết bị ảo Cuttlefish cần 3 tài nguyên kiểm thử, công cụ máy ảo, hình ảnh và Acloud. Trong một bản dựng Cuttlefish thông thường (ví dụ: aosp_cf_x86_64_phone 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_phone-img-*.zip. Tệp nhị phân Acloud được tạo trong OmniLab ATS và tương thích với tất cả 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. Kiểm thử tài nguyên cho thiết bị ảo

Xem các lần chạy kiểm 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ử nghiệm

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