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:adbtarafı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,
deviceConnectedolarak tanınıyor veadbtarihinden 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
ONLINEveyaOFFLINEolup olmadığını kontrol edin.
Cihaz şu ise:
OFFLINE: Cihaz, TradefedCONNECTED_OFFLINEdurumuna geçirilir. Bu durumda cihazın henüz test çalıştırmasına izin verilmez. Cihaz daha sonra internete bağlanırsaONLINEdöngüsünden geçer.deviceDisconnectetkinliği aldığımızda cihaz listeden kaldırılır.ONLINE(adb tarafından görüldüğü gibi): Cihaz,CONNECTED_ONLINEdurumuna getirilir ve test için kullanılabilirliği kontrol edilir:checking_availability.
availabilitykontrolü başarılı olursa cihaz, test tahsisi için kullanılabilir olarak işaretlenir ve testleri çalıştırabilir. Aksi takdirde cihaz, tahsis içinunavailableolarak 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.