Android 9 Vendor Test Suite (VTS), डिवाइस कॉन्फ़िगरेशन का इस्तेमाल करने के लिए रनटाइम तरीके के साथ काम करता है. इससे यह पता चलता है कि उस डिवाइस टारगेट के लिए, किन VTS टेस्ट को स्किप किया जाना चाहिए.
VTS टेस्ट की सुविधा
Android 8.0 के बाद से, Android 8.0 और इसके बाद के वर्शन पर लॉन्च किए गए सभी डिवाइसों के लिए, वीटीएस टेस्ट ज़रूरी हैं. हालांकि, सभी वीटीएस टेस्ट, सभी डिवाइस टारगेट पर लागू नहीं होते. उदाहरण के लिए:
- अगर कोई डिवाइस किसी एचएएल (जैसे कि आईआर) के लिए टेस्टिंग की सुविधा नहीं देता है, तो वीटीएस को उस डिवाइस के टारगेट के ख़िलाफ़ उस एचएएल टेस्ट के लिए टेस्ट चलाने की ज़रूरत नहीं है.
- अगर कई डिवाइसों में एक ही SoC और वेंडर इमेज है, लेकिन उनमें हार्डवेयर की अलग-अलग सुविधाएं हैं, तो VTS को यह तय करना होगा कि किसी खास डिवाइस टारगेट के लिए, टेस्ट को चलाया जाना चाहिए या नहीं.
वीटीएस टेस्ट के टाइप
वीटीएस में, इस तरह के टेस्ट शामिल होते हैं:
- अनुपालन से जुड़े टेस्ट से यह पक्का किया जाता है कि फ़्रेमवर्क और वेंडर के पार्टीशन एक-दूसरे के साथ काम करते हैं. इन टेस्ट को Android 8.0 या उसके बाद के वर्शन के साथ लॉन्च किए गए डिवाइसों पर चलाना और पास करना ज़रूरी है.
- नियमों का पालन न करने से जुड़े टेस्ट से, वेंडर को प्रॉडक्ट की क्वालिटी (परफ़ॉर्मेंस/फ़ज़िंग वगैरह) को बेहतर बनाने में मदद मिलती है. वेंडर के लिए, इन टेस्ट को पास करना ज़रूरी नहीं है.
कोई टेस्ट कंप्लायंस टेस्ट है या नहीं, यह इस बात पर निर्भर करता है कि वह किस प्लान से जुड़ा है. वीटीएस प्लान के साथ चलने वाले टेस्ट को अनुपालन टेस्ट माना जाता है.
साथ काम करने वाले 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
के साथ रजिस्टर की गई 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/)
अनुपालन से जुड़े टेस्ट
अनुपालन की जांच के लिए, वीटीएस वेंडर मेनिफ़ेस्ट पर निर्भर करता है. इससे यह तय किया जाता है कि डिवाइस में मौजूद सभी एचएएल इंस्टेंस कौनसे हैं और उनकी जांच की जाती है. फ़ैसले लेने का फ़्लो:
नीति के उल्लंघन की जांच
नीति के उल्लंघन की जांच करने के लिए, VTS, वेंडर मेनिफ़ेस्ट और lshal
आउटपुट पर निर्भर करता है. इससे, lshal
फ़ाइल में शामिल नहीं किए गए एक्सपेरिमेंटल HAL का पता लगाया जा सकता है और उनकी जांच की जा सकती है.manifest.xml
फ़ैसले लेने का फ़्लो:
वेंडर मेनिफ़ेस्ट का पता लगाना
वीटीएस, वेंडर की manifest.xml
फ़ाइल को इन जगहों पर इस क्रम में खोजता है:
/vendor/etc/vintf/manifest.xml
+ ओडीएम मेनिफ़ेस्ट (अगर दोनों जगहों पर एक ही एचएएल तय किया गया है, तो ओडीएम मेनिफ़ेस्ट,/vendor/etc/vintf/manifest.xml
में मौजूद एचएएल को बदल देगा)/vendor/etc/vintf/manifest.xml
- ओडीएम
manifest.xml
फ़ाइल, इन फ़ाइलों से इस क्रम में लोड की गई है:/odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
/odm/etc/vintf/manifest.xml
/odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
/odm/etc/manifest.xml
/vendor/manifest.xml
वीटीएस की जांच करने की सुविधा की उपलब्धता की जांच करने वाला टूल
vts_testibility_checker
एक बाइनरी है, जिसे वीटीएस के साथ पैकेज किया जाता है. इसका इस्तेमाल वीटीएस टेस्ट फ़्रेमवर्क, रनटाइम के दौरान यह तय करने के लिए करता है कि दिया गया 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>}
ऐक्सेस किए गए HAL का पता लगाना
यह तय करने के लिए कि VTS टेस्ट किन HAL को ऐक्सेस करते हैं, पक्का करें कि हर HAL टेस्ट, VtsHalHidlTargetTestEnvBase
टेंप्लेट का इस्तेमाल करके, टेस्ट में ऐक्सेस किए गए HAL को रजिस्टर करे. इसके बाद, वीटीएस टेस्टिंग फ़्रेमवर्क, टेस्ट की प्री-प्रोसेसिंग करते समय रजिस्टर किए गए HAL को निकाल सकता है.
अनुपालन से जुड़े टेस्ट के लिए, /system/etc/vintf/manifest.xml
भी देखा जा सकता है. अगर यहां कोई एचएएल तय किया गया है, तो वीटीएस को उसकी जांच करनी चाहिए. (सिस्टम की ओर से उपलब्ध कराई गई HAL सेवाओं (जैसे, graphics.composer/vr
) के लिए, HAL को /system/manifest.xml
में एलान किया जाता है.)