การตรวจสอบความสามารถในการทดสอบ 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 เดียวกัน (ที่มีชื่อเดียวกัน) แต่มีเวอร์ชันและอินเทอร์เฟซต่างกัน
    • ไฟล์อาจมีการกำหนดค่าหลาย 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
  • ลชาล . เครื่องมือบนอุปกรณ์ที่แสดงข้อมูลรันไทม์เกี่ยวกับบริการ 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 การตรวจสอบความสามารถในการทดสอบสำหรับการทดสอบการปฏิบัติตาม VTS

การทดสอบการไม่ปฏิบัติตาม

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

Testability check for noncompliance

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

ค้นหารายการผู้ขาย

VTS ตรวจสอบไฟล์ vendor 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>}

กำหนด HAL ที่เข้าถึงได้

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

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