টেস্ট স্যুট
কোনো টেস্টকে VTS-এর অংশ হতে হলে, সেটির Android.bp ফাইলে নিম্নলিখিত সেটিংটি অবশ্যই থাকতে হবে।
test_suites: ["vts"],
এছাড়াও, টেস্টটিকে general-tests স্যুটে যুক্ত করলে, এটি প্রি-সাবমিট চেকের জন্য ব্যবহৃত একটি টেস্ট ম্যাপিং স্যুটের অংশ হতে পারে।
পরীক্ষার কনফিগারেশন
বেশিরভাগ ক্ষেত্রে, টেস্ট কনফিগারেশন—যা ট্রেড ফেডারেশন ভিটিএস টেস্ট চালানোর জন্য ব্যবহার করে—বিল্ডের সময় স্বয়ংক্রিয়ভাবে তৈরি হয়। তবে, আপনি টেস্ট কনফিগারেশনটি নিজের মতো করে সাজিয়ে নিতে পারেন।
একটি কাস্টমাইজড টেস্ট কনফিগারেশন ফাইল তৈরি করুন
প্রথম থেকে একটি নতুন টেস্ট XML ফাইল তৈরি করা জটিল হতে পারে, কারণ এর জন্য টেস্ট হারনেস কীভাবে কাজ করে এবং প্রতিটি টেস্ট রানারের মধ্যে পার্থক্য বোঝা প্রয়োজন। স্বয়ংক্রিয়ভাবে তৈরি হওয়া টেস্ট কনফিগ ফাইলটি এই প্রক্রিয়াটিকে সহজ করার জন্য ডিজাইন করা হয়েছে।
যদি আপনাকে টেস্ট XML ফাইলটি কাস্টমাইজ করতেই হয়, তবে আপনি স্বয়ংক্রিয়ভাবে তৈরি হওয়া ফাইলটিকে প্রাথমিক ভিত্তি হিসেবে ব্যবহার করতে পারেন।
স্বয়ংক্রিয়ভাবে তৈরি হওয়া টেস্ট কনফিগারেশন ফাইলটি খুঁজে পেতে, প্রথমে নিচে দেখানো অনুযায়ী make কমান্ডটি চালিয়ে কনফিগারেশনটি বিল্ড করুন।
$ m VtsHalUsbV1_1TargetTest
আপনার বিল্ড আউট ডিরেক্টরিতে, আপনি মডিউলের নাম অনুসারে কনফিগারেশন ফাইলটি খুঁজতে পারেন, যেমনটি নিচে দেখানো হয়েছে।
$ find out/ -name VtsHalUsbV1_1TargetTest.config
ফাইলটির একাধিক কপি থাকতে পারে এবং আপনি সেগুলোর যেকোনো একটি ব্যবহার করতে পারেন। .config ফাইলটি সেই ডিরেক্টরিতে কপি করুন যেখানে Android.bp ফাইলটি রয়েছে।
যদি Android.bp ফাইলে কেবল একটিই টেস্ট মডিউল থাকে, তাহলে আপনি XML ফাইলটির নাম পরিবর্তন করে AndroidTest.xml রাখতে পারেন, এবং বিল্ড সিস্টেম স্বয়ংক্রিয়ভাবে সেটিকে টেস্ট মডিউলের কনফিগারেশন ফাইল হিসেবে ব্যবহার করবে। অন্যথায়, নিচের উদাহরণে দেখানো অনুযায়ী মডিউলটিতে একটি test_config অ্যাট্রিবিউট যোগ করুন।
test_config: "VtsHalUsbV1_1TargetTest.xml",
এখন আপনার কাছে কাস্টমাইজেশনটি প্রয়োগ করার জন্য একটি টেস্ট কনফিগারেশন ফাইল রয়েছে।
adb root ব্যবহার করে টেস্টটি চালাতে বাধ্য করুন
বেশিরভাগ VTS টেস্ট চালানোর জন্য রুট প্রিভিলেজ প্রয়োজন হয়। যদি টেস্ট কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি হয়, তাহলে আপনি Android.bp তে নিম্নলিখিত অ্যাট্রিবিউটটি যোগ করতে পারেন।
require_root: true,
যদি টেস্ট কনফিগারেশন ফাইলটি কাস্টমাইজ করা থাকে, তাহলে টেস্ট XML ফাইলে নিম্নলিখিতটি যোগ করুন।
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
পরীক্ষার সময় ফ্রেমওয়ার্ক বন্ধ করুন
অনেক VTS টেস্ট চালানোর জন্য অ্যান্ড্রয়েড ফ্রেমওয়ার্কের প্রয়োজন হয় না, এবং ফ্রেমওয়ার্ক বন্ধ রেখে টেস্টটি চালালে তা ডিভাইসের ত্রুটির দ্বারা প্রভাবিত না হয়ে স্থিতিশীলভাবে চলতে পারে। যদি টেস্ট কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি হয়, তাহলে আপনি Android.bp তে নিম্নলিখিত অ্যাট্রিবিউটটি যোগ করতে পারেন।
disable_framework: true,
যদি টেস্ট কনফিগারেশন ফাইলটি কাস্টমাইজ করা থাকে, তাহলে টেস্ট XML ফাইলে নিম্নলিখিতটি যোগ করুন।
<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>
অতিরিক্ত পরীক্ষার আর্গুমেন্ট যোগ করুন
কিছু gtest টেস্ট চলতে বেশি সময় লাগতে পারে। সেক্ষেত্রে, আপনি XML ফাইলে টেস্ট রানার অপশন যোগ করতে পারেন।
উদাহরণস্বরূপ, নিম্নলিখিত এন্ট্রিতে থাকা native-test-timeout সেটিংটি টেস্টটিকে ডিফল্ট ১ মিনিটের পরিবর্তে ৩ মিনিটের টাইমআউটে চালানোর সুযোগ দেয়।
<test class="com.android.tradefed.testtype.GTest" >
<option name="native-test-device-path" value="/data/local/tmp" />
<option name="module-name" value="VtsHalNfcV1_0TargetTest" />
<option name="native-test-timeout" value="180000"/>
</test>
ন্যূনতম এপিআই স্তর প্রয়োজন
কিছু VTS টেস্ট শুধুমাত্র ন্যূনতম API লেভেলের ডিভাইসেই চালানো যায়। যদি টেস্ট কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি হয়, তাহলে আপনি Android.bp তে নিম্নলিখিত অ্যাট্রিবিউটটি যোগ করতে পারেন।
min_shipping_api_level: 29,
অথবা
vsr_min_shipping_api_level: 202404,
যদি টেস্ট কনফিগারেশন ফাইলটি কাস্টমাইজ করা থাকে, তাহলে টেস্ট XML ফাইলে নিম্নলিখিত কমান্ডটি যোগ করুন।
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="min-api-level" value="29" />
</object>
অথবা
<object type="module_controller" class="com.android.tradefed.testtype.suite.module.ShippingApiLevelModuleController">
<option name="vsr-min-api-level" value="202404" />
</object>
এপিআই স্তরের বৈশিষ্ট্য
অ্যান্ড্রয়েড ১২ এই ডিভাইসগুলিতে ভেন্ডর ইমেজের এপিআই লেভেল দেখানোর জন্য ro.board.first_api_level এবং ro.board.api_level প্রপার্টিগুলো সংজ্ঞায়িত করে। এই প্রপার্টিগুলোকে ro.product.first_api_level সাথে একত্রিত করে টেস্ট স্যুটগুলো ডিভাইসগুলোর জন্য উপযুক্ত টেস্ট কেস বেছে নেয়।
অ্যান্ড্রয়েড ১৩-এ ro.vendor.api_level সংজ্ঞায়িত করা হয়েছে, যা ro.product.first_api_level , ro.board.first_api_level এবং ro.board.api_level প্রপার্টিগুলো ব্যবহার করে প্রয়োজনীয় ভেন্ডর এপিআই লেভেল গণনা করার মাধ্যমে স্বয়ংক্রিয়ভাবে সেট হয়ে যায়।
আরও বিস্তারিত তথ্যের জন্য, ভেন্ডর এপিআই লেভেল দেখুন।
ro.board.first_api_level
ro.board.first_api_level প্রপার্টিটি হলো সেই এপিআই লেভেল, যখন ভেন্ডর ফ্রিজের জন্য যোগ্য কোনো এসওসি-এর ভেন্ডর ইমেজগুলো এই প্রপার্টিসহ প্রথম রিলিজ করা হয়। এটি ডিভাইসের লঞ্চিং এপিআই লেভেলের উপর নির্ভর করে না, বরং শুধুমাত্র সেই এসওসি-এর প্রথম এপিআই লেভেলের উপর নির্ভর করে যা এই মানটি নির্ধারণ করে। এই মানটি এসওসি-এর জীবনকাল জুড়ে স্থায়ী থাকে।
ro.board.first_api_level সেট করার জন্য, ডিভাইস নির্মাতারা তাদের device.mk ফাইলে BOARD_SHIPPING_API_LEVEL সংজ্ঞায়িত করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
# BOARD_SHIPPING_API_LEVEL sets ro.product.first_api_level to indicate
# the first api level that the device has been commercially launched on.
BOARD_SHIPPING_API_LEVEL := 23
এটি ডিভাইসের vendor/build.prop ফাইলে ro.board.first_api_level প্রপার্টিটিকে স্বয়ংক্রিয়ভাবে নির্ধারণ করবে। এই প্রপার্টিটি ভেন্ডর init প্রসেস দ্বারা সেট করা হয়।
ro.board.api_level
ro.board.api_level প্রপার্টিটি হলো ভেন্ডর ইমেজগুলোর বর্তমান ভেন্ডর এপিআই লেভেল, যা YYYYMM ফরম্যাটে থাকে এবং যে ফরম্যাটে ভেন্ডর এপিআইটি স্থির করা হয়েছিল। এটি বিল্ড সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয়।
ro.vendor.api_level
ভেন্ডর ইমেজগুলোকে কোন এপিআই লেভেল সাপোর্ট করতে হবে তা দেখানোর জন্য অ্যান্ড্রয়েড ১৩-এ ro.vendor.api_level প্রপার্টিটি চালু করা হয়েছিল। এটি স্বয়ংক্রিয়ভাবে ro.product.first_api_level এ সেট হয়ে যায়, অথবা যদি ro.board.api_level উপস্থিত থাকে এবং ro.board.first_api_level ro.board.api_level এপিআই লেভেলটি ro.product.first_api_level চেয়ে আগের কোনো লেভেলে সেট করা থাকে, তাহলে এটি ro.board.api_level-এ সেট হয়। যদি ভার্সনটি ro.product.first_api_level থেকে এমন কোনো ভার্সনে সেট করা হয় যা 35 বা তার বেশি, তাহলে ভার্সনটি সংশ্লিষ্ট ভেন্ডর এপিআই লেভেল দ্বারা প্রতিস্থাপিত হবে। এই প্রপার্টিটি উল্লেখ করে, ভেন্ডর ইমপ্লিমেন্টেশনের জন্য যে টেস্টগুলোর ভেন্ডর ইমেজ আপগ্রেডের প্রয়োজন হয়, সেগুলোকে SoC-এর ভেন্ডর রিকোয়ারমেন্ট থেকে বাদ দেওয়া যেতে পারে।
VTS ব্যবহার করে শার্ডিং প্রক্রিয়া
অ্যান্ড্রয়েড ভার্সন ১০ বা তার উচ্চতর সংস্করণের জন্য, আপনি নিচের নির্দেশাবলী অনুসরণ করে VTS এবং CTS-on-GSI উভয় প্ল্যান দিয়ে পরীক্ষা করার সময় একাধিক ডিভাইসে শার্ডিং প্রক্রিয়াটি সম্পাদন করতে পারেন।
run vts --shard-count <number of devices> -s <device serial> ...
এই কমান্ডটি VTS প্ল্যানকে শার্ডে বিভক্ত করে এবং সেগুলোকে একাধিক ডিভাইসে চালায়।
run cts-on-gsi --shard-count <number of devices> -s <device serial> -s ...
এই কমান্ডটি CTS-on-GSI প্ল্যানটিকে শার্ডে বিভক্ত করে এবং সেগুলোকে একাধিক ডিভাইসে চালায়।