ה-Android 9 Vendor Test Suite (VTS) תומכת בשיטת זמן ריצה לשימוש בתצורת המכשיר כדי לזהות על אילו בדיקות VTS יש לדלג עבור יעד המכשיר הזה.
גמישות בדיקת VTS
החל מ-Android 8.0, בדיקות VTS נדרשות עבור כל המכשירים שהושקו עם אנדרואיד 8.0 ואילך. עם זאת, לא כל בדיקות ה-VTS חלות על כל יעדי המכשירים. לדוגמה:
- אם התקן ספציפי אינו תומך ב-HAL לבדיקה (למשל IR), VTS אינו צריך להריץ בדיקות עבור אותה בדיקת HAL מול יעד התקן זה.
- אם מספר מכשירים חולקים את אותה תמונת SoC ותמונת ספק אך יש להם פונקציות חומרה שונות, VTS חייב לקבוע אם יש להריץ בדיקה או לדלג עליה עבור יעד מכשיר ספציפי.
סוגי בדיקות VTS
VTS כולל את סוגי הבדיקות הבאים:
- מבחני תאימות מבטיחים תאימות בין מחיצות המסגרת והספקים. בדיקות אלו נדרשות להפעיל (ולעבור) במכשירים המופעלים עם אנדרואיד 8.0 ומעלה.
- מבחני אי התאמה עוזרים לספקים לשפר את איכות המוצר (ביצועים/ערפול וכו'). בדיקות אלו הן אופציונליות עבור ספקים.
אם בדיקה היא בדיקת התאמה או לא תלוי לאיזו תוכנית היא שייכת. בדיקות הפועלות עם תוכנית VTS נחשבות למבחני תאימות.
קבע HALs נתמכים
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.
- התכונה
- Device
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.
- לשל . כלי במכשיר המציג מידע על זמן ריצה על שירותי HAL הרשומים ב-
hwservicemanager
. דוגמה:android.hardware.vibrator@1.0::IVibrator/default
lshal
מראה גם את כל ה-HALs עם יישומי מעבר (כלומר עם קובץ-impl.so
המתאים במכשיר). דוגמה:android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/) android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
מבחני התאמה
עבור מבחני תאימות, VTS מסתמך על מניפסט הספק כדי לקבוע (ולבדוק) את כל מקרי ה-HAL שסופקו על ידי המכשיר. זרימת החלטות:
מבחני אי התאמה
עבור מבחני אי התאמה, VTS מסתמך על המניפסט של הספק ועל פלטי lshal
כדי לקבוע (ולבדוק) את ה-HALs הניסיוניים שלא נתבעו בקובץ manifest.xml
. זרימת החלטות:
אתר את המניפסט של הספק
VTS בודק את קובץ הספק manifest.xml
במקומות הבאים בסדר הבא:
-
/vendor/etc/vintf/manifest.xml
+ מניפסט ODM (אם אותו HAL מוגדר בשני המקומות, מניפסט ODM עוקף את זה ב-/vendor/etc/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>}
קבע HALs שניגשו אליהם
כדי לקבוע לאילו HAL גישה בדיקות VTS, ודא שכל בדיקת HAL משתמשת בתבנית VtsHalHidlTargetTestEnvBase
כדי לרשום את ה-HAL/ים שאליהם ניגש בבדיקה. מסגרת בדיקת VTS יכולה לאחר מכן לחלץ את ה-HALs הרשומים בעת עיבוד מוקדם של הבדיקה.
לבדיקות תאימות, אתה יכול גם לבדוק את /system/etc/vintf/manifest.xml
. אם מוגדר כאן HAL, על VTS לבדוק אותו. (עבור שירותי HAL המסופקים על ידי המערכת (למשל graphics.composer/vr
), ה-HALs מוצהרים ב- /system/manifest.xml
.)