Untuk memahami bagian ini, pelajari dulu Tradefed @Option .
Opsi umum di Tradefed memungkinkan kelas pengujian menerima informasi tambahan dari konfigurasi XML atau baris perintah. Fitur ini memungkinkan Anda untuk melangkah lebih jauh dan menyelesaikan beberapa informasi tambahan ini jika perlu.
Contoh opsi file
Contoh File @option:
@Option(name = 'config-file')
private File mConfigFile;
Di atas dapat diatur melalui konfigurasi XML:
<option name="config-file" value="/tmp/file" />
atau melalui perintah:
--config-file /tmp/file
Keterangan
Fitur ini memungkinkan Anda untuk menyelesaikan @Options yang diketik File yang jauh ke file lokal agar tersedia dengan mulus dari sudut pandang pengguna.
Agar ini berfungsi, file perlu ditentukan dengan jalur gaya jarak jauh . Sebagai contoh:
--config-file gs://bucket/tmp/file
Jalur ini mengarah ke file dalam bucket Google Cloud Storage (GCS) tempat file disimpan. Tradefed setelah melihat jalur jarak jauh itu, akan mencoba mengunduh file secara lokal dan menetapkannya ke @Option. Ini menghasilkan variabel mConfigFile
untuk sekarang menunjuk ke versi lokal file, yang dapat digunakan oleh pengujian.
Jika file jarak jauh tidak dapat diunduh karena alasan apa pun, Tradefed akan mengeluarkan ConfigurationException
yang akan mencegah pengujian berjalan. Kami menganggap kehilangan file tersebut sebagai kegagalan kritis karena beberapa artefak uji juga akan hilang.
Menggunakan parameter kueri
Menambahkan parameter kueri ke URL dimungkinkan menggunakan ?
. Misalnya, gs://bucket/path?unzip=true
. Kunci/nilai unzip=true
akan tersedia dalam implementasi antarmuka IRemoteFileResolver .
Tersedia dua perilaku bawaan:
- unzip: Jika disetel ke
true
dan file yang diunduh adalah zip, maka akan secara otomatis membuka ritsleting ke lokasi sementara. Contoh:?unzip=true
- opsional: Default ke
false
. Jika disetel ketrue
dan resolusi gagal, itu tidak akan mengeluarkan 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 unduhan dinamis yang dicoba dalam pemanggilan.
Protokol yang didukung
Protokol yang didukung secara resmi dan format terkaitnya adalah:
- Penyimpanan Google Cloud, protokol:
gs
, format:gs://<bucket name>/path
- File lokal, protokol:
file
, format:file:/local/path
- Tautan http, protokol:
http
, format:http://url
- tautan https, protokol:
https
, format:https://url
Keterbatasan
Resolusi dinamis @Option saat ini hanya mendukung sejumlah protokol dan lokasi yang terbatas untuk mengunduh. Resolusi @Option saat ini diaktifkan hanya untuk konfigurasi utama XML Tradefed.
Jika dijalankan sebagai suite, modul saat ini ( AndroidTest.xml
) tidak akan menyelesaikan file secara default. Ini dimaksudkan untuk mencegah modul dari membuat beberapa dependensi yang tidak diketahui . Ini dapat diloloskan 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.
Menerapkan protokol baru
Protokol yang didukung memiliki implementasi di Tradefed dari antarmuka IRemoteFileResolver , yang mendefinisikan tag pendek dari protokol yang akan dicocokkan di jalur file melalui getSupportedProtocol
. Misalnya, gs
digunakan untuk protokol Google Cloud Storage. Antarmuka yang disarankan untuk diterapkan adalah #resolveRemoteFiles(RemoteFileResolverArgs)
yang akan menjadi antarmuka jangka panjang yang dipelihara.
Protokol yang diterapkan dapat ditambahkan ke file layanan META-INF harness untuk secara resmi mengaktifkan dukungan.