ชุดทดสอบสำหรับผู้ให้บริการ 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 ทั้งหมดที่อุปกรณ์มีให้ ขั้นตอนการตัดสินใจ:
การทดสอบการไม่ปฏิบัติตามข้อกำหนด
สำหรับการทดสอบที่ไม่เป็นไปตามข้อกำหนด 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 ที่ได้รับจากระบบ (เช่น
graphics.composer/vr
) จะมีการประกาศ HAL ใน
/system/manifest.xml
)