CTS ডিভাইস ইন্টারঅ্যাকশন হেল্পার মডিউল, CTS ডিভাইস ইন্টারঅ্যাকশন হেল্পার মডিউল

অ্যান্ড্রয়েড ১১ বা তার পরবর্তী সংস্করণের জন্য, কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) ডিভাইস ইন্টারঅ্যাকশন হেল্পার মডিউলগুলো আপনাকে কাস্টমাইজ করার সুযোগ দেয় যে, একটি নির্দিষ্ট ডিভাইসে কিছু CTS টেস্ট ইউজার ইন্টারফেসের (UI) সাথে কীভাবে কাজ করবে। এর মানে হলো, অ্যান্ড্রয়েড কম্প্যাটিবিলিটি ডেফিনিশন ডকুমেন্ট (CDD) বা API ডক্স-এর আওতাভুক্ত নয় এমন কোনো UI এলিমেন্ট প্রতিস্থাপনের মতো কাজগুলোও করা সম্ভব এবং তারপরেও তা CTS টেস্টে পাস করবে।

যেসব OEM পণ্য তৈরির সময় অ্যান্ড্রয়েড UI কাস্টমাইজ করতে চান এবং CTS পাস করার প্রয়োজন হয়, তারা হেল্পার মডিউল প্রয়োগ করতে পারেন। যদি আপনি অ্যান্ড্রয়েডের ডিফল্ট ইমপ্লিমেন্টেশন ব্যবহার করেন, তাহলে কোনো অতিরিক্ত কাজের প্রয়োজন নেই।

সহায়ক মডিউল বাস্তবায়ন করা

UI কাস্টমাইজ করার জন্য প্রয়োজনীয়তা

যেকোনো UI প্রয়োজনীয়তার জন্য CDD বা মেইনলাইন মডিউলগুলো দেখুন। যদি কাঙ্ক্ষিত UI-টি CDD বা মেইনলাইন মডিউলগুলোর অন্তর্ভুক্ত থাকে, তাহলে সেই UI-টি কাস্টমাইজ করা যাবে না।

যদি কাঙ্ক্ষিত UI-এর সাথে ইন্টারঅ্যাক্ট করে এমন CTS টেস্টগুলো হেল্পার ফ্রেমওয়ার্ক ব্যবহার না করে, তাহলে সেই UI কাস্টমাইজ করা যাবে না। UI পরিবর্তন করার আগে টেস্ট মডিউলটি রূপান্তর করার জন্য টেস্ট ওনারের সাথে কাজ করুন।

অন্যথায়, আপনি UI কাস্টমাইজ করতে পারেন।

বাস্তবায়ন কর্মপ্রবাহ

  1. আপনার নির্দিষ্ট পণ্যের প্রয়োজন অনুযায়ী UI কাস্টমাইজ করুন।
  2. যেসব CTS টেস্ট মডিউলের UI-এর সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন, সেগুলোর জন্য বিদ্যমান AOSP হেল্পার মডিউলগুলোকে সাবক্লাস হিসেবে মনোনীত করুন। কাস্টমাইজড UI-এর জন্য প্রয়োজনীয় ইন্টারঅ্যাকশনগুলো যথাযথভাবে প্রতিস্থাপন করুন। পরিবর্তনের ধরনের ওপর নির্ভর করে এই প্রতিস্থাপন ভিন্ন হতে পারে।
    • OEM সাবক্লাসগুলো একটি OEM প্যাকেজের মধ্যে থাকে, যেমন com.[oem].cts.helpers
    • প্রতিটি OEM সাবক্লাসের নামকরণে একটি সাধারণ প্রিফিক্স ব্যবহার করা হয়, যা এটিকে AOSP ইমপ্লিমেন্টেশন থেকে আলাদা করে; AOSP ইমপ্লিমেন্টেশনের প্রিফিক্স হলো Default
  3. এই টেস্ট রানার নিয়মগুলো অনুসরণ করে হেল্পারগুলোকে একটি APK-তে বিল্ড করুন।
    • Android.bp অন্তর্ভুক্ত প্যাকেজের নামেই android_test_helper_app ঘোষণা করা উচিত।
    • APK-এর AndroidManifest.xml ফাইলে অবশ্যই interaction-helpers-prefix নামের একটি মেটাডেটা প্রপার্টি ঘোষণা করতে হবে, যার মান হবে পূর্ববর্তী বুলেট পয়েন্টে নির্বাচিত ক্লাস প্রিফিক্স।
    • অ্যাপটিকে cts-helpers-core , cts-helpers-interfaces এবং com.android.cts.helpers.aosp এর উপর নির্ভরশীল হতে হবে। যদি OEM হেল্পারগুলো সমস্ত প্রাসঙ্গিক ইন্টারফেস সম্পূর্ণরূপে ইমপ্লিমেন্ট করে, তাহলে com.android.cts.helpers.aosp ঐচ্ছিক।
  4. ডিভাইস ইমেজে ro.vendor.cts_interaction_helper_packages প্রপার্টিটি সেট করে APK-এর নামটি অন্তর্ভুক্ত করুন। যদি আপনার একাধিক APK-তে হেল্পার ইমপ্লিমেন্টেশনগুলো আলাদা করার প্রয়োজন হয়, তাহলে এই প্রপার্টিতে কোলন দ্বারা পৃথক করা প্যাকেজের একটি তালিকা থাকতে পারে।
  5. Tradefed for CTS চালানোর সময় নিশ্চিত করুন যে APK ফাইলটি testcases ডিরেক্টরিতে রয়েছে। প্রয়োজনে, logcat মেসেজগুলো পরীক্ষা করে নিশ্চিত করুন যে প্রত্যাশিত হেল্পার ইমপ্লিমেন্টেশন ক্লাসটি নির্বাচিত হয়েছে।
  6. ঐচ্ছিক, তবে বিশেষভাবে সুপারিশকৃত: আপনার হেল্পার ইমপ্লিমেন্টেশনটি AOSP-তে জমা দিন অথবা তৃতীয় পক্ষের পরীক্ষার জন্য উপলব্ধ করুন।

উদাহরণ সহায়ক বাস্তবায়ন

উদাহরণস্বরূপ, CtsPrintTestCases এমন একটি হেল্পার আশা করে যার ইন্টারফেসটি ICtsPrintHelper এ সংজ্ঞায়িত। এর AOSP ইমপ্লিমেন্টেশনকে com.android.cts.helpers.aosp.DefaultCtsPrintHelper বলা হয়।

আপনি যদি প্রিন্ট UI কাস্টমাইজ করেন, তাহলে আপনি DefaultCtsPrintHelper সাবক্লাস হিসেবে com.oem.cts.helpers.OemCtsPrintHelper তৈরি করতে পারেন। Android.bp তে থাকা android_test_helper_app এর নাম com.oem.cts.helpers , যা com.oem.cts.helpers.apk তৈরি করে এবং AndroidManifest.xmlinteraction-helpers-prefix হিসেবে Oem ঘোষণা করে।

ডিভাইস প্রপার্টি ro.vendor.cts_interaction_helper_packages com.oem.cts.helpers এ সেট করা হয়েছে।

রেফারেন্স বাস্তবায়ন

রেফারেন্স ইমপ্লিমেন্টেশনগুলোর মধ্যে cts/libs/helpers অধীনে থাকা ইন্টারফেসগুলো এবং cts/helpers অধীনে থাকা ডিফল্ট AOSP হেল্পারগুলো অন্তর্ভুক্ত। শীর্ষ-স্তরের ইন্টারফেসটি cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java তে নথিভুক্ত করা আছে।

CTS টেস্টকে এর হেল্পারগুলোর সাথে সংযুক্ত করতে, টেস্টের মালিকরা cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java তে নথিভুক্ত @Rule ডেফিনিশনটি ব্যবহার করতে পারেন।

ফ্রেমওয়ার্কটি ব্যবহারকারী প্রতিটি CTS মডিউল এবং এর প্রত্যাশিত হেল্পার আচরণ cts/libs/helpers/core/src/com/android/cts/helpers অধীনে সংজ্ঞায়িত একটি ইন্টারফেসে নথিভুক্ত করা আছে।

CTS পরীক্ষা চালানো হচ্ছে

সাহায্যকারী ছাড়া পরীক্ষা

একটি প্রপার্টি ছাড়া, ডিভাইসে রানটাইমে হেল্পার ছাড়া টেস্ট করার অপশন থাকে না, কিন্তু এটি ঐচ্ছিকভাবে পরিবর্তন করে যে CTS টেস্টগুলো ডিভাইসের সাথে কীভাবে কাজ করে। যদি আপনার হেল্পার ইমপ্লিমেন্টেশন ছাড়া CTS চালানোর প্রয়োজন হয়, তাহলে আপনার কাছে দুটি বিকল্প আছে:

  • ডিভাইস থেকে ro.vendor.cts_interaction_helper_packages প্রপার্টিটি সরিয়ে ফেলুন। এর ফলে ওই বিল্ডে হেল্পারগুলো আর ব্যবহৃত হবে না।
  • CTS চালানোর আগে testcases ডিরেক্টরি থেকে হেল্পার APK-টি সরিয়ে ফেলুন। এর ফলে, APK-টি testcases এ পুনরুদ্ধার না করা পর্যন্ত কোনো রানই হেল্পারগুলো ব্যবহার করতে পারবে না।

আপনি Tradefed আর্গুমেন্ট এবং ro.vendor.cts_interaction_helper_packages প্রপার্টি কন্ট্রোলের মাধ্যমে ডিফল্ট সেটিংস পরিবর্তন করতে পারেন, যেখান থেকে হেল্পার APK লোড করা হয়।

উপলব্ধ প্রতিটি সেটিংসের প্রত্যাশিত মান বা পরিসীমার জন্য নিম্নলিখিতটি দেখুন।

  • ro.vendor.cts_interaction_helper_packages হলো প্যাকেজের নাম সম্বলিত একটি কোলন-বিভক্ত স্ট্রিং। এটি এমন যেকোনো মান গ্রহণ করতে পারে যা OEM-এর হেল্পার ইমপ্লিমেন্টেশনের জন্য একটি বৈধ প্যাকেজ পছন্দ।
  • cts-tradefed একটি device-interaction-helper:property-name আর্গুমেন্ট গ্রহণ করে, যা একটি টেস্ট রানের জন্য প্রত্যাশিত প্রপার্টিটিকে সাময়িকভাবে পরিবর্তন করে, যেমন --module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp' । প্রপার্টি নেম-এর মান ডিভাইসে আপনার সেট করা যেকোনো প্রপার্টি হতে পারে। এই প্রপার্টির মান উপরে বর্ণিত ro.vendor.cts_interaction_helper_packages প্রপার্টির মতোই একই সীমাবদ্ধতা মেনে চলে।

কাস্টমাইজেশন সহ পরীক্ষা

ডিফল্টরূপে, স্টক অ্যান্ড্রয়েডে রেফারেন্স ইমপ্লিমেন্টেশনগুলো CTS পাস করে। UI কাস্টমাইজেশনের মাধ্যমে পার্টনার ইমপ্লিমেন্টেশনগুলো CTS পাস করছে কিনা তা যাচাই করুন। আপনার কাস্টমাইজ করা UI বা ফিচারগুলোকে কভার করে এমন CTS মডিউলগুলো রান করুন।

কিছু CTS মডিউল বা হেল্পার এখনও কিছু কাস্টমাইজেশন সমর্থন নাও করতে পারে।

  • একটি CTS মডিউল যা আপনার কাস্টমাইজ করতে চাওয়া UI-এর সাথে ইন্টারঅ্যাক্ট করে, সেটি হেল্পার ফ্রেমওয়ার্ক ব্যবহার নাও করতে পারে। চাহিদা এবং টেস্ট ওনারের অগ্রাধিকারের উপর ভিত্তি করে CTS মডিউলগুলোকে হেল্পার ফ্রেমওয়ার্কে রূপান্তর করা হবে বলে আশা করা হয়। আপনার পরিকল্পিত ফিচারগুলোকে সাপোর্ট করার জন্য CTS পরিবর্তনের অনুরোধ করার মতোই, রূপান্তরটি যাতে শিডিউলে অন্তর্ভুক্ত হয় তা নিশ্চিত করতে প্রক্রিয়ার শুরুতেই রূপান্তরের জন্য অনুরোধ ফাইল করুন।
  • বিদ্যমান কোনো হেল্পার দ্বারা প্রদত্ত ফাংশনগুলো আপনার কাঙ্ক্ষিত কাস্টমাইজেশনগুলো সম্পূর্ণরূপে সমাধান করতে নাও পারে। হেল্পার ফাংশনগুলোর উচিত UI নির্ভরতা থেকে মুক্ত থাকা। যদি কোনো হেল্পার ফাংশনের পরোক্ষভাবে UI নির্ভরতা থাকে, তবে এটিকে CTS-এর বাগের মতোই বিবেচনা করা যেতে পারে।