Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Pemeriksaan Testabilitas HAL

Android 9 Vendor Test Suite (VTS) mendukung metode waktu proses untuk menggunakan konfigurasi perangkat guna mengidentifikasi pengujian VTS mana yang harus dilewati untuk target perangkat tersebut.

Fleksibilitas uji VTS

Mulai Android 8.0, pengujian VTS diperlukan untuk semua perangkat yang diluncurkan dengan Android 8.0 dan lebih tinggi. Namun, tidak semua pengujian VTS berlaku untuk semua target perangkat. Sebagai contoh:

  • Jika perangkat tertentu tidak mendukung pengujian HAL (misalnya IR), VTS tidak perlu menjalankan pengujian untuk pengujian HAL tersebut terhadap target perangkat tersebut.
  • Jika beberapa perangkat berbagi SoC dan gambar vendor yang sama tetapi memiliki fungsionalitas perangkat keras yang berbeda, VTS harus menentukan apakah pengujian harus dijalankan atau dilewati untuk target perangkat tertentu.

Jenis tes VTS

VTS mencakup jenis tes berikut:

  • Tes Kepatuhan memastikan kompatibilitas antara kerangka dan penjual partisi. Pengujian ini harus dijalankan (dan lulus) pada perangkat yang diluncurkan dengan Android 8.0 atau lebih tinggi.
  • Ketidakpatuhan tes bantuan vendor untuk meningkatkan kualitas produk (kinerja / fuzzing dll). Tes ini opsional untuk vendor.

Apakah sebuah tes merupakan tes kepatuhan atau tidak tergantung pada rencana mana tes tersebut berada. Tes yang dijalankan dengan VTS rencana dianggap tes kepatuhan.

Menentukan HAL yang didukung

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

  • /system/compatibility_matrix.xml . Mengklaim instans 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>
    
    • The optional atribut menunjukkan jika HAL secara ketat diperlukan oleh kerangka kerja.
    • File mungkin berisi beberapa entri untuk HAL yang sama (dengan nama yang sama) tetapi dengan versi dan antarmuka yang berbeda.
    • File mungkin berisi beberapa version konfigurasi untuk entri yang sama, menunjukkan kerangka dapat bekerja dengan versi yang berbeda.
    • version1.0-1 berarti kerangka dapat bekerja dengan terendah versi 1.0, dan tidak memerlukan versi yang lebih tinggi dari 1,1.
  • Perangkat manifest.xml . Mengklaim instans 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 mungkin berisi beberapa entri untuk HAL yang sama (dengan nama yang sama) tetapi dengan versi dan antarmuka yang berbeda.
    • Jika file hanya berisi satu version konfigurasi untuk entri, version1.2 berarti vendor mendukung semua versi dari 1,0 ~ 1,2.
  • lshal. Sebuah alat pada perangkat yang menunjukkan runtime info tentang layanan HAL terdaftar dengan hwservicemanager . Contoh:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal juga menunjukkan semua HAL bahwa dengan implementasi passthrough (yaitu memiliki yang sesuai -impl.so file di perangkat). Contoh:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
    

Tes kepatuhan

Untuk pengujian kepatuhan, VTS bergantung pada manifes vendor untuk menentukan (dan menguji) semua instans HAL yang disediakan oleh perangkat. Alur keputusan:

Testability check for compliance

Gambar 1. Testability cek untuk tes kepatuhan VTS

Tes ketidakpatuhan

Untuk tes non-kepatuhan, VTS bergantung pada vendor manifest dan lshal output untuk menentukan (dan test) yang HAL eksperimental tidak diklaim dalam manifest.xml berkas. Alur keputusan:

Testability check for non-compliance

Gambar 2. Testability cek untuk VTS tes non-kepatuhan

Menemukan manifes vendor

Cek VTS untuk vendor manifest.xml berkas di tempat berikut dalam urutan sebagai berikut:

  1. /vendor/etc/vintf/manifest.xml + ODM manifest (Jika HAL yang sama didefinisikan di kedua tempat, ODM manifest menimpa satu di /vendor/etc/vintf/manifest.xml )
  2. /vendor/etc/vintf/manifest.xml
  3. ODM manifest.xml berkas, diambil dari file-file berikut dalam urutan sebagai 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 testabilitas VTS

The vts_testibility_checker adalah biner dikemas dengan VTS dan digunakan oleh kerangka uji VTS saat runtime untuk menentukan apakah tes HAL diberikan diuji atau tidak. Hal ini didasarkan pada libvintf beban dan mengurai vendor file manifest dan menerapkan aliran keputusan dijelaskan di bagian sebelumnya.

Untuk menggunakan vts_testability_check :

  • Untuk uji kepatuhan:
    vts_testability_check -c -b <bitness>  <hal@version>
    
  • Untuk non-kepatuhan tes:
    vts_testability_check -b <bitness>  <hal@version>
    

Output dari 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 diakses oleh tes VTS, memastikan bahwa setiap tes HAL menggunakan VtsHalHidlTargetTestEnvBase template untuk mendaftarkan HAL (s) diakses dalam ujian. Kerangka pengujian VTS kemudian dapat mengekstrak HAL yang terdaftar saat melakukan pra-pemrosesan pengujian.

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