Yeni bir cihaz bağlantısı, anlaşılması kolay olmasa da anlaşılmaya değer bir dizi eşzamansız etkinlik 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
yeni bir cihaz gördüğündedeviceDisconnected
: Bir cihaz artıkadb
'a raporlamadığındadeviceChanged
: Cihazın önemli bir durumu olduğunda (ör. cihaz çevrimdışı veya cihaz çevrimiçi)
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 ortaya çıkabilecek olası durum kararsızlığından etkilenmemelidir.
Tradefed'deki etkinlik sırası şu şekildedir:
- Cihaz,
deviceConnected
olarak tanınıyor veadb
'ten gelen normal etkinliklere açık Aşağıdakileri yapacak dahili bir Tradefed etkinliği oluşturulur:
- Cihazın daha önce bilinip bilinmediğini kontrol edin. Tradefed, TF'nin cihazları rastgele kaybetmesini önlemek için bazı cihazlara (özellikle de şu anda ayrılmış ve test çalıştıran cihazlara) dahili referans tutar.
- 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üğü gibi): 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 şu yöntemlerle listelenirken 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
Uzaktan sanal cihaz oluşturulduğunda Tradefed, adb
connect
kullanarak bu cihaza 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 gelen cihazdır.
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ğ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.