Jalankan pengujian dengan beberapa perangkat

Halaman ini membantu Anda menggunakan Test Harness Federasi Perdagangan dengan beberapa perangkat selama pengujian. Anda harus terlebih dahulu memahami penggunaan normal seperti yang dijelaskan dalam contoh ujung ke ujung .

Apa bedanya dengan banyak perangkat?

Ada beberapa hal yang berbeda saat mengonfigurasi dan menjalankan pengujian multi-perangkat di Federasi Dagang, khususnya:

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

<! -- TODO: Perjelas kalimat di atas dengan menambahkan contoh kasus penggunaan satu perangkat yang berkaitan dengan mode multi-perangkat di kalimat kedua. -->>

Konfigurasi beberapa perangkat

Dokumen ini mengasumsikan Anda sudah familiar dengan konfigurasi pengujian TF pada umumnya. Berikut tampilan konfigurasi pengujian umum 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 disebutkan mengenai struktur:

  • Untuk setiap perangkat yang diperlukan, diharapkan ada <device> .
  • <build_provider> , <target_preparer> , <device_recovery> , <device_requirements> , dan <device_options> jika diperlukan harus disertakan dalam tag <device> ; pengecualian akan diberikan sebaliknya.
  • 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. Hal ini memungkinkan pengujian Anda menargetkan perangkat tertentu.
  • <option> dapat memiliki cakupan global saat berada di akar konfigurasi atau dibatasi pada cakupan perangkat saat ditentukan di dalam tag <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>} dengan <device name> adalah nama yang ditentukan dalam konfigurasi XML.

Pada contoh di atas, opsi berikut diperbolehkan:

  • --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 pengaturan perangkat sementara device1 tidak.

Bagaimana cara TF memilih perangkat?

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

Bagaimana TF mempersiapkan perangkatnya?

Langkah persiapan untuk beberapa perangkat sebagian besar sama dengan langkah persiapan untuk satu perangkat. Setiap perangkat disiapkan dengan memanggil <target_preparer> sesuai urutan tampilan di dalam <device> .

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

Alternatifnya adalah <pre_multi_target_preparer> yang dijalankan sebelum langkah target_preparer .

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

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 satu perangkat reguler, Anda mengimplementasikan antarmuka IDeviceTest .

Agar pengujian menerima perangkat yang diuji, Anda dapat menerapkan 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 lainnya, 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 contoh konfigurasi seperti Hello World: multi-devices.xml. Ada juga contoh implementasi multi_target_preparer HelloWorldMultiTargetPreparer yang menunjukkan cara menerima daftar perangkat dan versinya.

Ini adalah contoh lengkap yang melibatkan:

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

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

run example/multi-devices

Anda akan melihat beberapa output 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 memerlukan dua perangkat yang terhubung untuk menjalankan hal 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 akan dapat melihat perangkat yang terlibat dalam setiap pemanggilan, serta semua perangkat yang tersedia dan statusnya masing-masing.

Perhatikan bahwa dalam contoh ini kami memanggil dua perangkat dalam konfigurasi device1 dan device2 ; Anda harus memberikan nama yang lebih deskriptif jika memungkinkan tergantung pada jenis perangkat yang ingin Anda setel.