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

Cloud Orchestration アプリは、特に ARM ベースの仮想デバイス(CHD)向けに、Cuttlefish インスタンスを管理するための高性能でスケーラブルな方法を提供します。OmniLab ATS は、仮想デバイスでテストを実行できるように、クラウド オーケストレーションをサポートしています。仮想デバイスを使用する前に、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 サービスが正常に起動すると、HTTP を使用してアクセスできるようになります。API をクエリして、状態を確認できます。

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

Cloud オーケストレーション用に OmniLab ATS を構成する

OmniLab ATS を起動する前に、OmniLab ATS ワーカーホスト上のすべての Cuttlefish インスタンスが停止していることを確認します。OmniLab ATS はテストサイクル中に仮想デバイスの起動と停止を自動的に行うため、既存の Cuttlefish インスタンスがあると、OmniLab ATS によって管理されているインスタンスと競合します。Cuttlefish インスタンスの停止について詳しくは、Cuttlefish を停止するをご覧ください。

OmniLab ATS で Cloud Orchestration を有効にするには、OmniLab ATS の起動時に特定のフラグを渡します。

mtt start --use_cloud_orchestrator \
  --cloud_orchestrator_service_url=http://HOST:PORT \
  --max_local_virtual_devices N \
  --use_host_network
  • --use_cloud_orchestrator: Cloud Orchestration 機能を有効にします。
  • --cloud_orchestrator_service_url: Cloud Orchestrator サービスがリッスンしている URL を指定します(例: http://localhost:8080)。
  • --max_local_virtual_devices: OmniLab ATS が同時に割り当てることのできる仮想デバイスの最大数を設定します。デフォルト値は 0 です。
  • --use_host_network: コンテナにホストのネットワーク名前空間を使用します。これは、Cloud Orchestrator サービスにアクセスするために必要です。

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

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

デバイスの選択

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