Thiết bị ảo trong Android Test Station

Android Test Station hỗ trợ các thiết bị ảo Cuttlefish cho phép bạn chạy các chương trình kiểm thử mà không cần đến thiết bị Android thực. Mực ống 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 Android Test Station.

ATS hỗ trợ các thiết bị ảo ở 2 chế độ là 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ựa trên x86 Có thể là x86 hoặc ARM tuỳ thuộc vào kiến trúc của máy chủ
Dễ thiết lập hơn Phức tạp hơn khi thiết lập

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 các thiết bị ảo cục bộ

Phần này mô tả các bước để thiết lập ATS cho các thiết bị ảo cục bộ.

Cài đặt phần phụ thuộc Mực ống

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 Trạm kiểm tra Android bằng các thiết bị ảo cục bộ

Trước khi bắt đầu chạy ATS, hãy đảm bảo bạn đã dừng tất cả thực thể mực nang. ATS tự động 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 ATS quản lý. Để biết thông tin chi tiết về cách dừng các thực thể mực ống, hãy xem phần Dừng tôm hùm.

Để bật các 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à 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 ATS cho các thiết bị ảo từ xa.

Cài đặt phần phụ thuộc Mực ống

Để cài đặt các phần phụ thuộc Mực ống, 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 Cuttlefish > Get started.

  2. Định cấu hình số lượng thiết bị ảo tối đa trên máy chủ lưu trữ 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 để cho 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ủ 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ị tài khoản SSH trên máy chủ từ xa. Vì ATS điều khiển các tệp trong thư mục HOME, bạn nên tạo một tài khoản riêng.

Máy chủ lưu trữ ATS yêu cầu bạn phải có 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ủ ATS.
  2. Tải lên và thêm khoá công khai vào ~/.ssh/authorized_keys trên máy chủ lưu trữ 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 của 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 ATS bằng các thiết bị ảo từ xa

Trước khi bắt đầu chạy ATS, hãy đảm bảo bạn đã dừng tất cả thực thể mực nang. ATS tự động 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 ATS quản lý. Để biết thông tin chi tiết về cách dừng các thực thể mực ống, hãy xem phần Dừng tôm hùm.

Để có hiệu suất tốt hơn, bạn nên thiết lập máy chủ ATS và máy chủ lưu trữ từ xa trong mạng cục bộ.

Để bật các thiết bị ảo từ xa, hãy chạy lệnh sau trên máy chủ 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ủ lưu trữ từ xa.

N là số lượng thiết bị ảo tối đa mà 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ủ ATS.

Lệnh này sẽ kiểm tra kết nối với máy chủ lưu trữ từ xa trước khi khởi động ATS. Nếu thấy thông báo cảnh báo như The specified --remote_virtual_devices and --remote_ssh_key are invalid. trên bảng điều khiển, thì bạn nên kiểm tra chế độ thiết lập SSH.

Để tránh xung đột tài nguyên, máy chủ ATS có thể kết nối với tối đa một máy chủ từ xa. Nhiều máy chủ lưu trữ ATS không thể kết nối cùng một lúc với một máy chủ lưu trữ từ xa.

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 các thiết bị ảo cục bộ hoặc từ xa.

Chọn thiết bị

Trên danh sách thiết bị, 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ác phần giữ chỗ được hiển thị ở định dạng giàu:local-virtual-device-ID cho các thiết bị ảo cục bộ; remote-virtual-ADDRESS-ID cho các thiết bị ảo từ xa. Các trạng thái sẽ là Có sẵn hoặc Đã phân bổ. Phần giữ chỗ ở trạng thái Available (Có sẵn) cho biết thiết bị ảo hiện 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 hành động trên thiết bị

Nếu bạn chọn ít nhất một thiết bị ảo, thì thao tác liên kết với thiết bị sẽ được tự động 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.

Thao tác cục bộ trên thiết bị ảo

Hình 2. Hành động 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ích hợp sẵn ATS và tương thích với mọi phiên bản của mực nang. 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 các thiết bị ảo

Xem các lần chạy kiểm thử

Nhật ký thiết bị, bao gồm cả kernel.log, host_log.txtlauncher.log sẽ được thu thập trong thư mục tệp đầu ra. Hãy nhấp vào Xem tệp đầu ra để xem.

Kết quả chạy thử nghiệm

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