グローバル設定でプロトコルを読み込む

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

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

ファイル オプションの例

ファイル @option の例

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

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

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

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

--config-file /tmp/file

説明

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

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

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

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

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

クエリ パラメータを使用する

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

組み込み動作には次の 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 サービス ファイルに追加すると、サポートを正式に有効化できます。