Pemeriksaan kemampuan pengujian HAL

Android 9 Vendor Test Suite (VTS) mendukung sebuah metode runtime untuk menggunakan konfigurasi perangkat guna mengidentifikasi pengujian VTS harus dilewati untuk target perangkat tersebut.

Fleksibilitas pengujian VTS

Mulai Android 8.0, tes VTS diperlukan untuk semua perangkat yang diluncurkan dengan Android 8.0 dan yang lebih baru. Namun, tidak semua tes VTS berlaku untuk semua perangkat target. Contoh:

  • Jika perangkat tertentu tidak mendukung HAL pengujian (misalnya IR), VTS akan tidak perlu menjalankan pengujian untuk pengujian HAL terhadap target perangkat itu.
  • Jika beberapa perangkat memiliki SoC dan {i>image<i} vendor yang sama tetapi memiliki fungsionalitas perangkat keras yang berbeda, VTS harus menentukan apakah suatu tes harus dijalankan atau dilewati untuk target perangkat tertentu.

Jenis pengujian VTS

VTS mencakup jenis pengujian berikut:

  • Pengujian kepatuhan memastikan kompatibilitas antar-framework dan partisi vendor. Pengujian ini harus dijalankan (dan lulus) perangkat yang diluncurkan dengan Android 8.0 atau yang lebih tinggi.
  • Pengujian ketidakpatuhan membantu vendor meningkatkan kualitas produk kualitas (performa/fuzzing, dll.). Pengujian ini bersifat opsional untuk vendor.

Apakah pengujian merupakan uji kepatuhan atau bukan bergantung pada rencana yang mencakupnya tempat mesin terhubung. Pengujian yang dijalankan dengan Paket VTS dianggap sebagai uji kepatuhan.

Menentukan HAL yang didukung

VTS dapat menggunakan file berikut untuk menentukan apakah target perangkat mendukung HAL spesifik:

  • /system/compatibility_matrix.xml. Mengklaim instance HAL yang diperlukan oleh kerangka kerja. 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 yang diperlukan oleh kerangka kerja.
    • File dapat berisi beberapa entri untuk HAL yang sama (dengan nama yang sama) tetapi dengan versi dan antarmuka yang berbeda.
    • File ini dapat berisi beberapa konfigurasi version untuk entri yang sama, yang menunjukkan bahwa kerangka kerja dapat bekerja dengan versi yang berbeda.
    • version1.0-1 berarti framework dapat berfungsi dengan versi 1.0, dan tidak memerlukan versi yang lebih tinggi dari 1.1.
  • 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 pada perangkat yang menampilkan info runtime tentang layanan HAL yang terdaftar di hwservicemanager. Contoh:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal juga menunjukkan semua HAL dengan passthrough implementasi (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 uji kepatuhan, VTS mengandalkan manifes vendor untuk menentukan (dan {i>test<i}) semua {i>instance<i} HAL yang disediakan oleh perangkat. Alur keputusan:

Pemeriksaan kepatuhan pengujian

Gambar 1. Pemeriksaan kemampuan pengujian untuk pengujian kepatuhan VTS

Pengujian ketidakpatuhan

Untuk tes ketidakpatuhan, VTS bergantung pada manifes vendor dan Output lshal untuk menentukan (dan menguji) HAL eksperimental yang tidak diklaim dalam file manifest.xml. Alur keputusan:

Pemeriksaan ketidakpatuhan untuk pengujian

Gambar 2. Pemeriksaan kemampuan pengujian untuk mengetahui ketidakpatuhan VTS tes

Menemukan manifes vendor

VTS memeriksa file manifest.xml vendor di bawah ini tempat dengan urutan berikut:

  1. /vendor/etc/vintf/manifest.xml + manifes ODM (Jika HAL yang sama ditentukan di kedua tempat, manifes ODM akan menggantikan manifes di /vendor/etc/vintf/manifest.xml)
  2. /vendor/etc/vintf/manifest.xml
  3. File manifest.xml ODM, dimuat dari file berikut dalam urutan berikut:
    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

Pemeriksa kemampuan pengujian VTS

Tujuan vts_testibility_checker adalah biner yang dikemas dengan VTS dan digunakan oleh Kerangka kerja uji VTS saat runtime untuk menentukan apakah tes HAL yang diberikan dapat diuji atau tidak. Hal ini didasarkan pada libvintf untuk memuat dan mengurai file manifes vendor dan mengimplementasikan 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 json berikut format:

{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 bahwa setiap uji HAL menggunakan VtsHalHidlTargetTestEnvBase untuk mendaftarkan HAL yang diakses dalam pengujian. Pengujian VTS kemudian bisa mengekstrak HAL yang terdaftar saat melakukan pra-pemrosesan pengujian.

Untuk uji kepatuhan, Anda juga dapat memeriksa /system/etc/vintf/manifest.xml. Jika HAL didefinisikan di sini, VTS Anda harus mengujinya. (Untuk layanan HAL yang disediakan oleh sistem (misalnya, graphics.composer/vr), HAL dideklarasikan di /system/manifest.xml.)