تتيح "مجموعة أدوات اختبار المورّد" (VTS) في Android 9 طريقة وقت تشغيل لاستخدام إعدادات الجهاز في تحديد اختبارات VTS التي يجب تخطّيها على الجهاز المستهدف.
مرونة اختبار VTS
اعتبارًا من الإصدار 8.0 من نظام التشغيل Android، أصبحت اختبارات VTS مطلوبة لجميع الأجهزة التي تم طرحها باستخدام الإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث. ومع ذلك، لا تنطبق جميع اختبارات VTS على جميع أهداف الأجهزة. على سبيل المثال:
- إذا كان جهاز معيّن لا يتوافق مع طبقة HAL للاختبار (مثل الأشعة تحت الحمراء)، لا يحتاج VTS إلى تشغيل اختبارات طبقة HAL هذه على الجهاز المستهدف.
- إذا كانت عدة أجهزة تشترك في نظام على شريحة (SoC) وصورة مورد نفسها ولكنها تتضمّن وظائف أجهزة مختلفة، يجب أن يحدّد VTS ما إذا كان يجب إجراء اختبار أو تخطّيه لجهاز مستهدف معيّن.
أنواع اختبارات VTS
يتضمّن VTS أنواع الاختبارات التالية:
- تضمن اختبارات الامتثال التوافق بين أقسام إطار العمل وأقسام المورّد. يجب إجراء هذه الاختبارات (واجتيازها) على الأجهزة التي تعمل بالإصدار 8.0 من نظام التشغيل Android أو الإصدارات الأحدث.
- تساعد اختبارات عدم الامتثال المورّدين في تحسين جودة المنتجات (الأداء/التشويش وما إلى ذلك). هذه الاختبارات اختيارية للمورّدين.
يعتمد ما إذا كان الاختبار اختبار امتثال أم لا على الخطة التي ينتمي إليها. تُعد الاختبارات التي يتم تنفيذها باستخدام خطة VTS اختبارات امتثال.
تحديد طبقات تجريد الأجهزة المتوافقة
يمكن أن تستخدم VTS الملفات التالية لتحديد ما إذا كان هدف الجهاز يتوافق مع طبقة تجريد الأجهزة (HAL) معيّنة:
-
/system/compatibility_matrix.xml. يطالب مثيلات HAL التي يتطلّبها إطار العمل. مثال:<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) بشكل صارم. - قد يحتوي الملف على إدخالات متعددة لنفس طبقة تجريد الأجهزة (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>- قد يحتوي الملف على إدخالات متعددة لنفس طبقة تجريد الأجهزة (HAL) (بالاسم نفسه) ولكن بإصدارات وواجهات مختلفة.
- إذا كان الملف يحتوي على
versionإعداد واحد لأحد الإدخالات، يعنيversion1.2أنّ المورّد يتيح جميع الإصدارات من 1.0 إلى 1.2.
- lshal أداة على الجهاز تعرض معلومات وقت التشغيل حول خدمات HAL المسجّلة في
hwservicemanagerمثال: تعرضandroid.hardware.vibrator@1.0::IVibrator/default
lshalأيضًا جميع طبقات تجريد الأجهزة التي تتضمّن عمليات تنفيذ للوظيفة passthrough (أي التي تتضمّن ملف-impl.soالمقابل على الجهاز). مثال:android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/) android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
اختبارات الامتثال
بالنسبة إلى اختبارات التوافق، يعتمد VTS على بيان المورّد لتحديد (واختبار) جميع مثيلات HAL التي يوفّرها الجهاز. مسار اتّخاذ القرار:
اختبارات عدم الامتثال
بالنسبة إلى اختبارات عدم الامتثال، يعتمد VTS على بيان المورّد ونتائج lshal لتحديد (واختبار) حِزم HAL التجريبية التي لم يتم الإفصاح عنها في ملف manifest.xml. مسار اتّخاذ القرار:
تحديد موقع ملف بيان المورّد
يبحث VTS عن ملف manifest.xml الخاص بالمورّد في المواقع التالية بالترتيب التالي:
/vendor/etc/vintf/manifest.xml+ بيان ODM (إذا تم تحديد HAL نفسه في كلا المكانين، سيحل بيان 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 بالتنسيق التالي:
{testable: <True/False> Instances: <list of instance names of HAL service>}تحديد طبقات تجريد الأجهزة التي تم الوصول إليها
لتحديد حِزم HAL التي تصل إليها اختبارات VTS، تأكَّد من أنّ كل اختبار HAL يستخدم نموذج VtsHalHidlTargetTestEnvBase لتسجيل حِزم HAL التي يتم الوصول إليها في الاختبار. يمكن لإطار عمل اختبار VTS استخراج وحدات HAL المسجّلة عند إجراء المعالجة المسبقة للاختبار.
بالنسبة إلى اختبارات التوافق، يمكنك أيضًا الاطّلاع على
/system/etc/vintf/manifest.xml. إذا تم تحديد HAL هنا، يجب أن يختبرها VTS. (بالنسبة إلى خدمات HAL التي يوفّرها النظام (مثل graphics.composer/vr)، يتم تعريف HAL في /system/manifest.xml).