Testleri birden fazla cihazla çalıştırın

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çin name ö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.