云编排应用提供了一种高性能、可扩缩的方式来管理 Cuttlefish 实例,尤其适用于基于 ARM 的虚拟设备 (CHD)。OmniLab ATS 支持云端编排,因此您可以在虚拟设备上运行测试。在开始使用虚拟设备之前,请先按照 OmniLab Android Test Station 安装 OmniLab ATS。
概览
借助 Cloud Orchestration,OmniLab ATS 可将 Cuttlefish 实例的管理工作委托给专用 Cloud Orchestrator 服务。与现有的本地模式和远程模式相比,这种方法具有以下几点优势,同时还能保留熟悉的用户体验:
- 并行启动实例:允许同时启动多个 Cuttlefish 实例,从而显著减少测试开始前的开销时间。
- 可伸缩性:适合大规模测试环境。
- 资源隔离:将测试作业执行环境 (ATS worker) 与设备模拟环境分离。
前提条件
- 能够运行 Docker 的宿主机
- 访问 Cuttlefish 编排 Docker 映像
设置 Cloud Orchestrator 服务
Cloud Orchestrator 服务管理 Cuttlefish 实例的生命周期。您可以将该服务部署在各种环境中,并且该服务同时支持 x86 和 ARM 架构:
- 与 ATS worker 位于同一主机:在同一台机器上的 Docker 容器中运行
- 单独的机器:在能够运行 Docker 的本地服务器上运行
- 云实例:在云环境中的虚拟机上运行,例如 Google Compute Engine
安装和设置服务
按照 Cloud Android Orchestration README 启动服务。
身份验证和权限
如果 Cloud Orchestrator 服务在远程计算机上运行,请确保 ATS 工作器主机具有通过 HTTP 请求访问该服务的必要权限。如果不允许 HTTP 连接,您可能需要设置 SSH 端口转发。如需了解详情,请参阅试用云编排程序。
预期状态
成功启动 Cloud Orchestrator 服务后,应该可以使用 HTTP 访问该服务。您可以通过查询其 API 来验证其状态:
- Ping 服务:您应该能够从 OmniLab ATS 工作器主机访问服务端点。例如,运行
curl -I http://localhost:8080/v1/zones/local/hosts应该会返回成功的 HTTP 响应(HTTP/1.1 200 OK或重定向到/username的302 Found),以确认服务处于活跃状态且可访问。
为云编排配置 OmniLab ATS
在启动 OmniLab ATS 之前,请确保 OmniLab ATS 工作器主机上的所有 Cuttlefish 实例都已停止。OmniLab ATS 在测试周期内会自动启动和停止虚拟设备,而现有的 Cuttlefish 实例与 OmniLab ATS 管理的实例冲突。如需详细了解如何停止 Cuttlefish 实例,请参阅停止 Cuttlefish。
如需在 OmniLab ATS 中启用 Cloud Orchestration,请在启动 OmniLab ATS 时传递特定标志:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update--max_orchestration_virtual_devices:设置 Cloud Orchestrator 管理的虚拟设备数量上限,OmniLab ATS 可以同时分配的虚拟设备数量不得超过此上限。默认数量为 0。--orchestration_service_url:指定 Cloud Orchestration 服务正在监听的网址,例如http://localhost:8080。--use_host_network:为容器使用宿主机的网络命名空间。 这是访问 Cloud Orchestration 服务所必需的。--force_ats_version 2:强制使用 OmniLab ATS 2.0,这是 Cloud Orchestration 所必需的。如需了解详情,请参阅 OmniLab ATS 2.0 升级指南。--force_update:拉取具有 ATS 2.0 和 Cloud Orchestration 功能的最新容器 build。
配置虚拟设备硬件规格(可选)
默认情况下,每个云编排的虚拟设备实例都配置有 4 个 CPU 和 8192 MB (8 GB) 的 RAM。使用 Cloud Orchestration 启动 OmniLab ATS 时,您可以通过使用 --extra_docker_args 将 --android_jit_emulator_cpus 和 --android_jit_emulator_memory_mb 传递给 mtt start 命令中的实验室服务器,自定义虚拟设备实例的 CPU 核心数和内存分配:
mtt start --max_orchestration_virtual_devices N \
--orchestration_service_url=http://HOST:PORT \
--use_host_network \
--force_ats_version 2 \
--force_update \
--extra_docker_args '-e LAB_SERVER_OPTS="--android_jit_emulator_cpus=CPUS --android_jit_emulator_memory_mb=MEMORY_MB"'--android_jit_emulator_cpus:为每个虚拟设备实例设置 CPU 核心数。如果未设置或 ≤ 0,则默认为4。--android_jit_emulator_memory_mb:为每个虚拟设备实例设置内存(以兆字节 [MB] 为单位)。如果未设置或 ≤ 0,则默认为8192。
使用云端编排的设备运行测试
本部分介绍了在云端编排的虚拟设备上运行测试的步骤。
选择设备
在设备列表上,OmniLab ATS 会将云端编排的虚拟设备显示为占位符,而不是其实际序列号。占位符以 HOSTNAME:PORT 格式显示(例如,thehostname:6520)。状态是“可用”或“已分配”。“Available”状态占位符表示虚拟设备未运行并且可以分配给测试。
图 1. 选择云端编排的虚拟设备。
添加设备操作
当在这些设备上安排测试时,ATS 会自动添加所需的设备操作,以便在测试周期内预配和管理 Cuttlefish 实例。
图 2. 自动执行设备操作。
设置测试资源
安排测试时,您必须提供所需的测试资源。在设置测试资源部分中,确保您已将上传的文件映射到正确的资源名称:
- 将宿主工具软件包(例如
cvd-host_package.tar.gz)映射到名称cvd_host_package。 - 将设备映像 zip 文件映射到名称
cvd_device_image。
图 3. 映射测试资源。
查看测试运行和日志
测试完成后,您可以在输出文件部分查看日志。为 Cloud Orchestrator 管理的实例收集的特定日志包括:
launcher.log:来自 Cuttlefish 启动器的日志kernel.log:标准 Android 内核日志