एचएएल की पुष्टि की जांच

Android 9 वेंडर टेस्ट सुइट (वीटीएस), डिवाइस कॉन्फ़िगरेशन का इस्तेमाल करने के लिए, रनटाइम के तरीके का इस्तेमाल करता है. इससे यह पता चलता है कि उस डिवाइस टारगेट के लिए कौनसी वीटीएस टेस्ट छोड़ी जानी चाहिए.

वीटीएस टेस्ट की सुविधा

Android 8.0 के बाद, Android 8.0 और उसके बाद के वर्शन पर लॉन्च किए गए सभी डिवाइसों के लिए, वीटीएस टेस्ट करना ज़रूरी है. हालांकि, सभी डिवाइस टारगेट पर सभी वीटीएस टेस्ट लागू नहीं होते. उदाहरण के लिए:

  • अगर कोई डिवाइस, टेस्टिंग एचएएल (उदाहरण के लिए, आईआर) के साथ काम नहीं करता है, तो VTS को उस डिवाइस टारगेट के लिए, उस एचएएल टेस्ट के लिए टेस्ट चलाने की ज़रूरत नहीं है.
  • अगर कई डिवाइसों में एक ही SoC और वेंडर इमेज है, लेकिन उनके हार्डवेयर की सुविधाएं अलग-अलग हैं, तो VTS को यह तय करना होगा कि किसी डिवाइस टारगेट के लिए जांच की जानी चाहिए या नहीं.

वीटीएस टेस्ट के टाइप

वीटीएस में ये टेस्ट शामिल हैं:

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

यह इस बात पर निर्भर करता है कि कोई टेस्ट, नीति का पालन करने से जुड़ा टेस्ट है या नहीं कि वह किस प्लान से जुड़ा है. वीटीएस प्लान के साथ चलने वाले टेस्ट को, नियमों का पालन करने से जुड़े टेस्ट माना जाता है.

काम करने वाले एचएएल तय करना

VTS, इन फ़ाइलों का इस्तेमाल करके यह पता लगा सकता है कि डिवाइस टारगेट, किसी खास एचएएल के साथ काम करता है या नहीं:

  • /system/compatibility_matrix.xml. फ़्रेमवर्क के लिए ज़रूरी एचएएल इंस्टेंस पर दावा करता है. उदाहरण:
    <hal format="hidl" optional="true">
        <name>android.hardware.vibrator</name>
        <version>1.0-1</version>
        <interface>
           <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    • optional एट्रिब्यूट से पता चलता है कि फ़्रेमवर्क के लिए, एचएएल की ज़रूरत है या नहीं.
    • फ़ाइल में एक ही नाम वाले एक ही एचएएल के लिए, अलग-अलग वर्शन और इंटरफ़ेस वाली कई एंट्री हो सकती हैं.
    • फ़ाइल में एक ही एंट्री के लिए कई version कॉन्फ़िगरेशन हो सकते हैं. इससे पता चलता है कि फ़्रेमवर्क अलग-अलग वर्शन के साथ काम कर सकता है.
    • version1.0-1 का मतलब है कि फ़्रेमवर्क, सबसे कम वर्शन 1.0 के साथ काम कर सकता है. साथ ही, इसके लिए 1.1 से ज़्यादा वर्शन की ज़रूरत नहीं होती.
  • डिवाइस manifest.xml. वेंडर से मिले एचएएल इंस्टेंस पर दावा करता है. उदाहरण:
    <hal format="hidl">
        <name>android.hardware.vibrator</name>
        <transport>hwbinder</transport>
        <version>1.2</version>
        <interface>
            <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    • फ़ाइल में एक ही नाम वाले एक ही एचएएल के लिए, अलग-अलग वर्शन और इंटरफ़ेस वाली कई एंट्री हो सकती हैं.
    • अगर फ़ाइल में किसी एंट्री के लिए सिर्फ़ एक version कॉन्फ़िगरेशन है, तो version1.2 का मतलब है कि वेंडर 1.0 से 1.2 तक के सभी वर्शन के साथ काम करता है.
  • lshal. डिवाइस पर मौजूद एक टूल, जो hwservicemanager के साथ रजिस्टर की गई HAL सेवाओं के बारे में रनटाइम की जानकारी दिखाता है. उदाहरण:
    android.hardware.vibrator@1.0::IVibrator/default

    lshal उन सभी एचएएल को भी दिखाता है जिनमें पासथ्रू लागू किया गया है.इसका मतलब है कि डिवाइस पर उससे जुड़ी -impl.so फ़ाइल मौजूद है. उदाहरण:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)

नीति का पालन करने से जुड़ी जांच

नीति का पालन करने से जुड़ी जांच के लिए, VTS, डिवाइस से मिले सभी एचएएल इंस्टेंस का पता लगाने और उनकी जांच करने के लिए, वेंडर मेनिफ़ेस्ट पर निर्भर करता है. फ़ैसला लेने का तरीका:

नीतियों का पालन करने के लिए, जांच की जा सकती है

पहली इमेज. वीटीएस की शर्तों का पालन करने से जुड़े टेस्ट के लिए, जांच की जा सकती है कि ऐप्लिकेशन टेस्ट के लिए तैयार है या नहीं

नीति का पालन न करने से जुड़ी जांच

नीति का पालन न करने से जुड़ी जांच के लिए, VTS वेंडर मेनिफ़ेस्ट और lshal आउटपुट पर निर्भर करता है. इससे, manifest.xml फ़ाइल में जिन एक्सपेरिमेंटल एचएएल के लिए दावा नहीं किया गया है उनकी पहचान की जाती है और उनकी जांच की जाती है. फ़ैसला लेने का तरीका:

नीति का पालन न करने पर, जांच की जा सकती है

दूसरी इमेज. वीटीएस के नियमों का पालन न करने से जुड़ी जांच के लिए, जांच की जा सकने की जांच करने वाले टेस्ट

वेंडर मेनिफ़ेस्ट ढूंढना

VTS, वेंडर manifest.xml फ़ाइल की जांच यहां बताए गए क्रम में इन जगहों पर करता है:

  1. /vendor/etc/vintf/manifest.xml + ODM मेनिफ़ेस्ट (अगर दोनों जगहों पर एक ही एचएएल तय किया गया है, तो /vendor/etc/vintf/manifest.xml में मौजूद मेनिफ़ेस्ट को ODM मेनिफ़ेस्ट बदल देता है)
  2. /vendor/etc/vintf/manifest.xml
  3. ODM manifest.xml फ़ाइल, इन फ़ाइलों से इस क्रम में लोड की गई है:
    1. /odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
    2. /odm/etc/vintf/manifest.xml
    3. /odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
    4. /odm/etc/manifest.xml
    5. /vendor/manifest.xml

VTS टेस्ट करने की सुविधा की जांच करने वाला टूल

vts_testibility_checker, VTS के साथ पैकेज की गई एक बाइनरी है. इसका इस्तेमाल, रनटाइम के दौरान VTS टेस्ट फ़्रेमवर्क करता है. इससे यह तय किया जाता है कि किसी HAL टेस्ट की जांच की जा सकती है या नहीं. यह वेंडर मेनिफ़ेस्ट फ़ाइल को लोड और पार्स करने के लिए, libvintf पर आधारित है. साथ ही, यह पिछले सेक्शन में बताए गए फ़ैसले के फ़्लो को लागू करता है.

vts_testability_check का इस्तेमाल करने के लिए:

  • नीतियों के पालन की जांच के लिए:
    vts_testability_check -c -b <bitness>  <hal@version>
  • नीति का पालन न करने की जांच के लिए:
    vts_testability_check -b <bitness>  <hal@version>

vts_testability_check का आउटपुट, इस JSON फ़ॉर्मैट का इस्तेमाल करता है:

{testable: <True/False> Instances: <list of instance names of HAL service>}

ऐक्सेस किए गए एचएएल तय करना

यह तय करने के लिए कि वीटीएस टेस्ट से कौनसे एचएएल ऐक्सेस किए जाते हैं, पक्का करें कि हर एचएएल टेस्ट, VtsHalHidlTargetTestEnvBase टेंप्लेट का इस्तेमाल करके, टेस्ट में ऐक्सेस किए गए एचएएल को रजिस्टर करता हो. इसके बाद, टेस्ट की प्री-प्रोसेसिंग के दौरान, VTS टेस्टिंग फ़्रेमवर्क, रजिस्टर किए गए एचएएल को निकाल सकता है.

नीतियों का पालन करने से जुड़े टेस्ट के लिए, /system/etc/vintf/manifest.xml को भी चुना जा सकता है. अगर यहां कोई एचएएल तय किया गया है, तो वीटीएस को इसकी जांच करनी चाहिए. (सिस्टम से मिलने वाली एचएएल सेवाओं (उदाहरण के लिए, graphics.composer/vr) के लिए, एचएएल को /system/manifest.xml में एलान किया जाता है.)