Android 9 Vendor Test Suite (VTS) mendukung metode runtime untuk menggunakan konfigurasi perangkat guna mengidentifikasi pengujian VTS yang harus dilewati untuk target perangkat tersebut.
Fleksibilitas pengujian VTS
Mulai Android 8.0, pengujian VTS diperlukan untuk semua perangkat yang diluncurkan dengan Android 8.0 dan yang lebih tinggi. Namun, tidak semua pengujian VTS berlaku untuk semua target perangkat. Contoh:
- Jika perangkat tertentu tidak mendukung HAL pengujian (misalnya, IR), VTS tidak perlu menjalankan pengujian untuk pengujian HAL tersebut terhadap target perangkat tersebut.
- Jika beberapa perangkat memiliki SoC dan image vendor yang sama, tetapi memiliki fungsi hardware yang berbeda, VTS harus menentukan apakah pengujian harus dijalankan atau dilewati untuk target perangkat tertentu.
Jenis pengujian VTS
VTS mencakup jenis pengujian berikut:
- Pengujian Kepatuhan memastikan kompatibilitas antara framework dan partisi vendor. Pengujian ini harus dijalankan (dan lulus) di perangkat yang diluncurkan dengan Android 8.0 atau yang lebih tinggi.
- Pengujian Ketidakpatuhan membantu vendor meningkatkan kualitas produk (performa/fuzzing, dll.). Pengujian ini bersifat opsional untuk vendor.
Apakah pengujian merupakan pengujian kepatuhan atau bukan bergantung pada paket yang dimilikinya. Pengujian yang berjalan dengan paket VTS dianggap sebagai pengujian kepatuhan.
Menentukan HAL yang didukung
VTS dapat menggunakan file berikut untuk menentukan apakah target perangkat mendukung HAL tertentu:
/system/compatibility_matrix.xml
. Mengklaim instance HAL yang diperlukan oleh framework. Contoh:<hal format="hidl" optional="true"> <name>android.hardware.vibrator</name> <version>1.0-1</version> <interface> <name>IVibrator</name> <instance>default</instance> </interface> </hal>
- Atribut
optional
menunjukkan apakah HAL benar-benar diperlukan oleh framework. - File ini dapat berisi beberapa entri untuk HAL yang sama (dengan nama yang sama), tetapi dengan versi dan antarmuka yang berbeda.
- File tersebut mungkin berisi beberapa konfigurasi
version
untuk entri yang sama, yang menunjukkan bahwa framework dapat berfungsi dengan versi yang berbeda. version1.0-1
berarti framework dapat berfungsi dengan versi terendah 1.0, dan tidak memerlukan versi yang lebih tinggi dari 1.1.
- Atribut
- Perangkat
manifest.xml
. Mengklaim instance HAL yang disediakan oleh vendor. Contoh:<hal format="hidl"> <name>android.hardware.vibrator</name> <transport>hwbinder</transport> <version>1.2</version> <interface> <name>IVibrator</name> <instance>default</instance> </interface> </hal>
- File dapat berisi beberapa entri untuk HAL yang sama (dengan nama yang sama) tetapi dengan versi dan antarmuka yang berbeda.
- Jika file hanya berisi satu konfigurasi
version
untuk entri,version1.2
berarti vendor mendukung semua versi dari 1.0~1.2.
- lshal. Alat di perangkat yang menampilkan info runtime tentang
layanan HAL yang terdaftar dengan
hwservicemanager
. Contoh:android.hardware.vibrator@1.0::IVibrator/default
lshal
juga menampilkan semua HAL yang memiliki implementasi passthrough (yaitu memiliki file-impl.so
yang sesuai di perangkat). Contoh:android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/) android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
Pengujian kepatuhan
Untuk pengujian kepatuhan, VTS mengandalkan manifes vendor untuk menentukan (dan menguji) semua instance HAL yang disediakan oleh perangkat. Alur keputusan:
Pengujian ketidakpatuhan
Untuk pengujian ketidakpatuhan, VTS mengandalkan manifes vendor dan
output lshal
untuk menentukan (dan menguji) HAL eksperimental yang tidak
diklaim dalam file manifest.xml
. Alur keputusan:
Menemukan manifes vendor
VTS memeriksa file manifest.xml
vendor di tempat berikut
dengan urutan berikut:
- Manifes
/vendor/etc/vintf/manifest.xml
+ ODM (Jika HAL yang sama ditentukan di kedua tempat, manifes ODM akan menggantikan manifes di/vendor/etc/vintf/manifest.xml
) /vendor/etc/vintf/manifest.xml
- File
manifest.xml
ODM, dimuat dari file berikut dalam urutan berikut:/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
Pemeriksa kemampuan pengujian VTS
vts_testibility_checker
adalah biner yang dipaketkan dengan VTS dan digunakan oleh
framework pengujian VTS saat runtime untuk menentukan apakah pengujian HAL tertentu
dapat diuji atau tidak. Hal ini didasarkan pada
libvintf
untuk memuat dan mengurai file manifes vendor dan menerapkan alur keputusan
yang dijelaskan di bagian sebelumnya.
Untuk menggunakan vts_testability_check
:
- Untuk pengujian kepatuhan:
vts_testability_check -c -b <bitness> <hal@version>
- Untuk pengujian ketidakpatuhan:
vts_testability_check -b <bitness> <hal@version>
Output vts_testability_check
menggunakan format JSON berikut:
{testable: <True/False> Instances: <list of instance names of HAL service>}
Menentukan HAL yang diakses
Untuk menentukan HAL mana yang diakses oleh pengujian VTS, pastikan setiap pengujian HAL
menggunakan
template
VtsHalHidlTargetTestEnvBase
untuk mendaftarkan HAL yang diakses dalam pengujian. Framework pengujian
VTS kemudian dapat mengekstrak HAL terdaftar saat memproses pra-pengujian.
Untuk pengujian kepatuhan, Anda juga dapat memeriksa /system/etc/vintf/manifest.xml
. Jika HAL ditentukan di sini, VTS
harus mengujinya. (Untuk layanan HAL yang disediakan oleh sistem (misalnya
graphics.composer/vr
), HAL dideklarasikan di
/system/manifest.xml
.)