このセクションを理解するには、まず 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 サービス ファイルに追加すると、サポートを正式に有効化できます。