Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Global Config を使用したプロトコルの読み込み

このセクションを理解するには、まず Tradefed @Option をご覧ください。

Tradefed の一般的なオプションにより、テストクラスが XML 構成やコマンドラインから追加情報を取得できます。この機能を使用すると、1 ステップ先に進むことができ、必要に応じて追加情報を解決できるようになります。

ファイル オプションの例

ファイル @option の例

@Option(name = 'config-file')
private File mConfigFile;

上記は XML 構成を通じて設定できます。

<option name="config-file" value="/tmp/file" />

またはコマンドを使用することもできます。

--config-file /tmp/file

説明

この機能を使用することで、リモートにあるローカル ファイルの @Options ファイル形式をユーザー側からシームレスに解決できるようにします。

これを行うには、ファイルをリモート スタイル パスで指定する必要があります。 次に例を示します。

--config-file gs://bucket/tmp/file

このパスは、保存先の Google Cloud Storage(GCS)バケット内のファイルを指します。Tradefed はリモートパスを参照して、ファイルのローカルへのダウンロードと @Option への割り当てを試行します。これで mConfigFile 変数がローカル バージョンのファイルを指定できるようになり、テストで使用できるようになります。

リモート ファイルがなんらかの理由でダウンロードできない場合、Tradefed は ConfigurationException をスローしテスト実行をできないようにします。ファイルが欠落すると、テストのアーティファクトも欠落することになるので、重大な失敗と見なされます。

クエリ パラメータの使用

URL にクエリ パラメータを追加するには、? を使用します。例: gs://bucket/path?unzip=true。Key-Value unzip=true は、IRemoteFileResolver インターフェースの実装で利用可能です。

組み込み動作には次の 2 つがあります。

  • unzip: true に設定され、ダウンロードしたファイルが zip の場合、一時的な場所に自動的に解凍されます。例: ?unzip=true
  • optional: デフォルトは false です。true に設定しても解決しなかった場合、例外はスローされず、ファイルは置き換えられません。例: ?optional=true

--dynamic-download-args key=value を使用してグローバル クエリ引数を渡すことができます。これは、呼び出しの際に試行されたすべての動的ダウンロードに Key-Value を渡します。

サポートされているプロトコル

正式にサポートされているプロトコルと、それに対応する形式は次のとおりです。

  • Google Cloud Storage、プロトコル: gs、形式: gs://<bucket name>/path
  • ローカル ファイル、プロトコル: file、形式: file:/local/path
  • http リンク、プロトコル: http、形式: http://url
  • https リンク、プロトコル: https、形式: https://url

制限事項

現在のところ、@Option の動的解決でサポートされるプロトコルと場所は限られています。@Option の解決は現在、メインの XML Tradefed 構成に対してのみ有効です。

スイートとして実行している場合、現在のモジュール(AndroidTest.xml)はデフォルトではファイルを解決しません。これは、モジュールが未知の依存関係を生成しないようにするためです。スイートレベルで --enable-module-dynamic-download を使用するとこの問題をエスケープできますが、互換性テストスイート(CTS)ベンダー テスト スイート(VTS)のようなメジャーなスイートでは有効になりません。

新しいプロトコルの実装

サポートされているプロトコルは、IRemoteFileResolver インターフェースの Tradefed に実装できます。これにより、getSupportedProtocol を使用して、ファイルパスで照合されるプロトコルの短いタグが定義されます。たとえば、gs は Google Cloud Storage プロトコルで使用されます。実装するインターフェースとして推奨されるのは、長期的なメンテナンス インターフェースである #resolveRemoteFiles(RemoteFileResolverArgs) です。

実装されたプロトコルを ハーネス META-INF サービス ファイルに追加すると、サポートを正式に有効化できます。