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 (ör. aşağıdakiler) alınmasına olanak tanıyan IDeviceChangeListener arayüzüdür:
deviceConnected:adbtarafından yeni bir cihaz görüldüğündedeviceDisconnected: Bir cihaz artıkadb'e raporlama yapmadığındadeviceChanged: Cihaz çevrimdışı veya çevrimiçi olduğunda 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 koşum takımı için, bir cihazın testleri çalıştırmaya gerçekten 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 kaybetmesini önlemek için bazı cihazlara (özellikle şu anda ayrılmış ve testleri çalıştıran cihazlar) dahili referans tutar.
- Cihazın
ONLINEveyaOFFLINEolup olmadığını kontrol edin.
Cihaz:
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 şekilde 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ğlı 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österilmesine neden olur ve fiziksel olarak bağlı cihazlarla aynı sırayı izler.
Bir 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ünün kendi uygulamasında sarmalar.
ITestDevice
Ancak temel alınan IDevice her zaman ddmlib tarafından sağlanan cihazdır.
Bu nedenle, yeni bir cihaz bağlandığında yeni bir ITestDevice oluşturulur ve IDevice ile ilişkilendirilir. 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 (ör. yeniden başlatma sırasında) sorunsuz bir şekilde yapılır.