एकाधिक उपकरणों के साथ परीक्षण चलाएँ

यह पृष्ठ आपको परीक्षण के दौरान कई उपकरणों के साथ ट्रेड फेडरेशन टेस्ट हार्नेस का उपयोग करने में मदद करता है। आपको पहले सामान्य उपयोग से परिचित होना चाहिए जैसा कि एंड-टू-एंड उदाहरण में वर्णित है।

एकाधिक उपकरणों में क्या अंतर है?

विशेष रूप से ट्रेड फ़ेडरेशन में मल्टी-डिवाइस परीक्षण को कॉन्फ़िगर और चलाते समय कई चीज़ें भिन्न होती हैं:

कोई भी मौजूदा एक-डिवाइस कॉन्फ़िगरेशन मल्टी-डिवाइस मोड के लिए मान्य है।

<! -- कार्य: दूसरे वाक्य में एक-डिवाइस उपयोग के मामले का उदाहरण जोड़कर तुरंत ऊपर दिए गए वाक्य को स्पष्ट करें क्योंकि यह मल्टी-डिवाइस मोड से संबंधित है। -->>

एकाधिक डिवाइस कॉन्फ़िगरेशन

यह दस्तावेज़ मानता है कि आप पहले से ही विशिष्ट TF परीक्षण कॉन्फ़िगरेशन से परिचित हैं। दो उपकरणों के साथ एक सामान्य परीक्षण कॉन्फ़िगरेशन इस प्रकार दिखता है:

<configuration description="A simple multi-devices example in Tradefed">

    <device name="device1">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <device name="device2">
        <target_preparer class="com.android.tradefed.targetprep.DeviceSetup" />
    </device>

    <option name="log-level" value="verbose" />
    <test class="com.android.tradefed.HelloWorldMultiDevices" />

    <logger class="com.android.tradefed.log.FileLogger" />
    <result_reporter class="com.android.tradefed.result.ConsoleResultReporter" />

</configuration>

संरचना के बारे में कई बातों का उल्लेख करना आवश्यक है:

  • प्रत्येक डिवाइस के लिए जिसकी आवश्यकता होगी, एक <device> अपेक्षित है।
  • <build_provider> , <target_preparer> , <device_recovery> , <device_requirements> , और <device_options> यदि आवश्यक हो तो <device> टैग के भीतर शामिल किया जाना चाहिए; अन्यथा एक अपवाद फेंक दिया जाएगा.
  • <device> के लिए name विशेषता अनिवार्य है और कॉन्फ़िगरेशन में मौजूद सभी डिवाइसों के बीच अद्वितीय होनी चाहिए। इसका उपयोग इससे जुड़े विशेष उपकरण को संदर्भित करने के लिए किया जाता है। यह आपके परीक्षण को किसी विशेष डिवाइस को लक्षित करने की अनुमति देता है।
  • कॉन्फ़िगरेशन के मूल में <option> वैश्विक दायरा या तो हो सकता है या <device> टैग के अंदर निर्दिष्ट होने पर डिवाइस के दायरे तक सीमित हो सकता है।

एकल-डिवाइस कॉन्फ़िगरेशन पर लागू अन्य सभी नियम अभी भी यहां लागू हैं। अधिक विवरण के लिए नीचे हैलो वर्ल्ड उदाहरण देखें।

कमांड लाइन अद्यतन

टीएफ कमांड लाइन पर विकल्प निर्दिष्ट करते समय, {<device name>} का उपयोग करके डिवाइस स्कोप निर्दिष्ट करना भी संभव है जहां <device name> एक्सएमएल कॉन्फ़िगरेशन में निर्दिष्ट नाम है।

उपरोक्त उदाहरण में, निम्नलिखित विकल्पों की अनुमति थी:

  • --com.android.tradefed.targetprep.DeviceSetup:disable
  • --device-setup:disable

आप डिवाइस नाम का उपयोग करके डिवाइस build_provider ऑब्जेक्ट में से केवल एक को लक्षित कर सकते हैं, जैसे:

--{device2}device-setup:disable

इस उदाहरण में, device2 डिवाइस सेटअप को छोड़ देता है जबकि device1 ऐसा नहीं करता है।

TF उपकरणों का चयन कैसे करता है?

ट्रेड फ़ेडरेशन कॉन्फ़िगरेशन में डिवाइस की उपस्थिति के क्रम में device_requirements (आमतौर पर डिवाइस स्वाद, उत्पाद, आदि) से मेल खाने वाले डिवाइस की तलाश करता है। हर बार एक उपकरण आवंटित होने पर, TF अगला उपकरण आवंटित करने का प्रयास करता है। यदि सभी डिवाइसों को आवंटित करना संभव नहीं है, तो उन सभी को रिलीज़ कर दिया जाएगा और सभी डिवाइसों का मिलान होने पर कमांड का पुनः प्रयास किया जाएगा।

टीएफ उपकरण कैसे तैयार करता है?

बहु-उपकरणों के लिए तैयारी का चरण अधिकतर एकल उपकरणों के समान ही होता है। प्रत्येक डिवाइस को <device> के अंदर उपस्थिति के क्रम में <target_preparer> कॉल करके तैयार किया जाता है।

आप कॉन्फ़िगरेशन के मूल में निर्दिष्ट <multi_target_preparer> भी उपयोग कर सकते हैं जो कई उपकरणों की आवश्यकता वाले तैयारी चरणों को सक्षम करता है, जैसे उपकरणों की जोड़ी बनाना। यह target_preparer चरण के बाद चलता है।

एक विकल्प <pre_multi_target_preparer> है जो target_preparer चरण से पहले चलता है।

  • <pre_multi_target_preparer> उपयोग सेटअप के लिए किया जाना चाहिए जो व्यक्तिगत डिवाइस सेटअप से पहले किया जाना चाहिए
  • <multi_target_preparer> का उपयोग सेटअप के लिए किया जाना चाहिए जो अलग-अलग डिवाइस सेटअप के बाद किया जाना चाहिए।

उदाहरण के लिए:

फ़्लैश डिवाइस 1 (लक्ष्य_तैयारकर्ता) फ़्लैश डिवाइस 2 (लक्ष्य_तैयारकर्ता) ब्लूटूथ दोनों डिवाइसों को कनेक्ट करता है (मल्टी_टार्गेट_तैयारकर्ता)

मल्टी-डिवाइस परीक्षण लिखें

नियमित एकल-डिवाइस परीक्षण लिखते समय, आप IDeviceTest इंटरफ़ेस लागू करते हैं।

परीक्षण के तहत डिवाइस प्राप्त करने के लिए, आप या तो IMultiDeviceTest या IInvocationContextReceiver लागू कर सकते हैं।

IMultiDeviceTest आपको अपने IBuildInfo पर डिवाइस का सीधा नक्शा देता है जबकि IInvocationContextReceiver बाद में आपको पूरा संदर्भ (डिवाइस, IBuildInfo और मेटाडेटा) देता है।

फिर आप सामान्य ITestDevice API का उपयोग करने में सक्षम होंगे जिन्हें TF ने परीक्षण लेखन के लिए रखा है।

एक डिवाइस से दूसरे डिवाइस पर संचालन करने के लिए अभी तक कोई एपीआई मौजूद नहीं है, जैसे कि device1.sync(device2) । यदि आपको लगता है कि आपके पास समर्थन के लिए एक आकर्षक उपयोग का मामला है, तो अपना तर्क एंड्रॉइड-प्लेटफ़ॉर्म सूची पर भेजें।

मल्टी डिवाइसेज हैलो वर्ल्ड उदाहरण

हमने एक हैलो वर्ल्ड-जैसा उदाहरण कॉन्फ़िगरेशन जोड़ा है: मल्टी-डिवाइसेस.एक्सएमएल multi_target_preparer कार्यान्वयन का एक उदाहरण भी है हैलोवर्ल्डमल्टीटार्गेटप्रीपेयर जो दिखाता है कि डिवाइस और उनके बिल्ड की सूची कैसे प्राप्त करें।

यह एक पूर्ण उदाहरण है जिसमें शामिल है:

  • दो डिवाइस आवंटित करना
  • multi_target_preparer के माध्यम से दोनों डिवाइस तक पहुंच
  • एक परीक्षण चला रहा है जो दो उपकरणों का उपयोग करता है

एक बार जब आप ट्रेडफेड का निर्माण कर लेते हैं, तो आप टीएफ शेल में निम्नलिखित कमांड का उपयोग कर सकते हैं:

run example/multi-devices

आपको निम्नलिखित वाला कुछ आउटपुट देखना चाहिए:

08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' with build id '3146108'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device '00b4e73b4cbcd162' from context with build 'com.android.tradefed.build.DeviceBuildInfo@c99cbc1'
08-15 10:52:43 I/HelloWorldMultiDevices: Hello World! device 'LP5A390056' from context with build 'com.android.tradefed.build.DeviceBuildInfo@b41f20c5'

उपरोक्त को चलाने के लिए आपको दो डिवाइस कनेक्ट होने की आवश्यकता है। इसे इसके माध्यम से जांचा जा सकता है: adb devices

जब आह्वान प्रगति पर है, तो आप इसे list i और list d वाले एकल उपकरणों की तरह मॉनिटर कर सकते हैं:

tf >list i
Command Id  Exec Time  Device                          State
1           0m:35      [00b4e73b4cbcd162, LP5A390056]  fetching build
tf >list d
Serial            State      Product   Variant   Build   Battery
00b4e73b4cbcd162  Allocated  bullhead  bullhead  NRD90O  100
LP5A390056        Allocated  shamu     shamu     NRD90I  100

आपको प्रत्येक आह्वान में शामिल उपकरणों के साथ-साथ सभी उपलब्ध उपकरणों और उनकी संबंधित स्थिति को देखने में सक्षम होना चाहिए।

ध्यान दें कि इस उदाहरण में हमने कॉन्फ़िगरेशन में दो डिवाइसों को device1 और device2 कहा है; यदि संभव हो तो आपको उस डिवाइस के प्रकार के आधार पर अधिक वर्णनात्मक नाम देना चाहिए जिसे आप वास्तव में सेट करने की उम्मीद कर रहे हैं।