Bu sayfa, test sırasında Ticaret Federasyonu Test Harness'ını birden fazla cihazla kullanmanıza yardımcı olur.Öncelikle uçtan uca örnekte açıklandığı gibi normal kullanımla ilgili bilgi edinmeniz gerekir.
Birden fazla cihaz kullanırken ne gibi farklılıklar olur?
Ticaret Federasyonu'nda çeşitli cihaz testleri yapılandırılırken ve çalıştırılırken özellikle aşağıdaki noktalarda farklılıklar vardır:
Mevcut tek cihaz yapılandırmaları, çok cihazlı mod için geçerlidir.
<! -- TODO: Clarify the sentence immediately above by adding an example of a one-device use case as it pertains to multi-device mode in a second sentence. -->>
Birden fazla cihaz yapılandırması
Bu belgede, TF testinin tipik yapılandırması hakkında bilgi sahibi olduğunuz varsayılmaktadır. İki cihazla yapılan tipik bir test yapılandırması şu şekilde 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ı hakkında belirtilmesi gereken birkaç nokta vardır:
- Gerekli her cihaz için
<device>beklenir. - Gerekirse
<build_provider>,<target_preparer>,<device_recovery>,<device_requirements>ve<device_options>öğeleri<device>etiketi içine eklenmelidir. Aksi takdirde istisna oluşturulur. <device>içinnameözelliği zorunludur ve yapılandırmada bulunan tüm cihazlar arasında benzersiz olmalıdır. Bu kimlik, kendisiyle ilişkili belirli cihaza referans vermek için kullanılır. Bu sayede testiniz belirli bir cihazı hedefleyebilir.<option>, yapılandırmanın kök dizininde olduğunda genel kapsamlı olabilir veya<device>etiketi içinde belirtildiğinde cihaz kapsamıyla sınırlı olabilir.
Tek cihaz yapılandırması için geçerli olan diğer tüm kurallar burada da geçerlidir. Daha fazla bilgi için aşağıdaki Hello World örneğine bakın.
Komut satırı güncellemesi
TF komut satırında seçenekleri belirtirken {<device name>} kullanarak bir cihaz kapsamı da belirtebilirsiniz. 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. Örneğin:
--{device2}device-setup:disable
Bu örnekte, device2 cihaz kurulumunu atlıyor ancak device1 atlamıyor.
TF, cihazları nasıl seçer?
Ticaret Federasyonu, yapılandırmada cihazın görünüm sırasına göre device_requirements ile eşleşen bir cihaz arar (genellikle cihaz türü, ürün vb.).
Her cihaz ayrıldığında TF, bir sonraki cihazı ayırmaya çalışır. Tüm cihazları ayırmak mümkün değilse tüm cihazlar serbest bırakılır ve tüm cihazlar eşleştirildiğinde komut yeniden denenir.
TF cihazları nasıl hazırlar?
Birden fazla cihazın hazırlanması adımı, tek bir cihazın hazırlanması adımıyla büyük ölçüde aynıdır.
Her cihaz, <target_preparer> çağrılarak <device> içinde görünme sırasına göre hazırlanır.
Ayrıca, cihaz eşleme gibi birden fazla cihaz gerektiren hazırlık adımlarının etkinleştirilmesini sağlayan yapılandırmanın kök dizininde belirtilen <multi_target_preparer> öğesini de kullanabilirsiniz. target_preparer adımından sonra çalışır.
Alternatif olarak, target_preparer adımından önce çalışan bir <pre_multi_target_preparer> kullanabilirsiniz.
<pre_multi_target_preparer>, bireysel cihaz kurulumundan önce yapılması<pre_multi_target_preparer>gereken kurulum için kullanılmalıdır.<multi_target_preparer>, tek tek cihaz kurulumlarından sonra yapılması gereken kurulumlar için kullanılmalıdır.
Örneğin:
1. cihazı (target_preparer) yükle 2. cihazı (target_preparer) yükle Bluetooth her iki cihazı da bağla (multi_target_preparer)
Çok cihazlı test yazma
Normal tek cihaz testi yazarken IDeviceTest arayüzünü uygularsınız.
Testlerin, test edilen cihazları alması için IMultiDeviceTest veya IInvocationContextReceiver'ı uygulayabilirsiniz.
IMultiDeviceTest, cihazın IBuildInfo ile doğrudan eşlemesini sağlar. IInvocationContextReceiver ise daha sonra size tam bağlamı (cihaz, IBuildInfo ve meta veriler) verir.
Ardından, TF'nin test yazma için kullanıma sunduğu normal ITestDevice API'lerini kullanabilirsiniz.
Henüz bir cihazdan diğerine işlem yapmaya yarayan API'ler yoktur. Örneğin, device1.sync(device2). Desteklenmesi gereken zorlayıcı bir kullanım alanınız olduğunu düşünüyorsanız gerekçenizi android-platform listesine gönderin.
Çok cihazlı "Merhaba dünya" örneği
Hello World benzeri bir örnek yapılandırma ekledik:
multi-devices.xml
Ayrıca, cihazların listesini ve derlemelerini nasıl alacağınızı gösteren bir multi_target_preparer uygulaması örneği de var:
HelloWorldMultiTargetPreparer.
Bu, aşağıdakileri içeren eksiksiz bir örnektir:
- İki cihaz ayırma
- Her iki cihaza da
multi_target_preparerüzerinden erişme - İki cihazı da kullanan bir test çalıştırma
Tradefed'i oluşturduktan sonra TF kabuğunda aşağıdaki komutu kullanabilirsiniz:
run example/multi-devices
Aşağıdakileri içeren bir çıkış görmeniz gerekir:
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 durum şu yollarla kontrol edilebilir: adb devices
Çağırma işlemi devam ederken list i ve list d ile 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ğırmaya dahil olan cihazları, mevcut tüm cihazları ve bunların durumlarını görebilirsiniz.
Bu örnekte yapılandırmadaki iki cihaza device1 ve device2 adını verdiğimizi unutmayın. Mümkünse, gerçekten ayarlanmasını beklediğiniz cihazın türüne bağlı olarak daha açıklayıcı bir ad vermelisiniz.