Protokol load dengan konfigurasi global

Untuk memahami bagian ini, pertama-tama pelajari Tradefed @Option.

Opsi umum di Tradefed memungkinkan kelas pengujian menerima informasi 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 disetel melalui konfigurasi XML:

<option name="config-file" value="/tmp/file" />

atau melalui perintah:

--config-file /tmp/file

Deskripsi

Fitur ini memungkinkan Anda me-resolve @Opsi bertipe File yang jarak jauh ke file lokal tersedia tanpa hambatan 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 disimpan. Tradefed setelah melihat jalur jarak jauh tersebut, akan mencoba mendownload file secara lokal dan menetapkannya ke @Option. Ini menghasilkan variabel mConfigFile sampai sekarang mengarah ke versi file lokal, yang dapat digunakan oleh pengujian.

Jika file jarak jauh tidak dapat diunduh karena alasan apa pun, Tradefed akan menampilkan ConfigurationException yang akan mencegah pengujian berjalan. Kami mempertimbangkan kehilangan file-file itu sebagai kegagalan kritis karena beberapa artefak pengujian juga akan 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 di paket IRemoteFileResolver antarmuka terlepas dari implementasi layanan.

Tersedia dua perilaku bawaan:

  • 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 formatnya 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 diunduh. Resolusi @Option saat ini hanya diaktifkan untuk konfigurasi Tradefed XML utama.

Jika dijalankan sebagai suite, modul saat ini (AndroidTest.xml) tidak akan menyelesaikan masalah file secara {i>default<i}. Hal ini dimaksudkan untuk mencegah modul membuat beberapa dependensi yang tidak diketahui. Ini dapat di-escape menggunakan --enable-module-dynamic-download di tingkat suite, tetapi rangkaian 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 IRemoteFileResolver antarmuka ,yang menentukan tag singkat protokol yang akan dicocokkan dalam jalur file melalui getSupportedProtocol. Misalnya, gs digunakan untuk protokol Google Cloud Storage. Antarmuka yang disarankan untuk diimplementasikan adalah #resolveRemoteFiles(RemoteFileResolverArgs) yang akan menjadi jangka panjang antarmuka yang terkelola.

Protokol yang diimplementasikan dapat ditambahkan ke Harness META-INF layanan untuk mengaktifkan dukungan secara resmi.