ชุดทดสอบของผู้ให้บริการ (VTS) ของ Android 9 รองรับเมธอดรันไทม์สำหรับใช้การกำหนดค่าอุปกรณ์เพื่อระบุว่าควรข้ามการทดสอบ VTS ใดสำหรับเป้าหมายอุปกรณ์นั้น
ความยืดหยุ่นในการทดสอบ VTS
ตั้งแต่ Android 8.0 เป็นต้นไป อุปกรณ์ทั้งหมดที่เปิดตัวพร้อมกับ Android 8.0 ขึ้นไปจะต้องผ่านการทดสอบ VTS อย่างไรก็ตาม การทดสอบ 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
- 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 ทั้งหมดที่อุปกรณ์มี ขั้นตอนการตัดสินใจ
การทดสอบการไม่ปฏิบัติตามข้อกำหนด
สำหรับการทดสอบการไม่ปฏิบัติตามข้อกำหนด VTS จะอิงตามไฟล์ Manifest ของผู้ให้บริการและเอาต์พุต lshal
เพื่อพิจารณา (และทดสอบ) HAL เวอร์ชันทดลองที่ไม่ได้อ้างสิทธิ์ในไฟล์ manifest.xml
ขั้นตอนการตัดสินใจ
ค้นหาไฟล์ Manifest ของผู้ให้บริการ
VTS จะตรวจสอบไฟล์ manifest.xml
ของผู้ให้บริการในตำแหน่งต่อไปนี้ตามลำดับ
/vendor/etc/vintf/manifest.xml
+ ไฟล์ Manifest ของ ODM (หากมีการกำหนด HAL เดียวกัน ทั้ง 2 ที่ ไฟล์ Manifest ของ ODM จะลบล้างไฟล์ใน/vendor/etc/vintf/manifest.xml
)/vendor/etc/vintf/manifest.xml
- ไฟล์ ODM
manifest.xml
ที่โหลดจากไฟล์ต่อไปนี้ตามลำดับต่อไปนี้/odm/etc/vintf/manifest_$(ro.boot.product.hardware.sku).xml
/odm/etc/vintf/manifest.xml
/odm/etc/manifest_$(ro.boot.product.hardware.sku).xml
/odm/etc/manifest.xml
/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 นั้น (สำหรับบริการ HAL ที่ระบบจัดหาให้ (เช่น
graphics.composer/vr
) จะมีการประกาศ HAL ใน
/system/manifest.xml
)