एक नया डिवाइस कनेक्शन अतुल्यकालिक घटनाओं की एक श्रृंखला को ट्रिगर करता है जो स्पष्ट नहीं हैं फिर भी समझने लायक हैं।
शारीरिक रूप से जुड़ा हुआ
adb
और उपकरणों के साथ बुनियादी इंटरैक्शन प्रदान करने के लिए ट्रेडफेड ddmlib
लाइब्रेरी (एक जावा adb
लाइब्रेरी) का उपयोग करता है। इस समाधान का एक हिस्सा IDeviceChangeListener इंटरफ़ेस है जो नए डिवाइस ईवेंट के स्वागत की अनुमति देता है, जैसे:
-
deviceConnected
: जब कोई नया डिवाइसadb
द्वारा देखा जाता है -
deviceDisconnected
: जब कोई डिवाइस अबadb
को रिपोर्ट नहीं कर रहा है -
deviceChanged
: जब कोई प्रमुख डिवाइस स्थिति उत्पन्न होती है (जैसे डिवाइस ऑफ़लाइन या डिवाइस ऑनलाइन)
ये घटनाएं adb
स्तर पर यह तय करने के लिए पर्याप्त हैं कि कोई डिवाइस ऑनलाइन या ऑफलाइन कनेक्ट है या नहीं। लेकिन परीक्षण हार्नेस के लिए, हमें यह सुनिश्चित करने के लिए इससे भी अधिक मजबूत स्थिति की आवश्यकता है कि एक उपकरण वास्तव में परीक्षण चलाने के लिए तैयार है; इस पर संभावित स्थिति का प्रभाव नहीं पड़ना चाहिए जो नए कनेक्टेड डिवाइस के साथ आ सकता है।
ट्रेडफेड में घटनाओं का क्रम इस प्रकार है:
- डिवाइस को
deviceConnected
के रूप में पहचाना जाता है औरadb
से नियमित ईवेंट के लिए खुला है एक आंतरिक ट्रेडफ़ेड इवेंट बनाया गया है जो:
- जांचें कि क्या डिवाइस पहले से ही ज्ञात है; ट्रेडफेड कुछ उपकरणों (विशेष रूप से एक वर्तमान आवंटित और चल रहे परीक्षण) का आंतरिक संदर्भ रखता है ताकि टीएफ को बेतरतीब ढंग से उनका ट्रैक खोने से बचाया जा सके।
- जांचें कि डिवाइस
ONLINE
है याOFFLINE
।
यदि उपकरण है:
OFFLINE
: डिवाइस को ट्रेडफेडCONNECTED_OFFLINE
स्थिति में स्विच कर दिया जाएगा, जो डिवाइस को अभी तक परीक्षण चलाने की अनुमति नहीं देता है। यदि डिवाइस बाद में ऑनलाइन है, तो यहONLINE
चक्र से गुजरेगा। यदि हमेंdeviceDisconnect
ईवेंट प्राप्त होता है, तो डिवाइस को सूची से हटा दिया जाएगा।ONLINE
(जैसा कि एडीबी द्वारा देखा गया है): डिवाइस कोCONNECTED_ONLINE
स्थिति में रखा जाएगा और परीक्षण आवंटन के लिए इसकी उपलब्धता की जांच की जाएगी:checking_availability
:।
यदि
availability
जांच सफल होती है, तो डिवाइस को परीक्षण आवंटन के लिए उपलब्ध के रूप में चिह्नित किया जाएगा; यह परीक्षण चलाने में सक्षम होगा. यदि नहीं, तो डिवाइस को आवंटन के लिएunavailable
के रूप में चिह्नित किया जाएगा और कोई परीक्षण प्राप्त नहीं किया जा सकेगा।
डिवाइसों को सूचीबद्ध करते समय ये सभी स्थितियाँ ट्रेडफेड कंसोल में परिलक्षित होती हैं: tf> list devices
यह ध्यान रखना महत्वपूर्ण है कि जब डिवाइस को वर्तमान में परीक्षण के लिए आवंटित किया जाता है, तो उपरोक्त में से अधिकांश घटित नहीं होंगे और ट्रेडफेड आंतरिक रूप से डिवाइस की स्थिति का निर्धारण करेगा। इसलिए ट्रेडफेड द्वारा सूचीबद्ध होने के बावजूद किसी डिवाइस का adb devices
से गायब हो जाना संभव है। उदाहरण के लिए, ऐसा तब हो सकता है जब कोई परीक्षण डिवाइस को रीबूट कर रहा हो।
एडीबी कनेक्ट से जुड़ा वर्चुअल डिवाइस
जब एक रिमोट वर्चुअल डिवाइस बनाया जाता है, तो ट्रेडफेड adb connect
उपयोग करके उससे जुड़ता है। यह आमतौर पर adb devices
में <some ip>:<port number>
के रूप में दिखने वाले डिवाइस को ट्रिगर करेगा और भौतिक रूप से कनेक्टेड डिवाइस के समान अनुक्रम का पालन करेगा।
डिवाइसकनेक्टेड ईवेंट होने पर डिवाइस ट्रैकिंग
जब deviceConnected
होता है, ddmlib
नए कनेक्टेड डिवाइस को ट्रैक करने के लिए एक नया संदर्भ IDevice बनाता है।
ट्रेडफेड उस संदर्भ का उपयोग करता है और अधिक उन्नत सेवा प्रदान करने के लिए इसे डिवाइस इंटरफ़ेस ITestDevice के अपने कार्यान्वयन में लपेटता है। लेकिन अंतर्निहित IDevice हमेशा ddmlib
से आने वाला होता है।
इसका मतलब यह है कि यदि कोई नया डिवाइस कनेक्ट होता है, तो एक नया ITestDevice बनाया जाता है और IDevice के साथ संबद्ध किया जाता है। जब किसी आमंत्रण के दौरान ऐसा होता है और ITestDevice का उपयोग किया जा रहा है, तब भी अंतर्निहित IDevice को बदल दिया जाता है ताकि परीक्षण उचित संदर्भ पर आगे बढ़ सके। यह हर बार डिवाइस के डिस्कनेक्ट/पुनः कनेक्ट होने पर (उदाहरण के लिए, रीबूट के दौरान) निर्बाध रूप से किया जाता है।