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 perlu.
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 menyelesaikan @Opsi 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 akan menyebabkan variabel mConfigFile
menunjuk ke versi lokal file, yang dapat digunakan oleh pengujian.
Jika file jarak jauh tidak dapat didownload karena alasan apa pun, Tradefed akan memunculkan
ConfigurationException
yang akan mencegah pengujian berjalan. Kami menganggap
tidak adanya file tersebut sebagai kegagalan penting karena beberapa artefak pengujian juga tidak akan ada.
Menggunakan parameter kueri
Parameter kueri dapat ditambahkan ke URL menggunakan ?
. Misalnya, gs://bucket/path?unzip=true
. Key/value unzip=true
akan tersedia di
implementasi antarmuka
IRemoteFileResolver.
Dua perilaku bawaan tersedia:
- unzip: Jika disetel ke
true
dan file yang didownload adalah zip, file tersebut akan diekstrak secara otomatis ke lokasi sementara. Contoh:?unzip=true
- opsional: Defaultnya adalah
false
. Jika disetel ketrue
dan resolusi gagal, pengecualian tidak akan ditampilkan dan file tidak akan diganti. Contoh:?optional=true
Anda juga dapat meneruskan argumen kueri global melalui --dynamic-download-args key=value
yang akan meneruskan key/value 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 terbatas untuk didownload. Resolusi @Option saat ini hanya diaktifkan untuk konfigurasi Tradefed XML utama.
Jika dijalankan sebagai rangkaian, modul saat ini (AndroidTest.xml
) tidak akan menyelesaikan
file secara default.
Hal ini dimaksudkan untuk mencegah modul membuat beberapa dependensi yang tidak diketahui. Hal ini
dapat diatasi dengan menggunakan --enable-module-dynamic-download
di tingkat rangkaian pengujian,
tetapi rangkaian pengujian utama seperti Compatibility Test Suite
(CTS) dan Vendor Test Suite
(VTS) tidak akan mengaktifkannya.
Menerapkan 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
dipertahankan dalam jangka panjang.
Protokol yang diterapkan dapat ditambahkan ke file META-INF services harness untuk mengaktifkan dukungan secara resmi.