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