בדיקת בדיקת 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 אחת עבור ערך, גרסה 1.2 פירושה 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 non-compliance

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

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

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

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