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