בדיקת בדיקת HAL

ה-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 שסופקו על ידי המכשיר. זרימת החלטות:

Testability check for compliance

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

מבחני אי התאמה

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

Testability check for noncompliance

איור 2. בדיקת יכולת בדיקה למבחני אי התאמה של VTS

אתר את המניפסט של הספק

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

  1. /vendor/etc/vintf/manifest.xml + מניפסט ODM (אם אותו HAL מוגדר בשני המקומות, מניפסט ODM עוקף את זה ב-/vendor/etc /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 ), ה-HALs מוצהרים ב- /system/manifest.xml .)