Muat Protokol melalui Global Config

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 untuk melangkah lebih jauh dan menyelesaikan beberapa informasi tambahan ini jika perlu.

Contoh opsi file

Contoh File @option:

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

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

Agar ini berfungsi, file perlu ditentukan dengan jalur gaya jarak jauh . Sebagai contoh:

--config-file gs://bucket/tmp/file

Jalur ini mengarah ke file dalam bucket Google Cloud Storage (GCS) tempat file disimpan. Tradefed setelah melihat jalur jarak jauh itu, akan mencoba mengunduh file secara lokal dan menetapkannya ke @Option. Ini menghasilkan variabel mConfigFile untuk sekarang menunjuk ke versi lokal file, yang dapat digunakan oleh pengujian.

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

Menggunakan 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 akan secara otomatis membuka ritsleting ke lokasi sementara. Contoh: ?unzip=true
  • opsional: Default ke false . Jika disetel ke true dan resolusi gagal, itu tidak akan mengeluarkan 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:

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

Jika dijalankan sebagai suite, modul saat ini ( AndroidTest.xml ) tidak akan menyelesaikan file secara default. Ini dimaksudkan untuk mencegah modul dari membuat beberapa dependensi yang tidak diketahui . Ini dapat diloloskan 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 dari protokol yang akan dicocokkan di jalur file melalui getSupportedProtocol . Misalnya, gs digunakan untuk protokol Google Cloud Storage. Antarmuka yang disarankan untuk diterapkan adalah #resolveRemoteFiles(RemoteFileResolverArgs) yang akan menjadi antarmuka jangka panjang yang dipelihara.

Protokol yang diterapkan dapat ditambahkan ke file layanan META-INF harness untuk secara resmi mengaktifkan dukungan.