O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Verificação de testabilidade HAL

O Android 9 Vendor Test Suite (VTS) oferece suporte a um método de tempo de execução para usar a configuração do dispositivo para identificar quais testes VTS devem ser ignorados para esse destino de dispositivo.

Flexibilidade de teste VTS

A partir do Android 8.0, os testes VTS são necessários para todos os dispositivos lançados com Android 8.0 e superior. No entanto, nem todos os testes VTS se aplicam a todos os destinos de dispositivo. Por exemplo:

  • Se um dispositivo específico não oferece suporte a um HAL de teste (por exemplo, IR), o VTS não precisa executar testes para esse teste HAL em relação ao destino do dispositivo.
  • Se vários dispositivos compartilham o mesmo SoC e imagem do fornecedor, mas têm funcionalidades de hardware diferentes, o VTS deve determinar se um teste deve ser executado ou ignorado para um destino de dispositivo específico.

Tipos de teste VTS

VTS inclui os seguintes tipos de teste:

  • Testes de conformidade garantir a compatibilidade entre as partições de enquadramento e de fornecedores. Esses testes devem ser executados (e aprovados) em dispositivos com Android 8.0 ou superior.
  • O não cumprimento testa fornecedores ajudar a melhorar a qualidade do produto (desempenho / fuzzing etc.). Esses testes são opcionais para fornecedores.

Se um teste é um teste de conformidade ou não, depende de qual plano ele pertence. Os testes que são executados com plano de VTS são considerados testes de conformidade.

Determinando HALs com suporte

O VTS pode usar os seguintes arquivos para determinar se o destino do dispositivo suporta um HAL específico:

  • /system/compatibility_matrix.xml . Reivindica as instâncias HAL exigidas pela estrutura. Exemplo:
    <hal format="hidl" optional="true">
        <name>android.hardware.vibrator</name>
        <version>1.0-1</version>
        <interface>
           <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • O optional atributo indica se o HAL é estritamente exigido pelo quadro.
    • O arquivo pode conter várias entradas para o mesmo HAL (com o mesmo nome), mas com versões e interfaces diferentes.
    • O arquivo pode conter múltiplas version configurações para a mesma entrada, indicando que o quadro pode trabalhar com versões diferentes.
    • version1.0-1 significa que o quadro pode trabalhar com o menor versão 1.0, e não requer uma versão maior do que 1,1.
  • Dispositivo manifest.xml . Reivindica as instâncias HAL fornecidas pelo fornecedor. Exemplo:
    <hal format="hidl">
        <name>android.hardware.vibrator</name>
        <transport>hwbinder</transport>
        <version>1.2</version>
        <interface>
            <name>IVibrator</name>
           <instance>default</instance>
        </interface>
    </hal>
    
    • O arquivo pode conter várias entradas para o mesmo HAL (com o mesmo nome), mas com versões e interfaces diferentes.
    • Se o arquivo contém apenas uma única version de configuração para uma entrada, version1.2 significa o fornecedor suporta todas as versões de 1.0 ~ 1.2.
  • lshal. Uma ferramenta on dispositivo que mostra tempo de execução informações sobre os serviços de HAL registrados no hwservicemanager . Exemplo:
    android.hardware.vibrator@1.0::IVibrator/default
    

    lshal também mostra que todos os HAL com implementações de passagem (isto é, tendo o correspondente -impl.so arquivo no dispositivo). Exemplo:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
    

Testes de conformidade

Para testes de conformidade, o VTS depende do manifesto do fornecedor para determinar (e testar) todas as instâncias HAL fornecidas pelo dispositivo. Fluxo de decisão:

Testability check for compliance

Verificação Figura 1. Testability para testes de conformidade VTS

Testes de não conformidade

Para os testes de não-conformidade, VTS se baseia no manifesto fornecedor e lshal saídas para determinar (e teste) o HAL experimentais não reclamados no manifest.xml arquivo. Fluxo de decisão:

Testability check for non-compliance

Verificação Figura 2. Testability para testes de não conformidade VTS

Localizando o manifesto do fornecedor

Cheques VTS para o fornecedor manifest.xml arquivo nos seguintes locais na seguinte ordem:

  1. /vendor/etc/vintf/manifest.xml + ODM manifesto (Se mesmo HAL é definida em ambos os locais, ODM manifesto substituições aquele em /vendor/etc/vintf/manifest.xml )
  2. /vendor/etc/vintf/manifest.xml
  3. ODM manifest.xml arquivo, carregado a partir dos seguintes arquivos na seguinte ordem:
    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

Verificador de testabilidade VTS

O vts_testibility_checker é um binário empacotado com VBS e utilizados por quadro teste VTS no tempo de execução para determinar se um dado teste HAL é testável ou não. É baseado em libvintf para carregar e analisar o arquivo de manifesto fornecedor e implementos a decisão fluxo descrito na seção anterior.

Para usar vts_testability_check :

  • Para um teste de conformidade:
    vts_testability_check -c -b <bitness>  <hal@version>
    
  • Para uma não conformidade de teste:
    vts_testability_check -b <bitness>  <hal@version>
    

A saída do vts_testability_check usa o seguinte formato JSON:

{testable: <True/False> Instances: <list of instance names of HAL service>}

Determinando HALs acessados

Para determinar qual HAL são acedidos por testes VTS, assegurar que cada teste HAL usa o VtsHalHidlTargetTestEnvBase molde para registar o HAL (s) acedido no teste. A estrutura de teste VTS pode então extrair os HALs registrados ao pré-processar o teste.

Para os testes de conformidade, você também pode verificar /system/etc/vintf/manifest.xml . Se um HAL for definido aqui, o VTS deve testá-lo. (Para os serviços HAL fornecidos pelo sistema (por exemplo, graphics.composer/vr ), os HAL são declarados em /system/manifest.xml .)