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

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 के साथ रजिस्टर की गई एचएएल सेवाओं के रनटाइम की जानकारी दिखाता है. उदाहरण:
    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, डिवाइस से दिए गए सभी एचएएल इंस्टेंस का पता लगाने और उनकी जांच करने के लिए, वेंडर मेनिफ़ेस्ट पर निर्भर करता है. फ़ैसला लेने का तरीका:

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

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

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

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

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

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

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

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

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