HAL পরীক্ষাযোগ্যতা পরীক্ষা

অ্যান্ড্রয়েড ৯ ভেন্ডর টেস্ট স্যুট (VTS)-এর একটি রানটাইম পদ্ধতি রয়েছে, যা ডিভাইস কনফিগারেশন ব্যবহার করে শনাক্ত করে যে নির্দিষ্ট ডিভাইস টার্গেটের জন্য কোন VTS টেস্টগুলো এড়িয়ে যাওয়া উচিত।

VTS পরীক্ষার নমনীয়তা

অ্যান্ড্রয়েড ৮.০ থেকে, অ্যান্ড্রয়েড ৮.০ এবং তার পরবর্তী সংস্করণে চালু হওয়া সমস্ত ডিভাইসের জন্য ভিটিএস (VTS) পরীক্ষা আবশ্যক। তবে, সব ভিটিএস পরীক্ষা সব ডিভাইসের জন্য প্রযোজ্য নয়। উদাহরণস্বরূপ:

  • যদি কোনো নির্দিষ্ট ডিভাইস কোনো টেস্টিং HAL (যেমন IR) সমর্থন না করে, তাহলে VTS-কে সেই ডিভাইস টার্গেটের বিরুদ্ধে সেই HAL-এর জন্য পরীক্ষা চালানোর প্রয়োজন হয় না।
  • যদি একাধিক ডিভাইস একই SoC এবং ভেন্ডর ইমেজ ব্যবহার করে কিন্তু তাদের হার্ডওয়্যারের কার্যকারিতা ভিন্ন হয়, তাহলে VTS-কে নির্ধারণ করতে হবে যে একটি নির্দিষ্ট ডিভাইস টার্গেটের জন্য পরীক্ষাটি চালানো হবে নাকি বাদ দেওয়া হবে।

VTS পরীক্ষার প্রকারভেদ

VTS-এ নিম্নলিখিত পরীক্ষার ধরণগুলি অন্তর্ভুক্ত রয়েছে:

  • কমপ্লায়েন্স টেস্ট ফ্রেমওয়ার্ক এবং ভেন্ডর পার্টিশনের মধ্যে সামঞ্জস্য নিশ্চিত করে। অ্যান্ড্রয়েড ৮.০ বা তার উচ্চতর সংস্করণসহ লঞ্চ হওয়া ডিভাইসগুলিতে এই টেস্টগুলি চালানো (এবং পাস করা) আবশ্যক।
  • অ-সম্মতি পরীক্ষা বিক্রেতাদের পণ্যের গুণমান (কর্মক্ষমতা/ফাজিং ইত্যাদি) উন্নত করতে সাহায্য করে। এই পরীক্ষাগুলো বিক্রেতাদের জন্য ঐচ্ছিক।

কোনো পরীক্ষা কমপ্লায়েন্স টেস্ট কি না, তা নির্ভর করে এটি কোন প্ল্যানের অন্তর্গত তার উপর। VTS প্ল্যানের সাথে পরিচালিত পরীক্ষাগুলোকে কমপ্লায়েন্স টেস্ট হিসেবে গণ্য করা হয়।

সমর্থিত HAL নির্ধারণ করুন

ডিভাইস টার্গেটটি কোনো নির্দিষ্ট HAL সমর্থন করে কিনা তা নির্ধারণ করতে VTS নিম্নলিখিত ফাইলগুলি ব্যবহার করতে পারে:

  • /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 অর্থ হলো ভেন্ডর ১.০ থেকে ১.২ পর্যন্ত সমস্ত ভার্সন সমর্থন করে।
  • 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

চিত্র ১. ভিটিএস পরিপালন পরীক্ষার পরীক্ষাযোগ্যতা যাচাই

অ-সম্মতি পরীক্ষা

অ-সম্মতি পরীক্ষার জন্য, VTS বিক্রেতার ম্যানিফেস্ট এবং lshal আউটপুটের উপর নির্ভর করে manifest.xml ফাইলে দাবি করা হয়নি এমন পরীক্ষামূলক HAL-গুলি নির্ধারণ (এবং পরীক্ষা) করে। সিদ্ধান্ত প্রবাহ:

Testability check for noncompliance

চিত্র ২. ভিটিএস অ-সম্মতি পরীক্ষাগুলির পরীক্ষাযোগ্যতা যাচাই।

বিক্রেতার তালিকাটি খুঁজুন

VTS নিম্নলিখিত স্থানগুলিতে নিম্নলিখিত ক্রমে vendor 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 পরীক্ষাযোগ্যতা পরীক্ষক

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 টেস্টে ব্যবহৃত HAL(গুলো) রেজিস্টার করার জন্য VtsHalHidlTargetTestEnvBase টেমপ্লেটটি ব্যবহৃত হয়। এরপর VTS টেস্টিং ফ্রেমওয়ার্কটি টেস্টটি প্রি-প্রসেস করার সময় রেজিস্টার করা HAL-গুলো এক্সট্র্যাক্ট করতে পারবে।

কমপ্লায়েন্স টেস্টের জন্য, আপনি /system/etc/vintf/manifest.xml ফাইলটিও দেখতে পারেন। যদি এখানে কোনো HAL সংজ্ঞায়িত করা থাকে, তাহলে VTS সেটি পরীক্ষা করবে। (সিস্টেম দ্বারা প্রদত্ত HAL পরিষেবাগুলির জন্য (যেমন graphics.composer/vr ), HAL-গুলি /system/manifest.xml ফাইলে ঘোষিত হয়।)