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