OmniLab ATS 中的云编排

Cloud Orchestration 应用提供了一种高性能、可扩缩的方式来管理 Cuttlefish 实例,尤其适用于基于 ARM 的虚拟设备 (CHD)。OmniLab ATS 支持 Cloud Orchestration,因此您可以在虚拟设备上运行测试。在开始使用虚拟 设备之前,请按照 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 worker 主机具有通过 HTTP 请求访问该服务所需的权限。如果不允许 HTTP 连接,您可能需要设置 SSH 端口转发。如需了解详情,请参阅 试用 Cloud Orchestrator

预期状态

Cloud Orchestrator 服务成功启动后,应可以使用 HTTP 访问。您可以通过查询其 API 来验证其状态:

  • ping 服务: 您应该能够从 OmniLab ATS worker 主机访问服务端点。例如,运行 curl -I http://localhost:8080/v1/zones/local/hosts 应返回成功的 HTTP 响应(HTTP/1.1 200 OK 或重定向到 /username302 Found),以确认服务处于活跃状态且可访问。

为 Cloud Orchestration 配置 OmniLab ATS

在启动 OmniLab ATS 之前,请确保 OmniLab ATS worker 主机上的所有 Cuttlefish 实例都已停止。OmniLab ATS 在测试周期内会自动启动和停止虚拟设备,而现有的 Cuttlefish 实例与 OmniLab ATS 管理的实例冲突。如需详细了解如何停止 Cuttlefish 实例,请参阅停止 Cuttlefish

如需在 OmniLab ATS 中启用 Cloud Orchestration,请在启动 OmniLab ATS 时传递特定标志:

mtt start --use_cloud_orchestrator \
  --orchestration_service_url=http://HOST:PORT \
  --max_local_virtual_devices N \
  --use_host_network \
  --force_ats_version 2 \
  --force_update
  • --use_cloud_orchestrator:启用 Cloud Orchestration 功能。
  • --orchestration_service_url:指定 Cloud Orchestration 服务正在监听的网址,例如 http://localhost:8080
  • --max_local_virtual_devices:设置 OmniLab ATS 可以同时分配的虚拟设备的最大数量。默认数量为 0。
  • --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。

使用云编排的设备运行测试

本部分介绍了在云编排的虚拟设备上运行测试的步骤。

选择设备

在设备列表上,OmniLab ATS 会将云编排的虚拟设备显示为占位符,而不是其实际序列号。占位符的格式为 HOSTNAME:PORT(例如 thehostname:6520)。状态是 可用已分配可用 状态占位符表示虚拟设备未运行并且可以分配给测试。

选择“云编排的设备”

图 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 内核日志