Bu sayfa, test sırasında Ticaret Federasyonu Test Donanımını birden fazla cihazla kullanmanıza yardımcı olur. Öncelikle , uçtan uca örnekte açıklandığı gibi normal kullanıma aşina olmalısınız.
Birden fazla cihazın farkı nedir?
Ticaret Federasyonu'nda çoklu cihaz testlerini yapılandırırken ve çalıştırırken bazı şeyler farklıdır, özellikle:
Mevcut herhangi bir tek cihaz konfigürasyonu, çoklu cihaz modu için geçerlidir.
<! -- YAPILACAKLAR: İkinci cümleye çoklu cihaz moduyla ilgili olduğu için tek cihaz kullanım durumunun bir örneğini ekleyerek hemen yukarıdaki cümleyi netleştirin. -->>
Çoklu cihaz konfigürasyonu
Bu belge, tipik TF testi yapılandırmasına zaten aşina olduğunuzu varsaymaktadır. İki cihazla yapılan tipik bir test konfigürasyonu şöyle görünür:
<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>
Yapıyla ilgili birkaç şeyden bahsetmek gerekiyor:
- İhtiyaç duyulacak her cihaz için bir
<device>
bekleniyor. -
<build_provider>
,<target_preparer>
,<device_recovery>
,<device_requirements>
ve gerekiyorsa<device_options>
<device>
etiketine dahil edilmelidir; aksi halde bir istisna atılacaktır. -
<device>
içinname
özelliği zorunludur ve konfigürasyonda bulunan tüm cihazlar arasında benzersiz olmalıdır. Kendisiyle ilişkili belirli bir cihaza referans vermek için kullanılır. Bu, testinizin belirli bir cihazı hedeflemesine olanak tanır. -
<option>
yapılandırmanın kökündeyken genel bir kapsama sahip olabilir veya<device>
etiketi içinde belirtildiğinde cihaz kapsamıyla sınırlı olabilir.
Tek cihaz konfigürasyonu için geçerli olan diğer tüm kurallar burada da geçerlidir. Daha fazla ayrıntı için aşağıdaki Merhaba Dünya örneğine bakın.
Komut satırı güncellemesi
TF komut satırında seçenekleri belirlerken, {<device name>}
kullanılarak bir aygıt kapsamının belirtilmesi de mümkündür; burada <device name>
XML yapılandırmasında belirtilen addır.
Yukarıdaki örnekte aşağıdaki seçeneklere izin verilmiştir:
-
--com.android.tradefed.targetprep.DeviceSetup:disable
-
--device-setup:disable
Cihaz adını kullanarak cihaz build_provider
nesnelerinden yalnızca birini hedefleyebilirsiniz, şu şekilde:
--{device2}device-setup:disable
Bu örnekte, device2
cihaz kurulumunu atlarken device1
atlamıyor.
TF cihazları nasıl seçiyor?
Ticaret Federasyonu, cihazın konfigürasyondaki görünümüne göre, device_requirements
(tipik olarak cihaz tadı, ürün vb.) eşleşen bir cihazı arar. Her cihaz tahsis edildiğinde, TF bir sonrakini tahsis etmeye çalışır. Tüm cihazların tahsis edilmesi mümkün değilse hepsi serbest bırakılacak ve tüm cihazlar eşleştirildiğinde komut yeniden denenecektir.
TF cihazları nasıl hazırlıyor?
Çoklu cihazlar için hazırlık adımı çoğunlukla tek cihazlarla aynıdır. Her cihaz, <device>
içindeki görünüm sırasına göre <target_preparer>
çağrılarak hazırlanır.
Ayrıca, cihazların eşleştirilmesi gibi birden fazla cihaz gerektiren hazırlık adımlarına olanak tanıyan, yapılandırmanın kökünde belirtilen <multi_target_preparer>
de kullanabilirsiniz. target_preparer
adımından sonra çalışır.
Bir alternatif, target_preparer
adımından önce çalışan <pre_multi_target_preparer>
dir.
- Bireysel cihaz kurulumundan önce yapılması gereken kurulum için
<pre_multi_target_preparer>
kullanılmalıdır. - Bireysel cihaz kurulumlarından sonra yapılması gereken kurulum için
<multi_target_preparer>
kullanılmalıdır.
Örneğin:
flaş cihazı 1 (target_preparer) flaş cihazı 2 (target_preparer) bluetooth her iki cihazı da bağlayın (multi_target_preparer)
Çoklu cihaz testi yazın
Normal bir tek cihaz testi yazarken IDeviceTest arayüzünü uygularsınız.
Testlerin, test altındaki cihazları alması için IMultiDeviceTest veya IInvationContextReceiver'ı uygulayabilirsiniz.
IMultiDeviceTest size cihazın IBuildInfo'suna doğrudan bir harita verirken, IInvationContextReceiver daha sonra size tam bağlamı (cihaz, IBuildInfo ve meta veriler) verir.
Daha sonra TF'nin test yazımı için kullanıma sunduğu olağan ITestDevice API'lerini kullanabileceksiniz.
device1.sync(device2)
gibi, bir cihazdan diğerine işlemleri yürütmek için henüz hiçbir API mevcut değildir. Desteklenecek ilgi çekici bir kullanım senaryonuz olduğunu düşünüyorsanız gerekçenizi android platformu listesine gönderin.
Çoklu cihaz merhaba dünya örneği
Merhaba Dünya benzeri bir örnek yapılandırma ekledik: multi-devices.xml Ayrıca, aygıtların ve yapılarının listesinin nasıl alınacağını gösteren bir multi_target_preparer
uygulaması örneği HelloWorldMultiTargetPreparer da bulunmaktadır.
Bu, aşağıdakileri içeren tam bir örnektir:
- İki cihazı tahsis etme
- Bir
multi_target_preparer
aracılığıyla her iki cihaza da erişme - İki cihazı kullanan bir test çalıştırma
Tradefed'i kurduktan sonra TF kabuğunda aşağıdaki komutu kullanabilirsiniz:
run example/multi-devices
Aşağıdakileri içeren bazı çıktılar görmelisiniz:
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'
Yukarıdakileri çalıştırmak için iki cihazın bağlı olması gerekir. Bu şu yolla kontrol edilebilir: adb devices
Çağırma devam ederken, list i
ve list d
ile onu tek cihazlar gibi izleyebilirsiniz:
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
Her çağrıda yer alan cihazları, ayrıca mevcut tüm cihazları ve bunların ilgili durumlarını görebilmeniz gerekir.
Bu örnekte, device1
ve device2
konfigürasyonundaki iki aygıtı çağırdığımızı unutmayın; Gerçekten ayarlanmasını beklediğiniz cihazın türüne bağlı olarak mümkünse daha açıklayıcı bir ad vermelisiniz.