בדיקת בדיקת HAL

Android 9 Vendor Test Suite (VTS) תומך בשיטת זמן ריצה לשימוש בתצורת המכשיר כדי לזהות אילו בדיקות VTS יש לדלג על אותו מכשיר.

גמישות מבחני VTS

החל מאנדרואיד 8.0, נדרשות בדיקות VTS לכל המכשירים שהושקו עם אנדרואיד 8.0 ומעלה. עם זאת, לא כל בדיקות VTS חלות על כל יעדי המכשיר. לדוגמה:

  • אם התקן ספציפי אינו תומך בבדיקת HAL (למשל IR), VTS לא צריך להריץ בדיקות עבור אותה בדיקת HAL כנגד יעד המכשיר הזה.
  • אם מספר מכשירים חולקים את אותה תמונת SoC וספק אך יש להם פונקציות חומרה שונות, VTS חייבת לקבוע אם יש להריץ בדיקה או לדלג על יעד מכשיר ספציפי.

סוגי מבחני VTS

VTS כולל את סוגי הבדיקות הבאים:

  • בדיקות תאימות להבטיח תאימות בין מחיצות מסגרת ספק. בדיקות אלה נדרשות להפעלה (ולעבור) במכשירים המפעילים עם אנדרואיד 8.0 ומעלה.
  • אי עמידה בדיקות ספקי עזרה כדי לשפר את איכות מוצר (ביצועים / fuzzing וכו '). בדיקות אלה הן אופציונליות עבור ספקים.

אם בדיקה היא בדיקת תאימות או לא תלויה באיזו תוכנית היא שייכת. בדיקות שפועלות עם תוכנית 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.
  • התקן 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. כלי במכשיר כי מופעים Runtime מידע על שירותי HAL רשום hwservicemanager . דוגמה:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal גם מראה את כל שכבות HAL כי עם הטמעות התמסורת (כלומר בעל המקביל -impl.so קובץ במכשיר). דוגמה:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
    

בדיקות תאימות

לבדיקות תאימות, VTS מסתמך על מניפסט הספק כדי לקבוע (ולבדוק) את כל מופעי ה- HAL המסופקים על ידי המכשיר. זרימת החלטות:

Testability check for compliance

איור 1. Testability המחאה על בדיקות תאימות VTS

בדיקות אי התאמה

עבור בדיקות אי קיום, VTS מסתמך על הגלוי הספק lshal פלטי לקבוע (מבחן) את שכבות HAL ניסיוני לא נתבע manifest.xml קובץ. זרימת החלטות:

Testability check for non-compliance

איור 2. Testability הצ'ק לבדיקות אי קיום VTS

איתור מניפסט הספק

בדיקות VTS עבור הספק manifest.xml הקובץ במקומות הבאים לפי הסדר הבא:

  1. /vendor/etc/vintf/manifest.xml + ODM מניפסט (אם אותו HAL מוגדר בשני המקומות, ODM מניפסט עוקף לזו /vendor/etc/vintf/manifest.xml )
  2. /vendor/etc/vintf/manifest.xml
  3. ODM manifest.xml קובץ, טעון מן הקבצים הבאים בסדר הבא:
    1. /odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
    2. /odm/etc/vintf/manifest.xml
    3. /odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
    4. /odm/etc/manifest.xml
    5. /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 ), את שכבות HAL מוצהרים /system/manifest.xml .)