एचएएल की जांच की जा सकती है

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

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

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

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

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

वीटीएस में, इस तरह के टेस्ट शामिल होते हैं:

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

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

साथ काम करने वाले HAL तय करना

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

  • /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 एट्रिब्यूट से पता चलता है कि फ़्रेमवर्क के लिए HAL का इस्तेमाल करना ज़रूरी है या नहीं.
    • फ़ाइल में एक ही एचएएल (एक ही नाम वाला) के लिए कई एंट्री हो सकती हैं, लेकिन उनके वर्शन और इंटरफ़ेस अलग-अलग हो सकते हैं.
    • फ़ाइल में एक ही एंट्री के लिए कई version कॉन्फ़िगरेशन हो सकते हैं. इससे पता चलता है कि फ़्रेमवर्क अलग-अलग वर्शन के साथ काम कर सकता है.
    • version1.0-1 का मतलब है कि फ़्रेमवर्क, सबसे पुराने वर्शन 1.0 के साथ काम कर सकता है. इसके लिए, 1.1 से ज़्यादा नए वर्शन की ज़रूरत नहीं है.
  • डिवाइस manifest.xml. यह वेंडर की ओर से उपलब्ध कराए गए HAL इंस्टेंस का दावा करता है. उदाहरण:
    <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 कॉन्फ़िगरेशन है, तो इसका मतलब है कि वेंडर, 1.0 से 1.2 तक के सभी वर्शन के साथ काम करता है.version1.2
  • lshal. डिवाइस पर मौजूद एक टूल, जो hwservicemanager के साथ रजिस्टर की गई एचएएल सेवाओं के रनटाइम की जानकारी दिखाता है. उदाहरण:
    android.hardware.vibrator@1.0::IVibrator/default

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

अनुपालन से जुड़े टेस्ट

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

नीति के पालन की जांच करने की सुविधा

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

नीति के उल्लंघन की जांच

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

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

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

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

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

  1. /vendor/etc/vintf/manifest.xml + ओडीएम मेनिफ़ेस्ट (अगर दोनों जगहों पर एक ही HAL तय किया गया है, तो ओडीएम मेनिफ़ेस्ट, /vendor/etc/vintf/manifest.xml में मौजूद HAL को बदल देगा)
  2. /vendor/etc/vintf/manifest.xml
  3. ओडीएम 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_testibility_checker एक बाइनरी है, जिसे वीटीएस के साथ पैकेज किया जाता है. इसका इस्तेमाल वीटीएस टेस्ट फ़्रेमवर्क, रनटाइम के दौरान यह तय करने के लिए करता है कि दिए गए एचएएल टेस्ट को टेस्ट किया जा सकता है या नहीं. यह 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>}

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

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

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