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