ट्रेडफेड में डिवाइस का पता लगाना

एक नया डिवाइस कनेक्शन अतुल्यकालिक घटनाओं की एक श्रृंखला को ट्रिगर करता है जो स्पष्ट नहीं हैं फिर भी समझने लायक हैं।

शारीरिक रूप से जुड़ा हुआ

adb और उपकरणों के साथ बुनियादी इंटरैक्शन प्रदान करने के लिए ट्रेडफेड ddmlib लाइब्रेरी (एक जावा adb लाइब्रेरी) का उपयोग करता है। इस समाधान का एक हिस्सा IDeviceChangeListener इंटरफ़ेस है जो नए डिवाइस ईवेंट के स्वागत की अनुमति देता है, जैसे:

  • deviceConnected : जब कोई नया डिवाइस adb द्वारा देखा जाता है
  • deviceDisconnected : जब कोई डिवाइस अब adb को रिपोर्ट नहीं कर रहा है
  • deviceChanged : जब कोई प्रमुख डिवाइस स्थिति उत्पन्न होती है (जैसे डिवाइस ऑफ़लाइन या डिवाइस ऑनलाइन)

ये घटनाएं adb स्तर पर यह तय करने के लिए पर्याप्त हैं कि कोई डिवाइस ऑनलाइन या ऑफलाइन कनेक्ट है या नहीं। लेकिन परीक्षण हार्नेस के लिए, हमें यह सुनिश्चित करने के लिए इससे भी अधिक मजबूत स्थिति की आवश्यकता है कि एक उपकरण वास्तव में परीक्षण चलाने के लिए तैयार है; इस पर संभावित स्थिति का प्रभाव नहीं पड़ना चाहिए जो नए कनेक्टेड डिवाइस के साथ आ सकता है।

ट्रेडफेड में घटनाओं का क्रम इस प्रकार है:

  1. डिवाइस को deviceConnected के रूप में पहचाना जाता है और adb से नियमित ईवेंट के लिए खुला है
  2. एक आंतरिक ट्रेडफ़ेड इवेंट बनाया गया है जो:

    • जांचें कि क्या डिवाइस पहले से ही ज्ञात है; ट्रेडफेड कुछ उपकरणों (विशेष रूप से एक वर्तमान आवंटित और चल रहे परीक्षण) का आंतरिक संदर्भ रखता है ताकि टीएफ को बेतरतीब ढंग से उनका ट्रैक खोने से बचाया जा सके।
    • जांचें कि डिवाइस ONLINE है या OFFLINE
  3. यदि उपकरण है:

    • OFFLINE : डिवाइस को ट्रेडफेड CONNECTED_OFFLINE स्थिति में स्विच कर दिया जाएगा, जो डिवाइस को अभी तक परीक्षण चलाने की अनुमति नहीं देता है। यदि डिवाइस बाद में ऑनलाइन है, तो यह ONLINE चक्र से गुजरेगा। यदि हमें deviceDisconnect ईवेंट प्राप्त होता है, तो डिवाइस को सूची से हटा दिया जाएगा।

    • ONLINE (जैसा कि एडीबी द्वारा देखा गया है): डिवाइस को CONNECTED_ONLINE स्थिति में रखा जाएगा और परीक्षण आवंटन के लिए इसकी उपलब्धता की जांच की जाएगी: checking_availability :।

  4. यदि 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 को बदल दिया जाता है ताकि परीक्षण उचित संदर्भ पर आगे बढ़ सके। यह हर बार डिवाइस के डिस्कनेक्ट/पुनः कनेक्ट होने पर (उदाहरण के लिए, रीबूट के दौरान) निर्बाध रूप से किया जाता है।