Untuk memahami bagian ini, pelajari terlebih dahulu Tradefed @Option.
Opsi umum di Tradefed memungkinkan class pengujian menerima informasi tambahan dari konfigurasi XML atau command line. Fitur ini memungkinkan Anda mengambil satu langkah tambahan dan menyelesaikan beberapa informasi tambahan ini jika diperlukan.
Contoh opsi file
Contoh File @option:
@Option(name = 'config-file')
private File mConfigFile;
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 @Option berjenis File yang jarak jauh ke 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 saat melihat jalur jarak jauh tersebut, akan mencoba mendownload file secara lokal dan menetapkannya ke @Option. Hal ini akan 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 penting karena beberapa artefak pengujian juga akan tidak ada.
Menggunakan parameter kueri
Menambahkan parameter kueri ke URL dapat dilakukan menggunakan ?. Misalnya, gs://bucket/path?unzip=true. Kunci/nilai unzip=true akan tersedia dalam
implementasiantarmuka
IRemoteFileResolver.
Dua perilaku bawaan tersedia:
- unzip: Jika ditetapkan ke
truedan file yang didownload adalah zip, file tersebut akan otomatis diekstrak ke lokasi sementara. Contoh:?unzip=true - optional: Default-nya adalah
false. Jika ditetapkan ketruedan resolusi gagal, resolusi 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 terbatas untuk didownload. Resolusi @Option saat ini hanya diaktifkan untuk konfigurasi Tradefed XML utama.
Jika dijalankan sebagai rangkaian pengujian, 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 diabaikan 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.
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 diimplementasikan adalah #resolveRemoteFiles(RemoteFileResolverArgs) yang akan menjadi antarmuka yang dipertahankan dalam jangka panjang.
Protokol yang diimplementasikan dapat ditambahkan ke file layanan META-INF harness untuk mengaktifkan dukungan secara resmi.