Yeni bir cihaz bağlantısı, henüz belirgin olmayan ancak anlaşılması gereken bir dizi eşzamansız etkinliği tetikler.
Fiziksel olarak bağlı
Tradefed, ddmlib
ve cihazlarla temel etkileşimi sağlamak için ddmlib
kitaplığını (bir Java adb
kitaplığı) kullanır.adb
Bu çözümün bir parçası da yeni cihaz etkinliklerinin alınmasına olanak tanıyan IDeviceChangeListener arayüzüdür. Örneğin:
deviceConnected
:adb
tarafından yeni bir cihaz görüldüğündedeviceDisconnected
: Bir cihaz artıkadb
'e raporlama yapmadığındadeviceChanged
: Cihaz çevrimdışı veya cihaz çevrimiçi gibi önemli bir cihaz durumu oluştuğunda
Bu etkinlikler, bir cihazın bağlı, çevrimiçi veya çevrimdışı olup olmadığına karar vermek için adb
düzeyinde yeterlidir. Ancak test düzeneği için, bir cihazın testleri gerçekten çalıştırmaya hazır olduğundan emin olmak amacıyla bundan daha güçlü bir duruma ihtiyacımız var. Bu durum, yeni bağlanan bir cihazla birlikte gelebilecek olası durum kararsızlığından etkilenmemelidir.
Tradefed'deki etkinlik sırası şöyledir:
- Cihaz,
deviceConnected
olarak tanınıyor veadb
tarihinden itibaren normal etkinliklere açık Aşağıdaki işlemleri yapacak bir dahili Tradefed etkinliği oluşturulur:
- Cihazın zaten biliniyor olup olmadığını kontrol edin. Tradefed, TF'nin cihazları rastgele takip etmesini önlemek için bazı cihazlara (özellikle şu anda ayrılmış ve test çalıştıran cihazlar) dahili referans tutar.
- Cihazın
ONLINE
veyaOFFLINE
olup olmadığını kontrol edin.
Cihaz şu ise:
OFFLINE
: Cihaz, TradefedCONNECTED_OFFLINE
durumuna geçirilir. Bu durumda cihazın henüz test çalıştırmasına izin verilmez. Cihaz daha sonra internete bağlanırsaONLINE
döngüsünden geçer.deviceDisconnect
etkinliği aldığımızda cihaz listeden kaldırılır.ONLINE
(adb tarafından görüldüğü gibi): Cihaz,CONNECTED_ONLINE
durumuna getirilir ve test için kullanılabilirliği kontrol edilir:checking_availability
.
availability
kontrolü başarılı olursa cihaz, test tahsisi için kullanılabilir olarak işaretlenir ve testleri çalıştırabilir. Aksi takdirde cihaz, tahsis içinunavailable
olarak işaretlenir ve herhangi bir test alamaz.
Bu durumların tümü, cihazlar şu yollarla listelenirken Tradefed konsoluna yansıtılır: tf> list devices
Cihaz şu anda bir test için ayrılmışsa yukarıdakilerin çoğunun gerçekleşmeyeceğini ve Tradefed'in cihaz durumunu dahili olarak belirleyeceğini unutmayın. Bu nedenle, bir cihazın adb devices
'dan kaybolup Tradefed tarafından listelenmeye devam etmesi mümkündür. Bu durum, örneğin bir test cihazı yeniden başlattığında meydana gelebilir.
adb connect ile bağlanan sanal cihaz
Uzak bir sanal cihaz oluşturulduğunda Tradefed, adb
connect
kullanarak cihaza bağlanır. Bu işlem genellikle cihazın adb devices
bölümünde <some ip>:<port number>
olarak görünmesini sağlar 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 referans IDevice oluşturur.
Tradefed, daha gelişmiş bir hizmet sunmak için bu referansı kullanır ve cihaz arayüzü ITestDevice'ın kendi uygulamasında sarmalar. Ancak temel IDevice her zaman ddmlib
tarafından sağlanan cihazdır.
Bu, yeni bir cihaz bağlandığında yeni bir ITestDevice oluşturulup IDevice ile ilişkilendirildiği anlamına gelir. Bu durum bir çağırma sırasında meydana geldiğinde ve ITestDevice kullanılıyorsa temel alınan IDevice yine de değiştirilir. Böylece test, uygun referans üzerinde devam edebilir. Bu işlem, bir cihaz her bağlantısı kesildiğinde/yeniden bağlandığında (örneğin, yeniden başlatma sırasında) sorunsuz bir şekilde yapılır.