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

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

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

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

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

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

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

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

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

  1. अपने प्रॉडक्ट की ज़रूरत के हिसाब से यूज़र इंटरफ़ेस (यूआई) को पसंद के मुताबिक बनाएं.
  2. मौजूदा AOSP हेल्पर मॉड्यूल को, CTS टेस्ट मॉड्यूल के लिए सबक्लास के तौर पर असाइन करें. इन मॉड्यूल को यूज़र इंटरफ़ेस (यूआई) के साथ इंटरैक्ट करना होता है. कस्टम यूज़र इंटरफ़ेस (यूआई) के लिए, ज़रूरी इंटरैक्शन को सही तरीके से बदलें. बदलावों के हिसाब से, रिप्लेसमेंट अलग-अलग होते हैं.
    • ओईएम सबक्लास, ओईएम पैकेज में होते हैं. जैसे, com.[oem].cts.helpers.
    • हर ओईएम सबक्लास का नाम एक सामान्य प्रीफ़िक्स से शुरू होता है, जो इसे एओएसपी के लागू करने के तरीके से अलग करता है. एओएसपी के लागू करने के तरीके का प्रीफ़िक्स Default होता है.
  3. टेस्ट रनर के इन नियमों का पालन करके, हेल्पर को APK में बनाएं.
    • 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 में बताया गया है.

टेस्ट के मालिकों के पास, CTS टेस्ट को उसके हेल्पर से कनेक्ट करने का विकल्प होता है. इसके लिए, वे @Rule cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java में दिए गए 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, कोलन से अलग की गई एक स्ट्रिंग है. इसमें पैकेज के नाम शामिल होते हैं. इसकी वैल्यू, ओईएम के हेल्पर ऐप्लिकेशन के लिए मान्य पैकेज चॉइस हो सकती है.
  • 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 मॉड्यूल को मांग और टेस्ट के मालिक की प्राथमिकताओं के आधार पर, हेल्पर फ़्रेमवर्क में बदला जा सकता है. फ़ाइल को कन्वर्ज़न के लिए प्रोसेस की शुरुआत में ही अनुरोध करें, ताकि कन्वर्ज़न को शेड्यूल किया जा सके. यह ठीक वैसा ही है जैसे प्लान की गई सुविधाओं को सपोर्ट करने के लिए, सीटीएस में बदलाव का अनुरोध करना.
  • ऐसा हो सकता है कि मौजूदा हेल्पर के ज़रिए उपलब्ध कराए गए फ़ंक्शन, आपकी ज़रूरत के हिसाब से पूरी तरह काम न करें. हेल्पर फ़ंक्शन को यूज़र इंटरफ़ेस (यूआई) की डिपेंडेंसी से अलग होना चाहिए. अगर किसी हेल्पर फ़ंक्शन में यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्या है, तो इसे सीटीएस में मौजूद गड़बड़ियों की तरह ही माना जा सकता है.