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.