Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Jalankan Pengujian dengan Banyak Perangkat

Halaman ini membantu Anda menggunakan Trade Federation Test Harness dengan beberapa perangkat selama pengujian. Pertama-tama Anda harus terbiasa dengan penggunaan normal seperti yang dijelaskan dalam contoh ujung-ke-ujung .

Apa yang berbeda dengan banyak perangkat?

Beberapa hal berbeda saat mengonfigurasi dan menjalankan pengujian multi-perangkat di Federasi Perdagangan, khususnya:

Konfigurasi satu perangkat apa pun yang ada berlaku untuk mode multi-perangkat.

TODO: Segera klarifikasi kalimat di atas dengan menambahkan contoh kasus penggunaan satu perangkat karena berkaitan dengan mode multi-perangkat di kalimat kedua.

Konfigurasi beberapa perangkat

Dokumen ini mengasumsikan Anda sudah terbiasa dengan konfigurasi uji TF yang khas. Berikut adalah konfigurasi pengujian khas dengan dua perangkat:

<configuration description="A simple multi-devices example in Tradefed">

    <device name="device1">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <device name="device2">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <option name="log-level" value="verbose" />
    <test class="com.android.tradefed.HelloWorldMultiDevices" />

    <logger class="com.android.tradefed.log.FileLogger" />
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />

</configuration>

Beberapa hal yang perlu diperhatikan tentang struktur:

  • Untuk setiap perangkat yang akan dibutuhkan, sebuah <device> diharapkan.
  • <build_provider> , <target_preparer> , <device_recovery> , <device_requirements> , dan <device_options> jika diperlukan harus disertakan dalam tag <device> ; pengecualian akan dibuang jika tidak.
  • atribut name untuk <device> adalah wajib dan harus unik di antara semua perangkat yang ada dalam konfigurasi. Ini digunakan untuk mereferensikan perangkat tertentu yang terkait dengannya. Ini memungkinkan pengujian Anda untuk menargetkan perangkat tertentu.
  • <option> dapat memiliki cakupan global saat berada di root konfigurasi atau dibatasi ke cakupan perangkat saat ditentukan di dalam <device> .

Semua aturan lain yang berlaku untuk konfigurasi satu perangkat masih berlaku di sini. Lihat contoh Hello World di bawah untuk lebih jelasnya.

Pembaruan baris perintah

Saat menentukan opsi pada baris perintah TF, dimungkinkan juga untuk menentukan cakupan perangkat menggunakan {<device name>} mana <device name> adalah nama yang ditentukan dalam konfigurasi XML.

Dalam contoh di atas, opsi berikut diizinkan:

  • --com.android.tradefed.targetprep.DeviceSetup:disable
  • --device-setup:disable

Anda hanya dapat menargetkan salah satu objek build_provider perangkat menggunakan nama perangkat, seperti:

--{device2}device-setup:disable

Dalam contoh ini, device2 melewatkan penyiapan perangkat sementara device1 tidak.

Bagaimana TF memilih perangkat?

Federasi Perdagangan mencari perangkat yang cocok dengan device_requirements (biasanya device_requirements perangkat, produk, dll.) Dalam urutan tampilan perangkat dalam konfigurasi. Setiap kali perangkat dialokasikan, TF mencoba untuk mengalokasikan yang berikutnya. Jika tidak memungkinkan untuk mengalokasikan semua perangkat, semuanya akan dilepaskan dan perintah akan dicoba kembali ketika semua perangkat cocok.

Bagaimana TF mempersiapkan perangkat?

Langkah persiapan untuk multi-perangkat sebagian besar sama dengan untuk satu perangkat. Setiap perangkat disiapkan dengan memanggil <target_preparer> dalam urutan kemunculannya di dalam <device> .

Anda juga dapat menggunakan <multi_target_preparer> ditentukan di root konfigurasi yang memungkinkan langkah persiapan yang memerlukan beberapa perangkat, seperti penyandingan perangkat. Ini berjalan setelah langkah target_preparer .

Alternatifnya adalah <pre_multi_target_preparer> yang berjalan sebelum langkah target_preparer .

  • <pre_multi_target_preparer> harus digunakan untuk penyiapan yang harus dilakukan sebelum penyiapan perangkat individu.
  • <multi_target_preparer> harus digunakan untuk penyiapan yang harus dilakukan setelah penyiapan perangkat individu.

Misalnya: perangkat flash 1 (target_preparer) perangkat flash 2 (target_preparer) bluetooth menghubungkan kedua perangkat (multi_target_preparer)

Tulis tes multi-perangkat

Saat menulis pengujian perangkat tunggal biasa, Anda mengimplementasikan antarmuka IDeviceTest .

Agar pengujian menerima perangkat yang diuji, Anda bisa mengimplementasikan IMultiDeviceTest atau IInvocationContextReceiver .

IMultiDeviceTest memberi Anda peta langsung perangkat ke IBuildInfo - nya sementara IInvocationContextReceiver nanti memberi Anda konteks lengkap (perangkat, IBuildInfo & metadata).

Anda kemudian akan dapat menggunakan API ITestDevice biasa yang digunakan TF untuk penulisan pengujian.

Belum ada API untuk melakukan operasi dari satu perangkat ke perangkat lain, seperti device1.sync(device2) . Jika Anda merasa memiliki kasus penggunaan yang menarik untuk didukung, kirimkan alasan Anda ke daftar platform android .

Contoh multi perangkat hello world

Kami menambahkan konfigurasi contoh mirip Hello World: multi-perangkat.xml Ada juga contoh implementasi multi_target_preparer HelloWorldMultiTargetPreparer yang menunjukkan cara menerima daftar perangkat dan build-nya.

Ini adalah contoh lengkap yang melibatkan:

  • Mengalokasikan dua perangkat
  • Mengakses kedua perangkat melalui multi_target_preparer
  • Menjalankan pengujian yang menggunakan dua perangkat

Setelah Anda membuat Tradefed, Anda dapat menggunakan perintah berikut di shell TF:

run example/multi-devices

Anda akan melihat beberapa keluaran yang berisi berikut ini:

08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' from context with build 'com.android.tradefed.build.DeviceBuildInfo@c99cbc1'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' from context with build 'com.android.tradefed.build.DeviceBuildInfo@b41f20c5'

Anda membutuhkan dua perangkat yang terhubung untuk menjalankan yang di atas. Ini dapat diperiksa melalui: adb devices

Saat pemanggilan sedang berlangsung, Anda dapat memantaunya seperti perangkat tunggal dengan list i dan list d :

tf >list i
Command Id  Exec Time  Device                          State
1           0m:35      [00b4e73b4cbcd162, LP5A390056]  fetching build
tf >list d
Serial            State      Product   Variant   Build   Battery
00b4e73b4cbcd162  Allocated  bullhead  bullhead  NRD90O  100
LP5A390056        Allocated  shamu     shamu     NRD90I  100

Anda harus dapat melihat perangkat yang terlibat dalam setiap pemanggilan, serta semua perangkat yang tersedia dan statusnya masing-masing.

Perhatikan bahwa dalam contoh ini kita disebut dua perangkat dalam konfigurasi device1 dan device2 ; Anda harus memberikan nama yang lebih deskriptif jika memungkinkan tergantung pada jenis perangkat yang benar-benar Anda harapkan untuk disetel.