Muat protokol dengan konfigurasi global

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 melakukan satu langkah ekstra dan menyelesaikan beberapa informasi tambahan ini jika diperlukan.

Contoh opsi file

Contoh File @pilihan:

@Option(name = 'config-file')
private File mConfigFile;

Hal 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 jarak jauh ke dalam file lokal agar tersedia dengan lancar dari sudut pandang pengguna.

Agar ini berfungsi, file perlu ditentukan dengan path gaya jarak jauh . Misalnya:

--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 itu, akan mencoba mengunduh file secara lokal dan menetapkannya ke @Option. Hal ini menyebabkan variabel mConfigFile sekarang menunjuk ke versi lokal file, yang dapat digunakan oleh pengujian.

Jika file jarak jauh tidak dapat diunduh karena alasan apa pun, Tradefed akan memunculkan ConfigurationException yang akan mencegah pengujian berjalan. Kami menganggap hilangnya file tersebut sebagai kegagalan kritis karena beberapa artefak pengujian juga akan hilang.

Gunakan 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 secara otomatis akan di-unzip ke lokasi sementara. Contoh: ?unzip=true
  • opsional: Defaultnya adalah false . Jika disetel ke true dan resolusi gagal, maka tidak akan ada 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:

  • Google Cloud Storage, 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 untuk mengunduh. Resolusi @Option saat ini diaktifkan hanya untuk konfigurasi XML Tradefed utama.

Jika dijalankan sebagai suite, 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 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 protokol yang akan dicocokkan dengan 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.