Untuk memahami bagian ini, pertama-tama pelajari Tradefed @Option.
Opsi umum di Tradefed memungkinkan kelas pengujian menerima informasi 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 disetel melalui konfigurasi XML:
<option name="config-file" value="/tmp/file" />
atau melalui perintah:
--config-file /tmp/file
Deskripsi
Fitur ini memungkinkan Anda me-resolve @Opsi bertipe File yang jarak jauh ke file lokal tersedia tanpa hambatan 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
disimpan. Tradefed setelah melihat jalur jarak jauh tersebut, akan mencoba mendownload file
secara lokal dan
menetapkannya ke @Option. Ini menghasilkan variabel mConfigFile
sampai sekarang mengarah ke versi file lokal, yang dapat digunakan oleh pengujian.
Jika file jarak jauh tidak dapat diunduh karena alasan apa pun, Tradefed akan menampilkan
ConfigurationException
yang akan mencegah pengujian berjalan. Kami mempertimbangkan
kehilangan file-file itu sebagai kegagalan kritis
karena beberapa artefak pengujian juga akan
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 di
paket IRemoteFileResolver
antarmuka
terlepas dari implementasi layanan.
Tersedia dua perilaku bawaan:
- 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 formatnya 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 diunduh. Resolusi @Option saat ini hanya diaktifkan untuk konfigurasi Tradefed XML utama.
Jika dijalankan sebagai suite, modul saat ini (AndroidTest.xml
) tidak akan menyelesaikan masalah
file secara {i>default<i}.
Hal ini dimaksudkan untuk mencegah modul membuat beberapa dependensi yang tidak diketahui. Ini
dapat di-escape menggunakan --enable-module-dynamic-download
di tingkat suite,
tetapi rangkaian 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
IRemoteFileResolver
antarmuka
,yang menentukan tag singkat protokol yang akan dicocokkan dalam
jalur file melalui getSupportedProtocol
. Misalnya, gs
digunakan untuk
protokol Google Cloud Storage. Antarmuka yang disarankan untuk diimplementasikan adalah
#resolveRemoteFiles(RemoteFileResolverArgs)
yang akan menjadi jangka panjang
antarmuka yang terkelola.
Protokol yang diimplementasikan dapat ditambahkan ke Harness META-INF layanan untuk mengaktifkan dukungan secara resmi.