एचएएल टेस्टेबिलिटी चेक

एंड्रॉइड 9 वेंडर टेस्ट सूट (वीटीएस) डिवाइस कॉन्फ़िगरेशन का उपयोग करने के लिए एक रनटाइम विधि का समर्थन करता है ताकि यह पहचाना जा सके कि उस डिवाइस लक्ष्य के लिए कौन से वीटीएस परीक्षण छोड़ दिए जाने चाहिए।

वीटीएस परीक्षण लचीलापन

एंड्रॉइड 8.0 के अनुसार, एंड्रॉइड 8.0 और उच्चतर के साथ लॉन्च किए गए सभी उपकरणों के लिए वीटीएस परीक्षण आवश्यक हैं। हालाँकि, सभी वीटीएस परीक्षण सभी डिवाइस लक्ष्यों पर लागू नहीं होते हैं। उदाहरण के लिए:

  • यदि कोई विशिष्ट उपकरण परीक्षण एचएएल (जैसे आईआर) का समर्थन नहीं करता है, तो वीटीएस को उस उपकरण लक्ष्य के विरुद्ध उस एचएएल परीक्षण के लिए परीक्षण चलाने की आवश्यकता नहीं है।
  • यदि कई डिवाइस एक ही एसओसी और विक्रेता छवि साझा करते हैं लेकिन उनकी हार्डवेयर कार्यक्षमताएं अलग-अलग हैं, तो वीटीएस को यह निर्धारित करना होगा कि किसी विशिष्ट डिवाइस लक्ष्य के लिए परीक्षण चलाया जाना चाहिए या छोड़ दिया जाना चाहिए।

वीटीएस परीक्षण प्रकार

वीटीएस में निम्नलिखित परीक्षण प्रकार शामिल हैं:

  • अनुपालन परीक्षण फ्रेमवर्क और विक्रेता विभाजन के बीच अनुकूलता सुनिश्चित करते हैं। इन परीक्षणों को एंड्रॉइड 8.0 या उच्चतर के साथ लॉन्च होने वाले उपकरणों पर चलाया जाना (और पास होना) आवश्यक है।
  • गैर-अनुपालन परीक्षण विक्रेताओं को उत्पाद की गुणवत्ता (प्रदर्शन/फ़ज़िंग आदि) में सुधार करने में मदद करते हैं। ये परीक्षण विक्रेताओं के लिए वैकल्पिक हैं।

कोई परीक्षण अनुपालन परीक्षण है या नहीं यह इस बात पर निर्भर करता है कि वह किस योजना से संबंधित है। वीटीएस योजना के साथ चलने वाले परीक्षण अनुपालन परीक्षण माने जाते हैं।

समर्थित एचएएल निर्धारित करें

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

  • /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 format="hidl">
        <name>android.hardware.vibrator</name>
        <transport>hwbinder</transport>
        <version>1.2</version>
        <interface>
            <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • फ़ाइल में एक ही HAL (एक ही नाम के साथ) के लिए कई प्रविष्टियाँ हो सकती हैं, लेकिन विभिन्न संस्करण और इंटरफ़ेस के साथ।
    • यदि फ़ाइल में किसी प्रविष्टि के लिए केवल एक version कॉन्फ़िगरेशन है, तो version1.2 का अर्थ है कि विक्रेता 1.0 ~ 1.2 से सभी संस्करणों का समर्थन करता है।
  • एलशाल । डिवाइस पर एक उपकरण जो hwservicemanager के साथ पंजीकृत HAL सेवाओं के बारे में रनटाइम जानकारी दिखाता है। उदाहरण:
    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/)
    

अनुपालन परीक्षण

अनुपालन परीक्षणों के लिए, वीटीएस डिवाइस द्वारा प्रदान किए गए सभी एचएएल उदाहरणों को निर्धारित (और परीक्षण) करने के लिए विक्रेता मैनिफ़ेस्ट पर निर्भर करता है। निर्णय प्रवाह:

Testability check for compliance

चित्र 1. वीटीएस अनुपालन परीक्षणों के लिए परीक्षण योग्यता जांच

गैर-अनुपालन परीक्षण

गैर-अनुपालन परीक्षणों के लिए, वीटीएस manifest.xml फ़ाइल में दावा नहीं किए गए प्रयोगात्मक एचएएल को निर्धारित (और परीक्षण) करने के लिए विक्रेता मैनिफ़ेस्ट और lshal आउटपुट पर निर्भर करता है। निर्णय प्रवाह:

Testability check for noncompliance

चित्र 2. वीटीएस गैर-अनुपालन परीक्षणों के लिए परीक्षण योग्यता जांच

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

VTS निम्नलिखित क्रम में निम्नलिखित स्थानों पर विक्रेता manifest.xml फ़ाइल की जाँच करता है:

  1. /vendor/etc/vintf/manifest.xml + ODM मेनिफेस्ट (यदि दोनों स्थानों पर समान HAL परिभाषित किया गया है, तो ODM मेनिफेस्ट /vendor/etc/vintf/manifest.xml में मौजूद HAL को ओवरराइड कर देता है)
  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_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 टेम्पलेट का उपयोग करता है। वीटीएस परीक्षण ढांचा परीक्षण को पूर्व-संसाधित करते समय पंजीकृत एचएएल को निकाल सकता है।

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