Yeni bir cihaz bağlantısı, henüz anlamaya değer olmayan bir dizi eşzamansız etkinliği tetikler.
Fiziksel olarak bağlı
Tradefed, adb
ve cihazlarla temel etkileşimi sağlamak için ddmlib
kitaplığını (Java adb
kitaplığı) kullanır. Bu çözümün bir parçası, aşağıdakiler gibi yeni cihaz etkinliklerinin alınmasına olanak tanıyan IDeviceChangeListener arayüzüdür:
deviceConnected
:adb
tarafından yeni bir cihaz görüldüğündedeviceDisconnected
: Bir cihaz artıkadb
'a raporlamadığındadeviceChanged
: Temel bir cihaz durumu gerçekleştiğinde (ör. çevrimdışı cihaz veya internete bağlı cihaz)
Bu etkinlikler, bir cihazın bağlı olup olmadığına, çevrimiçi olup olmadığına veya çevrimdışı olup olmadığına karar vermek için adb
düzeyinde yeterlidir. Ancak test donanım teçhizatı için, cihazın testleri çalıştırmaya gerçekten hazır olduğundan emin olmak üzere bundan daha güçlü bir duruma ihtiyacımız vardır. Bu durum, yeni bağlanan bir cihazla birlikte gelebilecek olası durum kararsızlığından etkilenmemelidir.
Tradefed'deki etkinlik sırası şu şekildedir:
- Cihaz
deviceConnected
olarak tanındı veadb
tarihinden itibaren düzenli etkinliklere açık Aşağıdakileri yapacak dahili bir Tradefed etkinliği oluşturulur:
- Cihazın zaten bilinip bilinmediğini kontrol edin. Tradefed, TF'nin takibini rastgele kaybetmesini önlemek için bazı cihazlara (özellikle de ayrılmış ve çalışan testler) dahili referans sağlar.
- Cihazın
ONLINE
veyaOFFLINE
olup olmadığını kontrol edin.
Cihaz:
OFFLINE
: Cihaz, TradefedCONNECTED_OFFLINE
durumuna geçirilir. Bu durumda cihaz henüz test çalıştıramaz. Cihaz daha sonra internete bağlanırsaONLINE
döngüsü uygulanır.deviceDisconnect
etkinliği alırsak cihaz listeden kaldırılır.ONLINE
(adb tarafından görüldüğü şekliyle): CihazCONNECTED_ONLINE
durumuna geçirilir ve test ayırma için müsaitliği kontrol edilir:checking_availability
.
availability
kontrolü başarılı olursa cihaz, test tahsisi için kullanılabilir olarak işaretlenir ve test çalıştırabilir. Aksi takdirde cihaz, tahsis içinunavailable
olarak işaretlenir ve test alamaz.
Cihazlar aşağıdaki yöntemlerle listelendiğinde bu durumların tümü Tradefed konsoluna yansıtılır: tf> list devices
Cihaz bir teste ayrıldığında yukarıdakilerin çoğunun gerçekleşmeyeceğini ve Tradefed'in cihaz durumunu dahili olarak belirleyeceğini unutmayın. Bu nedenle, bir cihazın Tradefed tarafından listelenmeye devam ederken adb devices
'ten kaybolması mümkündür. Örneğin, bir test cihazı yeniden başlattığında bu durumla karşılaşabilirsiniz.
adb connect ile bağlı sanal cihaz
Bir uzak sanal cihaz oluşturulduğunda Tradefed bu cihaza adb
connect
kullanarak bağlanır. Bu işlem genellikle cihazın adb devices
'te <some ip>:<port number>
olarak gösterilmesini tetikler ve fiziksel olarak bağlı cihazlarla aynı sırayı izler.
deviceConnected etkinliği gerçekleştiğinde cihaz izleme
deviceConnected
gerçekleştiğinde ddmlib
, yeni bağlanan cihazı izlemek için yeni bir IDevice referansı oluşturur.
Tradefed, bu referansı kullanır ve daha gelişmiş hizmet sunmak için kendi cihaz arayüzü ITestDevice uygulamasına sarmalar. Ancak temel IDevice her zaman ddmlib
kaynağından gelir.
Yani yeni bir cihaz bağlanırsa yeni bir ITestDevice oluşturulur ve IDevice ile ilişkilendirilir. Bu durum bir çağrı sırasında ve ITestDevice kullanılırken meydana gelirse testin doğru referansla devam edebilmesi için temel IDevice yine de değiştirilir. Bu işlem, bir cihazın bağlantısı her kesildiğinde/yeniden bağlandığında (örneğin, yeniden başlatma sırasında) sorunsuz bir şekilde gerçekleştirilir.