Protokol load dengan konfigurasi global

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 ke true 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.