اختبار قابلية اختبار HAL

تتيح مجموعة اختبار المورّدين (VTS) لنظام التشغيل Android 9 استخدام أسلوب أثناء التشغيل لتحديد اختبارات VTS التي يجب تخطّيها لهذا الجهاز المستهدَف.

مرونة اختبار الفيديوهات

اعتبارًا من الإصدار 8.0 من نظام التشغيل Android، أصبحت اختبارات VTS مطلوبة لجميع الأجهزة التي تم طرحها مع الإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث. ومع ذلك، لا تنطبق بعض اختبارات VTS على جميع استهدافات الأجهزة. مثلاً:

  • إذا كان جهاز معيّن لا يتيح اختبار HAL (مثل الأشعة تحت الحمراء)، لن يحتاج اختبار VTS إلى إجراء اختبارات لاختبار HAL هذا على الجهاز المستهدَف.
  • إذا كانت هناك عدة أجهزة تستخدم المنظومة على الرقاقة (SoC) وصورة المورِّد نفسها ولكن بها وظائف مختلفة للأجهزة، يجب أن يحدد VTS ما إذا كان يجب إجراء الاختبار أو تخطيه لاستهداف جهاز معيّن.

أنواع اختبارات VTS

تشمل اختبارات VTS أنواع الاختبارات التالية:

  • تضمن اختبارات الامتثال التوافق بين أقسام إطار العمل وأقسام المورّدين. يجب إجراء هذه الاختبارات (اجتيازها) على الأجهزة التي تعمل بالإصدار 8.0 من نظام التشغيل Android أو الإصدارات الأحدث.
  • تساعد اختبارات عدم الامتثال المورّدين على تحسين جودة المنتجات (الأداء/الفحص العشوائي وما إلى ذلك). هذه الاختبارات اختيارية للمورّدين.

يعتمد ما إذا كان الاختبار اختبار امتثال أم لا على الخطة التي ينتمي إليها. تُعدّ الاختبارات التي يتم إجراؤها باستخدام خطة اختبار الأداء والتوافق اختبارات الامتثال.

تحديد HALs المتوافقة

يمكن أن تستخدم أداة فحص الأجهزة للتوافق مع معايير Google Play (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 يشير إلى أنّ المورّد متوافق مع جميع الإصدارات من 1.0 إلى 1.2.
  • الشال. أداة على الجهاز تعرض معلومات وقت التشغيل حول خدمات HAL المسجّلة في hwservicemanager مثال:
    android.hardware.vibrator@1.0::IVibrator/default

    يعرض lshal أيضًا جميع HALs التي تتوفر فيها عمليات تنفيذ العبور (أي توفُّر ملف -impl.so المقابل على الجهاز). مثال:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)

اختبارات الامتثال

بالنسبة إلى اختبارات الامتثال، يعتمد VTS على بيان المورّد لتحديد (واختبار) جميع نُسخ HAL التي يوفّرها الجهاز. مسار القرار:

التحقق من قابلية الاختبار للامتثال

الشكل 1. التحقّق من إمكانية إجراء اختبارات الامتثال لنظام VTS

اختبارات عدم الامتثال

بالنسبة إلى اختبارات عدم الامتثال، تعتمد أداة فحص التوافق على بيان المورّد ومخرجات lshal لتحديد (واختبار) واجهات HAL التجريبية التي لم يتمّ تحديدها في ملف manifest.xml. مسار القرار:

التحقّق من إمكانية الاختبار لرصد حالات عدم الامتثال

الشكل 2: التحقّق من إمكانية الاختبار لرصد عدم الامتثال لمعايير VTS الاختبارات

تحديد موقع بيان المورّد

تبحث أداة التحقّق من المحتوى في الفيديو عن ملف manifest.xml الخاص بالمورّد في المواقع التالية بالترتيب التالي:

  1. /vendor/etc/vintf/manifest.xml + بيان ODM (في حال تحديد HAL نفسه في كلا المكانين، يلغي بيان ODM القيمة في /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_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>}

تحديد واجهات برمجة التطبيقات التي تم الوصول إليها

لتحديد HALs التي يتم الوصول إليها من خلال اختبارات VTS، تأكَّد من أنّ كل اختبار HAL يستخدم النموذج VtsHalHidlTargetTestEnvBase لتسجيل مستويات HAL التي تم الوصول إليها في الاختبار. يمكن بعد ذلك لإطار عمل اختبار فحص الأجهزة للتحقق من السلامة (VTS) استخراج واجهات HAL المسجَّلة عند المعالجة المُسبَقة للاختبار.

لإجراء اختبارات الامتثال، يمكنك أيضًا الاطّلاع على /system/etc/vintf/manifest.xml. إذا تم تحديد HAL هنا، يجب أن يختبره VTS. (بالنسبة إلى خدمات HAL التي يقدّمها النظام (مثل graphics.composer/vr)، يتم الإعلان عن هذه العمليات في /system/manifest.xml.