Untuk memahami bagian ini, pelajari terlebih dahulu @Option Tradefed.
Opsi umum di Tradefed memungkinkan class pengujian menerima informasi tambahan dari konfigurasi XML atau command line. Fitur ini memungkinkan Anda melakukan satu langkah tambahan dan menyelesaikan beberapa informasi tambahan ini jika diperlukan.
Contoh opsi file
Contoh File @option:
@Option(name = 'config-file')
private File mConfigFile;
Hal di atas dapat ditetapkan melalui konfigurasi XML:
<option name="config-file" value="/tmp/file" />
atau melalui perintah:
--config-file /tmp/file
Deskripsi
Fitur ini memungkinkan Anda me-resolve @Options berjenis File yang bersifat jarak jauh ke dalam file lokal agar tersedia dengan lancar dari sudut pandang pengguna.
Agar berfungsi, file harus ditentukan dengan jalur gaya jarak jauh. Contoh:
--config-file gs://bucket/tmp/file
Jalur ini mengarah ke file dalam bucket Google Cloud Storage (GCS) tempat file tersebut disimpan. Tradefed setelah melihat jalur jarak jauh tersebut, akan mencoba mendownload file
secara lokal dan menetapkannya ke @Option. Hal ini menyebabkan variabel mConfigFile
kini mengarah ke versi lokal file, yang dapat digunakan oleh pengujian.
Jika file jarak jauh tidak dapat didownload karena alasan apa pun, Tradefed akan menampilkan
ConfigurationException
yang akan mencegah pengujian berjalan. Kami menganggap
file tersebut tidak ada sebagai kegagalan kritis karena beberapa artefak pengujian juga
tidak ada.
Menggunakan parameter kueri
Anda dapat menambahkan parameter kueri ke URL menggunakan ?
. Misalnya, gs://bucket/path?unzip=true
. Kunci/nilai unzip=true
akan tersedia dalam
implementasi
antarmuka IRemoteFileResolver.
Ada dua perilaku bawaan yang tersedia:
- unzip: Jika disetel ke
true
dan file yang didownload adalah file zip, file tersebut akan otomatis diekstrak ke lokasi sementara. Contoh:?unzip=true
- opsional: Default-nya adalah
false
. Jika disetel ketrue
dan resolusi gagal, tidak akan menampilkan pengecualian dan tidak akan mengganti file. Contoh:?optional=true
Anda juga dapat meneruskan argumen kueri global melalui --dynamic-download-args key=value
yang akan meneruskan kunci/nilai ke semua download dinamis yang dicoba dalam
pemanggilan.
Protokol yang didukung
Protokol yang didukung secara resmi dan format yang sesuai adalah:
- Google Cloud Storage, protokol:
gs
, format:gs://<bucket name>/path
- File lokal, protokol:
file
, format:file:/local/path
- link http, protokol:
http
, format:http://url
- link https, protokol:
https
, format:https://url
Batasan
Resolusi dinamis @Option saat ini hanya mendukung sejumlah protokol dan lokasi untuk didownload dalam jumlah terbatas. Resolusi @Option saat ini hanya diaktifkan untuk konfigurasi Tradefed XML utama.
Jika berjalan sebagai suite, modul saat ini (AndroidTest.xml
) tidak akan me-resolve
file secara default.
Hal ini dimaksudkan untuk mencegah modul membuat beberapa dependensi yang tidak diketahui. Hal ini
dapat di-escape dengan menggunakan --enable-module-dynamic-download
di tingkat suite,
tetapi suite utama seperti Compatibility Test Suite
(CTS) dan Vendor Test Suite
(VTS) tidak akan mengaktifkannya.
Mengimplementasikan protokol baru
Protokol yang didukung memiliki implementasi di Tradefed dari
antarmuka IRemoteFileResolver
, yang menentukan tag singkat protokol yang akan dicocokkan di
jalur file melalui getSupportedProtocol
. Misalnya, gs
digunakan untuk protokol Google Cloud Storage. Antarmuka yang direkomendasikan untuk diterapkan adalah
#resolveRemoteFiles(RemoteFileResolverArgs)
yang akan menjadi antarmuka
yang dikelola dalam jangka panjang.
Protokol yang diterapkan dapat ditambahkan ke file layanan META-INF harness untuk mengaktifkan dukungan secara resmi.