OmniLab ATS의 클라우드 오케스트레이션

Cloud Orchestration 앱은 특히 ARM 기반 가상 기기 (CHD)의 경우 Cuttlefish 인스턴스를 관리하는 확장 가능한 고성능 방법을 제공합니다. OmniLab ATS는 가상 기기에서 테스트를 실행할 수 있도록 클라우드 오케스트레이션을 지원합니다. 가상 기기 사용을 시작하기 전에 OmniLab Android 테스트 스테이션에 따라 OmniLab ATS를 설치합니다.

개요

Cloud Orchestration을 사용하면 OmniLab ATS가 Cuttlefish 인스턴스 관리를 전용 Cloud Orchestrator 서비스에 위임할 수 있습니다. 이 접근 방식은 기존 로컬 및 원격 모드에 비해 다음과 같은 여러 이점을 제공하면서도 친숙한 사용자 환경을 유지합니다.

  • 병렬 인스턴스 실행: 여러 Cuttlefish 인스턴스를 동시에 실행할 수 있어 테스트 시작 전 오버헤드 시간이 크게 줄어듭니다.
  • 확장성: 대규모 테스트 환경에 적합합니다.
  • 리소스 격리: 테스트 실행 환경 (ATS 작업자)을 기기 에뮬레이션 환경에서 분리합니다.

기본 요건

  • Docker를 실행할 수 있는 호스트 머신
  • Cuttlefish 오케스트레이션 Docker 이미지 액세스

Cloud Orchestrator 서비스 설정

Cloud Orchestrator 서비스는 Cuttlefish 인스턴스의 수명 주기를 관리합니다. 다양한 환경에 서비스를 배포할 수 있으며 x86 및 ARM 아키텍처를 모두 지원합니다.

  • ATS 작업자와 동일한 호스트: 동일한 머신의 Docker 컨테이너에서 실행됩니다.
  • 별도 머신: Docker를 실행할 수 있는 온프레미스 서버에서 실행됩니다.
  • 클라우드 인스턴스: 클라우드 환경(예: Google Compute Engine)의 가상 머신에서 실행됩니다.

서비스 설치 및 설정

Cloud Android Orchestration README에 따라 서비스를 실행합니다.

인증 및 권한

Cloud Orchestrator 서비스가 원격 머신에서 실행되는 경우 ATS 작업자 호스트에 HTTP 요청을 통해 액세스하는 데 필요한 권한이 있는지 확인합니다. HTTP 연결이 허용되지 않으면 SSH 포트 전달을 설정해야 할 수 있습니다. 자세한 내용은 클라우드 조정자 사용해 보기를 참고하세요.

예상 상태

Cloud Orchestrator 서비스가 성공적으로 시작되면 HTTP를 사용하여 연결할 수 있어야 합니다. API를 쿼리하여 상태를 확인할 수 있습니다.

  • 서비스 핑: 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에서 클라우드 오케스트레이션을 사용 설정하려면 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: OmniLab ATS가 동시에 할당할 수 있는 Cloud Orchestrator에서 관리하는 최대 가상 기기 수를 설정합니다. 기본값은 0입니다.
  • --orchestration_service_url: Cloud Orchestration 서비스가 수신 대기하는 URL을 지정합니다(예: http://localhost:8080).
  • --use_host_network: 컨테이너에 호스트의 네트워크 네임스페이스를 사용합니다. Cloud Orchestration 서비스에 액세스하는 데 필요합니다.
  • --force_ats_version 2: 클라우드 오케스트레이션에 필요한 OmniLab ATS 2.0의 사용을 강제합니다. 자세한 내용은 OmniLab ATS 2.0 업그레이드 가이드를 참고하세요.
  • --force_update: ATS 2.0 및 클라우드 오케스트레이션 기능이 포함된 최신 컨테이너 빌드를 가져옵니다.

가상 기기 하드웨어 사양 구성 (선택사항)

기본적으로 각 클라우드 오케스트레이션 가상 기기 인스턴스에는 CPU 4개, 8192MB (8GB) RAM, 일반 SIM, 연결된 SD 카드 이미지가 프로비저닝됩니다. 클라우드 오케스트레이션으로 OmniLab ATS를 실행할 때 --extra_docker_args을 사용하여 mtt start 명령어에 해당 실험실 서버 플래그를 전달하여 이러한 기본값을 재정의할 수 있습니다. 각 플래그는 독립적입니다. 변경하려는 플래그만 전달하고 나머지는 기본값을 유지하도록 생략하세요.

  • --android_jit_emulator_cpus: 각 가상 기기 인스턴스의 CPU 코어 수를 설정합니다. 설정하지 않거나 0이면 기본값은 4입니다.
  • --android_jit_emulator_memory_mb: 각 가상 기기 인스턴스의 메모리 (MB)를 설정합니다. 설정하지 않거나 0이면 기본값은 8192입니다.
  • --android_jit_emulator_modem_simulator_sim_type: 모뎀 시뮬레이터가 각 가상 기기 인스턴스에 대해 에뮬레이션하는 SIM 유형을 설정합니다. 일반 SIM의 경우 1, 이동통신사 권한이 있는 SIM의 경우 2 (CtsCarrierApiTestCases에서 필요)입니다. 설정되지 않았거나 0인 경우 기본값은 1입니다.
  • --android_jit_emulator_use_sdcard: 빈 SD 카드 이미지를 만들어 각 가상 기기 인스턴스에 연결할지 여부를 설정합니다 (true 또는 false). 기본값은 true입니다. SD 카드 생성을 사용 중지하려면 false로 설정합니다.

다음 예에서는 네 가지 기본값을 모두 재정의합니다.

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_modem_simulator_sim_type=SIM_TYPE --android_jit_emulator_use_sdcard=USE_SDCARD"'

클라우드 조정 기기로 테스트 실행

이 섹션에서는 클라우드에서 오케스트레이션된 가상 기기에서 테스트를 실행하는 단계를 설명합니다.

기기 선택

기기 목록에서 OmniLab ATS는 클라우드에서 오케스트레이션된 가상 기기를 실제 일련번호 대신 자리표시자로 표시합니다. 자리표시자는 HOSTNAME:PORT 형식으로 표시됩니다 (예: thehostname:6520). 상태는 Available 또는 Allocated입니다. 자리표시자가 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 커널 로그