HAL টেস্ট করার উপযুক্ত কিনা তা চেক করা

Android 9 Vendor Test Suite (VTS) একটি রানটাইম পদ্ধতিকে সাপোর্ট করে যা ডিভাইস কনফিগারেশন ব্যবহার করে শনাক্ত করে যে কোন VTS পরীক্ষা সেই ডিভাইস টার্গেটের জন্য এড়িয়ে যাওয়া উচিত।

VTS টেস্টের সুবিধা

Android 8.0 থেকে, Android 8.0 ও তার পরবর্তী যেকোনও ভার্সন সহ লঞ্চ করা সব ডিভাইসের জন্য VTS পরীক্ষা প্রয়োজন। তবে, সব VTS পরীক্ষা সব ডিভাইস টার্গেটের ক্ষেত্রে প্রযোজ্য নয়। যেমন:

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

VTS টেস্টের ধরন

VTS-এ নিম্নলিখিত ধরনের টেস্ট অন্তর্ভুক্ত:

  • কম্প্লায়েন্স পরীক্ষা ফ্রেমওয়ার্ক ও ভেন্ডর পার্টিশনের মধ্যে মানানসই হওয়ার বিষয়টি নিশ্চিত করে। Android 8.0 বা তার পরবর্তী যেকোনও ভার্সন সহ লঞ্চ হওয়া ডিভাইসে এইসব টেস্ট রান (ও পাস) করতে হবে।
  • নিয়ম না মানা সংক্রান্ত পরীক্ষা, প্রোডাক্টের কোয়ালিটি (পারফর্ম্যান্স/ফাজিং ইত্যাদি) উন্নত করতে ভেন্ডরদের সাহায্য করে। এইসব পরীক্ষা বিক্রেতাদের জন্য ঐচ্ছিক।

কোনও টেস্ট কমপ্লায়েন্স টেস্ট কিনা তা নির্ভর করে সেটি কোন প্ল্যানের অন্তর্গত তার উপর। 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-এর অর্থ হল, ফ্রেমওয়ার্কটি সবচেয়ে কম ভার্সন ১.০-এর সাথে কাজ করতে পারে এবং ১.১-এর চেয়ে বেশি ভার্সনের প্রয়োজন নেই।
  • ডিভাইস 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 থেকে সব ভার্সনে কাজ করে।
  • lshal. ডিভাইসে এমন একটি টুল যা hwservicemanager-এর সাথে রেজিস্টার করা HAL পরিষেবা সম্পর্কে রানটাইম তথ্য দেখায়। উদাহরণ:
    android.hardware.vibrator@1.0::IVibrator/default

    lshal এছাড়াও পাসথ্রু ইমপ্লিমেন্টেশন (অর্থাৎ ডিভাইসে সংশ্লিষ্ট -impl.so ফাইল থাকা) সহ সব HAL দেখায়। উদাহরণ:
    android.hardware.nfc@1.0::I*/* (/vendor/lib/hw/)
    android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)

নীতি মেনে চলা সংক্রান্ত পরীক্ষা

কমপ্লায়েন্স টেস্টের জন্য, ডিভাইসের মাধ্যমে প্রদান করা সব HAL ইনস্ট্যান্স নির্ধারণ (এবং টেস্ট) করতে VTS ভেন্ডর ম্যানিফেস্টের উপর নির্ভর করে। সিদ্ধান্তের ফ্লো:

নিয়ম মেনে চলা সংক্রান্ত টেস্টেবিলিটি চেক

ছবি ১. VTS কমপ্লায়েন্স টেস্টের জন্য টেস্ট করার উপযুক্ততা চেক করা

নিয়ম না মানা সংক্রান্ত পরীক্ষা

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

অসম্মতির জন্য টেস্ট করার ক্ষমতা চেক করা

ছবি ২. VTS নন-কমপ্লায়েন্স টেস্টের জন্য টেস্ট করার উপযুক্ততা চেক করা

ভেন্ডর ম্যানিফেস্ট খুঁজে বের করা

VTS নিম্নলিখিত ক্রমে নিম্নলিখিত জায়গায় ভেন্ডর manifest.xml ফাইল চেক করে:

  1. /vendor/etc/vintf/manifest.xml + ODM ম্যানিফেস্ট (যদি একই HAL দুটি জায়গাতেই সংজ্ঞায়িত করা থাকে, তাহলে ODM ম্যানিফেস্ট /vendor/etc/vintf/manifest.xml-এ সংজ্ঞায়িত HAL-কে ওভাররাইড করে)
  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 টেস্টেবিলিটি চেকার

The vts_testibility_checker হল VTS-এর সাথে প্যাকেজ করা একটি বাইনারি এবং কোনও প্রদত্ত HAL টেস্ট টেস্ট করা যাবে কিনা তা নির্ধারণ করতে রানটাইমে VTS টেস্ট ফ্রেমওয়ার্ক এটি ব্যবহার করে। এটি 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-এ ঘোষণা করা হয়।)