การตรวจสอบความสามารถในการทดสอบ HAL

ชุดทดสอบสำหรับผู้ให้บริการ Android 9 (VTS) รองรับ วิธีรันไทม์สำหรับการใช้การกำหนดค่าอุปกรณ์เพื่อระบุการทดสอบ VTS ควรข้ามสำหรับอุปกรณ์เป้าหมายนั้น

ความยืดหยุ่นในการทดสอบ VTS

สำหรับ Android 8.0 จำเป็นต้องมีการทดสอบ VTS สำหรับอุปกรณ์ทั้งหมดที่เปิดตัวด้วย Android 8.0 ขึ้นไป อย่างไรก็ตาม การทดสอบ VTS บางรายการอาจใช้ไม่ได้กับอุปกรณ์บางเครื่อง เป้าหมาย เช่น

  • หากอุปกรณ์บางเครื่องไม่รองรับการทดสอบ HAL (เช่น IR) VTS จะสนับสนุน ไม่ต้องทำการทดสอบ HAL เทียบกับอุปกรณ์เป้าหมาย
  • หากมีอุปกรณ์หลายเครื่องแชร์ SoC และรูปภาพผู้ให้บริการเดียวกัน แต่มี ฟังก์ชันฮาร์ดแวร์ที่แตกต่างกัน VTS ต้องกำหนดว่าการทดสอบ ควรเรียกใช้หรือข้ามสำหรับอุปกรณ์เป้าหมายที่ระบุ

ประเภทการทดสอบ VTS

VTS ประกอบด้วยประเภทการทดสอบต่อไปนี้

  • การทดสอบการปฏิบัติตามข้อกำหนดช่วยตรวจสอบว่าเฟรมเวิร์กต่างๆ สามารถใช้งานร่วมกันได้ และพาร์ติชันผู้ให้บริการ การทดสอบเหล่านี้ต้องทำ (และผ่าน) อุปกรณ์ที่มาพร้อม Android 8.0 ขึ้นไป
  • การทดสอบการไม่ปฏิบัติตามข้อกำหนดช่วยให้ผู้ให้บริการปรับปรุงผลิตภัณฑ์ได้ คุณภาพ (ประสิทธิภาพ/ประสิทธิภาพที่เพิ่มขึ้น เป็นต้น) การทดสอบเหล่านี้เป็นตัวเลือกสำหรับผู้ให้บริการ

การทดสอบจะเป็นการทดสอบการปฏิบัติตามข้อกำหนดหรือไม่ ขึ้นอยู่กับว่าเป็นแผนใด เป็น การทดสอบที่ใช้กับ แผน 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 เท่านั้นหรือไม่ ตามที่เฟรมเวิร์กกำหนดไว้
    • ไฟล์อาจมีหลายรายการสำหรับ 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 ทั้งหมดที่มีการส่งผ่าน การติดตั้งใช้งาน (เช่น เปิดใช้ไฟล์ -impl.so ที่เกี่ยวข้อง) อุปกรณ์) ตัวอย่าง
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
    

การทดสอบการปฏิบัติตามข้อกำหนด

สำหรับการทดสอบการปฏิบัติตามข้อกำหนด VTS จะใช้ไฟล์ Manifest ของผู้ให้บริการในการระบุ (และ ) อินสแตนซ์ HAL ทั้งหมดที่อุปกรณ์มีให้ ขั้นตอนการตัดสินใจ:

การตรวจสอบความสามารถในการทดสอบเพื่อดูการปฏิบัติตามข้อกำหนด

รูปที่ 1 การตรวจสอบความสามารถในการทดสอบสำหรับการทดสอบการปฏิบัติตามข้อกำหนดของ VTS

การทดสอบการไม่ปฏิบัติตามข้อกำหนด

สำหรับการทดสอบที่ไม่เป็นไปตามข้อกำหนด VTS จะใช้ไฟล์ Manifest ของผู้ให้บริการและ lshal เอาต์พุตเพื่อระบุ (และทดสอบ) HAL การทดลองที่ไม่มี ที่มีการอ้างสิทธิ์ในไฟล์ manifest.xml ขั้นตอนการตัดสินใจ:

การตรวจสอบความสามารถในการทดสอบเพื่อดูการไม่ปฏิบัติตามข้อกำหนด

รูปที่ 2 การตรวจสอบความสามารถในการทดสอบเพื่อดูการไม่ปฏิบัติตามข้อกำหนดของ VTS การทดสอบ

ค้นหาไฟล์ Manifest ของผู้ให้บริการ

VTS จะตรวจสอบไฟล์ manifest.xml ของผู้ให้บริการใน ในลำดับต่อไปนี้

  1. /vendor/etc/vintf/manifest.xml + ไฟล์ Manifest ODM (หากเป็น HAL เดียวกัน มีการระบุไว้ในทั้ง 2 ตำแหน่ง ไฟล์ Manifest 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 เพื่อโหลดและแยกวิเคราะห์ไฟล์ Manifest ของผู้ให้บริการและนำขั้นตอนการตัดสินใจไปใช้ ที่อธิบายไว้ในส่วนก่อนหน้า

วิธีใช้ "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 ที่มีการเข้าถึง

หากต้องการตรวจสอบว่าการทดสอบ VTS ใดบ้างที่จะเข้าถึง HAL ได้ ให้ตรวจสอบว่าการทดสอบ HAL แต่ละครั้ง ใช้เมธอด VtsHalHidlTargetTestEnvBase เทมเพลตเพื่อลงทะเบียน HAL ที่เข้าถึงในการทดสอบ การทดสอบ VTS จากนั้นจะแยก HAL ที่ลงทะเบียนไว้เมื่อประมวลผลการทดสอบล่วงหน้าได้

สำหรับการทดสอบการปฏิบัติตามข้อกำหนด คุณยังตรวจดู /system/etc/vintf/manifest.xml หากมีการกำหนด HAL ที่นี่ VTS ควรทดสอบ (สำหรับบริการ HAL ที่ได้รับจากระบบ (เช่น graphics.composer/vr) จะมีการประกาศ HAL ใน /system/manifest.xml)