Halaman ini membantu Anda menggunakan Trade Federation Test Harness dengan beberapa perangkat selama pengujian.Pertama-tama, Anda harus memahami penggunaan normal seperti yang dijelaskan dalam contoh menyeluruh.
Apa yang berbeda dengan beberapa perangkat?
Ada beberapa hal 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 adalah 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 tentang struktur:
- 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. 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 pada cakupan perangkat jika ditentukan di dalam tag<device>
.
Semua aturan lain yang berlaku untuk konfigurasi perangkat tunggal 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 hanya dapat menargetkan salah satu objek build_provider
perangkat menggunakan nama
perangkat, seperti ini:
--{device2}device-setup:disable
Dalam contoh ini, device2
melewati penyiapan perangkat, sedangkan device1
tidak.
Bagaimana TF memilih perangkat?
Trade Federation mencari perangkat yang cocok dengan device_requirements
(biasanya ragam perangkat, produk, dll.) sesuai urutan tampilan perangkat dalam
konfigurasi. Setiap kali perangkat dialokasikan, TF akan mencoba mengalokasikan perangkat berikutnya. Jika tidak dapat mengalokasikan semua perangkat, semua perangkat akan
dirilis dan perintah akan dicoba lagi saat semua perangkat cocok.
Bagaimana TF menyiapkan perangkat?
Langkah persiapan untuk multi-perangkat sebagian besar sama dengan untuk satu perangkat.
Setiap perangkat disiapkan dengan memanggil <target_preparer>
sesuai
urutan kemunculan 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
penyambungan perangkat. Langkah 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 individual.<multi_target_preparer>
harus digunakan untuk penyiapan yang harus dilakukan setelah penyiapan perangkat individual.
Contoh:
flash device 1 (target_preparer) flash device 2 (target_preparer) bluetooth connect both devices (multi_target_preparer)
Menulis pengujian multiperangkat
Saat menulis pengujian perangkat tunggal reguler, Anda mengimplementasikan antarmuka IDeviceTest.
Agar pengujian dapat menerima perangkat yang sedang diuji, Anda dapat menerapkan IMultiDeviceTest atau IInvocationContextReceiver.
IMultiDeviceTest memberi Anda peta langsung perangkat ke IBuildInfo-nya, sedangkan IInvocationContextReceiver nantinya memberi Anda konteks lengkap (perangkat, IBuildInfo & metadata).
Kemudian, Anda akan dapat menggunakan API ITestDevice biasa yang ditempatkan TF pada disposisi 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 android-platform.
Contoh halo dunia multi-perangkat
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 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 membangun Tradefed, Anda dapat menggunakan perintah berikut di TF shell:
run example/multi-devices
Anda akan melihat output yang berisi hal berikut:
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. 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 Anda harapkan untuk ditetapkan.