חבילת הבדיקות של ספקים (VTS) ב-Android 9 תומכת בשיטת זמן ריצה לשימוש בהגדרת המכשיר כדי לזהות אילו בדיקות VTS צריך לדלג עליהן עבור יעד המכשיר הזה.
גמישות בבדיקות VTS
החל מ-Android 8.0, בדיקות VTS נדרשות לכל המכשירים שהושקו עם Android 8.0 ומעלה. עם זאת, לא כל הבדיקות של VTS רלוונטיות לכל יעדי המכשירים. לדוגמה:
- אם מכשיר ספציפי לא תומך ב-HAL לבדיקה (למשל IR), VTS לא צריך להריץ בדיקות עבור בדיקת ה-HAL הזו מול יעד המכשיר הזה.
- אם כמה מכשירים חולקים את אותו SoC ותמונת ספק, אבל יש להם פונקציות חומרה שונות, VTS צריך לקבוע אם להריץ בדיקה או לדלג עליה עבור יעד מכשיר ספציפי.
סוגי בדיקות VTS
VTS כולל את סוגי הבדיקות הבאים:
- בדיקות תאימות מבטיחות תאימות בין מחיצות של מסגרות וספקים. הבדיקות האלה נדרשות להפעלה (ולמעבר) במכשירים עם Android 8.0 ומעלה.
- בדיקות אי-תאימות עוזרות לספקים לשפר את איכות המוצר (ביצועים, בדיקות fuzzing וכו'). הבדיקות האלה הן אופציונליות לספקים.
האם הבדיקה היא בדיקת תאימות או לא, תלוי לתוכנית איזו היא שייכת. בדיקות שמופעלות עם תוכנית VTS נחשבות לבדיקות תאימות.
קביעת רכיבי HAL נתמכים
מערכת 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
מציג גם את כל ה-HAL עם יישומי 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
מבוסס על פורמט ה-JSON הבא:
{testable: <True/False> Instances: <list of instance names of HAL service>}
קביעת מודולי HAL שאליהם יש גישה
כדי לקבוע לאילו HAL יש גישה לבדיקות VTS, צריך לוודא שכל בדיקת HAL
משתמשת בתבנית VtsHalHidlTargetTestEnvBase
כדי לרשום את ה-HAL שאליו יש גישה בבדיקה. לאחר מכן, מסגרת הבדיקה של VTS יכולה לחלץ את ה-HAL הרשומים במהלך העיבוד המקדים של הבדיקה.
בבדיקות תאימות, אפשר גם לבדוק את /system/etc/vintf/manifest.xml
. אם מוגדר כאן HAL, VTS צריך לבדוק אותו. (בשירותי HAL שמסופקים על ידי המערכת (למשל, graphics.composer/vr
), קובצי ה-HAL מוצהרים ב-/system/manifest.xml
).