OmniLab ATS のクラウド オーケストレーション

Cloud Orchestration アプリは 特に ARM ベースの仮想デバイス(CHD)の場合に、Cuttlefish インスタンスを管理するための高パフォーマンスでスケーラブルな方法を提供します。OmniLab ATS は Cloud Orchestration をサポートしているため、仮想デバイスでテストを実行できます。仮想デバイスを使用する前に、 OmniLab Android Test Stationに沿って 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 を試すをご覧ください。

想定される状態

Cloud Orchestrator サービスが正常に起動すると、HTTP でアクセスできるようになります。API をクエリして状態を確認できます。

  • サービスに ping を送信する: OmniLab ATS ワーカー ホストからサービス エンドポイントに到達できる必要があります。たとえば、curl -I http://localhost:8080/v1/zones/local/hosts を実行すると、成功した HTTP レスポンス(HTTP/1.1 200 OK または 302 Found/username にリダイレクト)が返され、サービスがアクティブで到達可能であることが確認されます。

Cloud Orchestration 用に 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 サービスがリッスンしている URL(http://localhost:8080 など)を指定します。
  • --use_host_network: コンテナにホストのネットワーク名前空間を使用します。 これは、Cloud Orchestration サービスにアクセスするために必要です。
  • --force_ats_version 2: Cloud Orchestration に必要な OmniLab ATS 2.0 の使用を強制します。詳細については、OmniLab ATS 2.0 アップグレード ガイドをご覧ください。
  • --force_update: ATS 2.0 と Cloud Orchestration の機能を備えた最新のコンテナビルドをプルします。

クラウド オーケストレーション デバイスでテストを実行する

このセクションでは、クラウド オーケストレーション仮想デバイスでテストを実行する手順について説明します。

デバイスの選択

OmniLab ATS のデバイスリストには、実際のシリアル番号ではなく、プレースホルダとしてクラウド オーケストレーション仮想デバイスが表示されます。プレースホルダは HOSTNAME:PORT 形式(例: thehostname:6520) で表示されます。状態は [Available] または [Allocated] のいずれかです。[Available] の状態にあるプレースホルダは、仮想デバイスが実行されていないため、テストに割り当てることができることを示します。

[Cloud-Orchestrated Devices] を選択します

図 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 カーネルログ