Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

HAL可測試性檢查

Android 9供應商測試套件(VTS)支持一種運行時方法,用於使用設備配置來識別應針對該設備目標跳過哪些VTS測試。

VTS測試靈活性

從Android 8.0開始,使用Android 8.0及更高版本啟動的所有設備都必須進行VTS測試。但是,並非所有的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表示供應商支持version1.2的所有版本。
  • lshal 。設備上的工具,用於顯示有關在hwservicemanager註冊的HAL服務的運行時信息。示例:
    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實例。決策流程:

Testability check for compliance

圖1. VTS一致性測試的可測試性檢查

違規測試

對於不合規測試,VTS依賴於供應商清單和lshal輸出來確定(並測試) manifest.xml文件中未聲明的實驗性HAL。決策流程:

Testability check for non-compliance

圖2. VTS不合格測試的可測試性檢查

查找供應商清單

VTS按以下順序在以下位置檢查供應商manifest.xml文件:

  1. /vendor/etc/vintf/manifest.xml + ODM清單(如果兩個地方都定義了相同的HAL,則ODM清單將覆蓋/vendor/etc/vintf/manifest.xml中的/vendor/etc/vintf/manifest.xml
  2. /vendor/etc/vintf/manifest.xml
  3. ODM manifest.xml文件,按以下順序從以下文件加載:
    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

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中聲明。)