सीटीएस डिवाइस इंटरैक्शन हेल्पर मॉड्यूल

Android 11 या इसके बाद के वर्शन के लिए, Compatibility Test Suite (CTS) के डिवाइस इंटरैक्शन हेल्पर मॉड्यूल की मदद से, यह तय किया जा सकता है कि कुछ CTS टेस्ट, किसी डिवाइस पर यूज़र इंटरफ़ेस (यूआई) के साथ कैसे इंटरैक्ट करें. इसका मतलब है कि Android Compatibility Definition Document (CDD) या एपीआई दस्तावेज़ों में शामिल नहीं किए गए यूज़र इंटरफ़ेस (यूआई) एलिमेंट को बदलने जैसे ऐक्शन, सीडीडी के साथ काम करने वाले डिवाइसों पर किए जा सकते हैं. साथ ही, इससे डिवाइस पर सीटीएस पास करने में कोई समस्या नहीं आएगी.

जिन ओईएम को प्रॉडक्ट डेवलपमेंट के दौरान Android यूज़र इंटरफ़ेस (यूआई) को अपनी ज़रूरत के मुताबिक बनाना है और सीटीएस पास करना है वे हेल्पर मॉड्यूल लागू कर सकते हैं. अगर Android के डिफ़ॉल्ट वर्शन का इस्तेमाल किया जा रहा है, तो आपको कुछ और करने की ज़रूरत नहीं है.

सहायता करने वाले मॉड्यूल लागू करना

यूज़र इंटरफ़ेस को पसंद के मुताबिक बनाने से जुड़ी ज़रूरी शर्तें

यूज़र इंटरफ़ेस (यूआई) से जुड़ी किसी भी ज़रूरी शर्त के लिए, सीडीडी या Mainline मॉड्यूल देखें. अगर ज़रूरी यूज़र इंटरफ़ेस (यूआई), सीडीडी या मेनलाइन मॉड्यूल से कवर होता है, तो उस यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक़ नहीं बनाया जा सकता.

अगर यूज़र इंटरफ़ेस (यूआई) से इंटरैक्ट करने वाले सीटीएस टेस्ट, हेल्पर फ़्रेमवर्क का इस्तेमाल नहीं करते हैं, तो उस यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक नहीं बनाया जा सकता. यूज़र इंटरफ़ेस (यूआई) में बदलाव करने से पहले, टेस्ट मॉड्यूल को बदलने के लिए टेस्ट के मालिक के साथ काम करें.

इसके अलावा, यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाया जा सकता है.

लागू करने का वर्कफ़्लो

  1. अपने प्रॉडक्ट की ज़रूरत के हिसाब से यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाएं.
  2. मौजूदा AOSP हेल्पर मॉड्यूल को, सीटीएस टेस्ट मॉड्यूल के लिए सबक्लास के तौर पर असाइन करें. इन मॉड्यूल को यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करना होता है. कस्टम यूज़र इंटरफ़ेस (यूआई) के लिए, ज़रूरी इंटरैक्शन को सही तरीके से बदलें. बदलावों के टाइप के हिसाब से, रिप्लेसमेंट अलग-अलग होते हैं.
    • ओईएम सबक्लास, ओईएम पैकेज में होते हैं. जैसे, com.[oem].cts.helpers.
    • हर ओईएम सबक्लास का नाम एक सामान्य प्रीफ़िक्स से शुरू होता है, जो इसे एओएसपी के लागू करने के तरीके से अलग करता है. एओएसपी के लागू करने के तरीके का प्रीफ़िक्स Default होता है.
  3. टेस्ट रनर के इन नियमों का पालन करके, हेल्पर को एपीके में बनाएं.
    • Android.bp को android_test_helper_app का एलान करना चाहिए. इसका नाम, शामिल किए गए पैकेज के नाम जैसा होना चाहिए.
    • AndroidManifest.xml के लिए, APK को interaction-helpers-prefix नाम की मेटाडेटा प्रॉपर्टी का एलान करना होगा. इसकी वैल्यू, पिछले बुलेट पॉइंट में चुना गया क्लास प्रीफ़िक्स होगा.
    • ऐप्लिकेशन को cts-helpers-core, cts-helpers-interfaces, और com.android.cts.helpers.aosp पर काम करना चाहिए. अगर ओईएम हेल्पर, सभी ज़रूरी इंटरफ़ेस को पूरी तरह से लागू करते हैं, तो com.android.cts.helpers.aosp का इस्तेमाल करना ज़रूरी नहीं है.
  4. डिवाइस की इमेज में ro.vendor.cts_interaction_helper_packages प्रॉपर्टी सेट करें, ताकि APK का नाम शामिल किया जा सके. अगर आपको कई APK में हेल्पर को अलग-अलग तरीके से लागू करना है, तो इस प्रॉपर्टी में कोलन से अलग की गई पैकेज की सूची शामिल हो सकती है.
  5. पक्का करें कि सीटीएस के लिए Tradefed चलाते समय, APK testcases डायरेक्ट्री में उपलब्ध हो. अगर ज़रूरत हो, तो logcat मैसेज देखकर पुष्टि करें कि हेल्पर क्लास का सही वर्शन चुना गया है.
  6. ज़रूरी नहीं है, लेकिन हमारा सुझाव है कि आप इसे इस्तेमाल करें: AOSP को हेल्पर ऐप्लिकेशन लागू करने की जानकारी सबमिट करें या इसे तीसरे पक्ष की टेस्टिंग के लिए उपलब्ध कराएं.

सहायक फ़ंक्शन को लागू करने का उदाहरण

उदाहरण के लिए, CtsPrintTestCases को ICtsPrintHelper में तय किए गए इंटरफ़ेस के साथ हेल्पर की ज़रूरत होती है. AOSP में लागू किए गए इस फ़्रेमवर्क को com.android.cts.helpers.aosp.DefaultCtsPrintHelper कहा जाता है.

प्रिंट यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाने पर, com.oem.cts.helpers.OemCtsPrintHelper को सबक्लास किया जा सकता है.DefaultCtsPrintHelper Android.bp में मौजूद android_test_helper_app को com.oem.cts.helpers कहा जाता है. इससे com.oem.cts.helpers.apk जनरेट होता है. साथ ही, AndroidManifest.xml में interaction-helpers-prefix को Oem के तौर पर एलान किया जाता है.

डिवाइस प्रॉपर्टी ro.vendor.cts_interaction_helper_packages को com.oem.cts.helpers पर सेट किया गया है.

रेफ़रंस के तौर पर लागू करने के तरीके

रेफ़रंस के तौर पर लागू किए गए कोड में, cts/libs/helpers में मौजूद इंटरफ़ेस और cts/helpers में मौजूद डिफ़ॉल्ट AOSP हेल्पर शामिल हैं. टॉप-लेवल इंटरफ़ेस के बारे में cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java में बताया गया है.

सीटीएस टेस्ट को उसके हेल्पर से कनेक्ट करने के लिए, टेस्ट के मालिक @Rule में दिए गए cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java की परिभाषा का इस्तेमाल कर सकते हैं.

फ़्रेमवर्क और उसके हेल्पर के अनुमानित व्यवहार का इस्तेमाल करने वाले हर सीटीएस मॉड्यूल के बारे में, cts/libs/helpers/core/src/com/android/cts/helpers में तय किए गए इंटरफ़ेस में बताया गया है.

सीटीएस टेस्ट चलाना

सहायता करने वालों के बिना टेस्टिंग करना

एक प्रॉपर्टी के अलावा, डिवाइस पर रनटाइम के दौरान हेल्पर के बिना टेस्ट करने का विकल्प मौजूद नहीं होता. हालांकि, यह विकल्प, सीटीएस टेस्ट के डिवाइस के साथ इंटरैक्ट करने के तरीके में बदलाव करता है. अगर आपको हेल्पर के बिना सीटीएस चलाना है, तो आपके पास ये दो विकल्प हैं:

  • डिवाइस से ro.vendor.cts_interaction_helper_packages प्रॉपर्टी हटाएं. इससे, उस बिल्ड पर हेल्पर का इस्तेमाल पूरी तरह से बंद हो जाता है.
  • सीटीएस चलाने से पहले, testcases डायरेक्ट्री से हेल्पर APK हटाएं. जब तक APK को testcases पर वापस नहीं लाया जाता, तब तक किसी भी रन के लिए हेल्पर का इस्तेमाल नहीं किया जा सकता.

Tradefed के आर्ग्युमेंट और ro.vendor.cts_interaction_helper_packages प्रॉपर्टी कंट्रोल का इस्तेमाल करके, डिफ़ॉल्ट सेटिंग में बदलाव किया जा सकता है. हेल्पर APK को यहीं से लोड किया जाता है.

उपलब्ध हर सेटिंग के लिए, अनुमानित वैल्यू या रेंज देखने के लिए यहां जाएं.

  • ro.vendor.cts_interaction_helper_packages, कोलन से अलग की गई एक स्ट्रिंग है. इसमें पैकेज के नाम शामिल होते हैं. यह कोई भी ऐसी वैल्यू ले सकता है जो OEM के हेल्पर ऐप्लिकेशन के लिए मान्य पैकेज हो.
  • cts-tradefed एक device-interaction-helper:property-name आर्ग्युमेंट स्वीकार करता है. यह आर्ग्युमेंट, टेस्ट रन के दौरान कुछ समय के लिए अनुमानित प्रॉपर्टी को बदल देता है. जैसे, --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'. प्रॉपर्टी के नाम की वैल्यू, डिवाइस पर सेट की गई कोई भी प्रॉपर्टी हो सकती है. प्रॉपर्टी की वैल्यू पर वही पाबंदियां लागू होती हैं जो ऊपर बताई गई ro.vendor.cts_interaction_helper_packages प्रॉपर्टी पर लागू होती हैं.

पसंद के मुताबिक बनाए गए विकल्पों के साथ टेस्टिंग करना

डिफ़ॉल्ट रूप से, रेफ़रंस के तौर पर लागू किए गए सीटीए, स्टॉक Android पर सीटीएस पास करते हैं. देखें कि पार्टनर के लागू किए गए समाधान, यूज़र इंटरफ़ेस (यूआई) में बदलावों के साथ सीटीएस पास करते हैं. यूआई या सुविधाओं के लिए, जो भी CTS मॉड्यूल काम करते हैं उन्हें चलाएं.

ऐसा हो सकता है कि कुछ CTS मॉड्यूल या हेल्पर, अभी कुछ कस्टमाइज़ेशन के साथ काम न करें.

  • ऐसा हो सकता है कि जिस यूज़र इंटरफ़ेस (यूआई) को आपको पसंद के मुताबिक बनाना है उसके साथ इंटरैक्ट करने वाला सीटीएस मॉड्यूल, हेल्पर फ़्रेमवर्क का इस्तेमाल न करे. यह उम्मीद की जाती है कि मांग और टेस्ट के मालिक की प्राथमिकताओं के आधार पर, CTS मॉड्यूल को हेल्पर फ़्रेमवर्क में बदल दिया जाएगा. फ़ाइल को प्रोसेस की शुरुआत में ही कन्वर्ज़न के लिए अनुरोध करें, ताकि यह पक्का किया जा सके कि कन्वर्ज़न शेड्यूल के हिसाब से हो. यह ठीक वैसा ही है जैसे प्लान की गई सुविधाओं को सपोर्ट करने के लिए, सीटीएस में बदलाव का अनुरोध करना.
  • ऐसा हो सकता है कि मौजूदा हेल्पर के दिए गए फ़ंक्शन, आपकी पसंद के मुताबिक पूरी तरह से काम न करें. हेल्पर फ़ंक्शन को यूज़र इंटरफ़ेस (यूआई) की डिपेंडेंसी से अलग रखना चाहिए. अगर किसी हेल्पर फ़ंक्शन में यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्या है, तो इसे सीटीएस में मौजूद गड़बड़ियों की तरह ही माना जा सकता है.