Menjalankan pengujian dengan beberapa perangkat

Halaman ini membantu Anda menggunakan Trade Federation Test Harness dengan beberapa perangkat selama pengujian.Anda harus terlebih dahulu memahami penggunaan normal seperti yang dijelaskan dalam contoh end-to-end.

Apa yang berbeda dengan beberapa perangkat?

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

Konfigurasi satu perangkat yang ada valid untuk mode multi-perangkat.

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

Konfigurasi beberapa perangkat

Dokumen ini mengasumsikan bahwa Anda sudah memahami konfigurasi pengujian TF yang umum. Berikut tampilan konfigurasi pengujian standar 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 perlu disebutkan tentang struktur ini:

  • Untuk setiap perangkat yang akan diperlukan, <device> diharapkan.
  • <build_provider>, <target_preparer>, <device_recovery>, <device_requirements>, dan <device_options> jika diperlukan harus disertakan dalam tag <device>; jika tidak, pengecualian akan ditampilkan.
  • Atribut name untuk <device> bersifat wajib dan harus unik di antara semua perangkat yang ada dalam konfigurasi. ID 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 root konfigurasi atau dibatasi ke 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 mengetahui detail selengkapnya.

Update command line

Saat menentukan opsi di command line TF, Anda juga dapat menentukan cakupan perangkat menggunakan {<device name>} dengan <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 dapat menargetkan hanya salah satu objek build_provider perangkat menggunakan nama perangkat, seperti berikut:

--{device2}device-setup:disable

Dalam contoh ini, device2 melewati penyiapan perangkat, sedangkan device1 tidak.

Bagaimana cara TF memilih perangkat?

Trade Federation mencari perangkat yang cocok dengan device_requirements (biasanya varian perangkat, produk, dll.) sesuai urutan kemunculan perangkat dalam konfigurasi. Setiap kali perangkat dialokasikan, TF mencoba mengalokasikan perangkat berikutnya. Jika tidak memungkinkan untuk mengalokasikan semua perangkat, semua perangkat akan dilepaskan dan perintah akan dicoba lagi saat semua perangkat cocok.

Bagaimana cara TF menyiapkan perangkat?

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

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

Alternatifnya adalah <pre_multi_target_preparer> yang menjalankan 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.

Contoh:

flash perangkat 1 (target_preparer) flash perangkat 2 (target_preparer) bluetooth connect both devices (multi_target_preparer)

Menulis pengujian multiperangkat

Saat menulis pengujian satu perangkat reguler, Anda menerapkan antarmuka IDeviceTest.

Agar pengujian menerima perangkat yang sedang diuji, Anda dapat menerapkan IMultiDeviceTest atau IInvocationContextReceiver.

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

Kemudian, Anda akan dapat menggunakan API ITestDevice biasa yang disediakan 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 milis android-platform.

Contoh hello world multi-perangkat

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

Berikut adalah contoh lengkap yang melibatkan:

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

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

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 perintah di atas. Hal 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, kita memanggil dua perangkat dalam konfigurasi device1 dan device2; Anda harus memberikan nama yang lebih deskriptif jika memungkinkan bergantung pada jenis perangkat yang benar-benar diharapkan untuk ditetapkan.