পরীক্ষা সেটআপ

টেস্ট স্যুট

VTS-এর একটি অংশ হওয়ার জন্য একটি পরীক্ষায় Android.bp এ নিম্নলিখিত সেটিংস থাকতে হবে।

test_suites: ["vts"],

অতিরিক্তভাবে, স্যুট general-tests পরীক্ষা যোগ করা এটিকে প্রি-সাবমিট চেকগুলিতে ব্যবহৃত একটি টেস্ট ম্যাপিং স্যুটের অংশ হতে দেয়।

পরীক্ষা কনফিগারেশন

বেশিরভাগ ক্ষেত্রে, টেস্ট কনফিগারেশন, যা একটি XML ফাইল যা ট্রেড ফেডারেশন একটি VTS পরীক্ষা চালানোর জন্য ব্যবহার করে, বিল্ডের সময় স্বয়ংক্রিয়ভাবে তৈরি হয়। যাইহোক, আপনি পরীক্ষার কনফিগারেশন কাস্টমাইজ করতে পারেন।

একটি কাস্টমাইজড টেস্ট কনফিগারেশন ফাইল তৈরি করুন

স্ক্র্যাচ থেকে একটি নতুন পরীক্ষা XML ফাইল তৈরি করা জটিল হতে পারে, কারণ এতে পরীক্ষার জোতা কীভাবে কাজ করে তা বোঝার পাশাপাশি প্রতিটি পরীক্ষার রানারের মধ্যে পার্থক্য জড়িত। স্বয়ংক্রিয় তৈরি পরীক্ষা কনফিগার ফাইলটি এই প্রক্রিয়াটিকে সহজ করার জন্য ডিজাইন করা হয়েছে।

যদি আপনাকে পরীক্ষা XML ফাইলটি কাস্টমাইজ করতে হয়, তাহলে আপনি স্বয়ংক্রিয়ভাবে জেনারেট করা ফাইলটিকে শুরুর পয়েন্ট হিসেবে ব্যবহার করতে পারেন।

অটোজেনারেটেড টেস্ট কনফিগারেশন ফাইলটি সনাক্ত করতে, প্রথমে কনফিগার তৈরি করতে make কমান্ডটি চালান, যেমনটি নীচে দেখানো হয়েছে।

$ m VtsHalUsbV1_1TargetTest

আপনার বিল্ড আউট ডিরেক্টরিতে, আপনি মডিউল নামের উপর ভিত্তি করে কনফিগার ফাইলটি অনুসন্ধান করতে পারেন, যেমনটি নীচে দেখানো হয়েছে।

$ find out/ -name VtsHalUsbV1_1TargetTest.config

ফাইলের একাধিক কপি থাকতে পারে এবং আপনি তাদের যেকোনো একটি ব্যবহার করতে পারেন। Android.bp ফাইলটি যে ডিরেক্টরিতে রয়েছে সেখানে .config ফাইলটি কপি করুন।

যদি Android.bp ফাইলে শুধুমাত্র একটি পরীক্ষা মডিউল থাকে, তাহলে আপনি XML ফাইলটির নাম পরিবর্তন করে AndroidTest.xml এ রাখতে পারেন এবং বিল্ড সিস্টেম স্বয়ংক্রিয়ভাবে সেটিকে টেস্ট মডিউলের কনফিগারেশন ফাইল হিসেবে ব্যবহার করে। অন্যথায়, মডিউলে একটি test_config বৈশিষ্ট্য যোগ করুন, যেমনটি নীচের উদাহরণে দেখানো হয়েছে।

test_config: "VtsHalUsbV1_1TargetTest.xml",

এখন আপনার কাছে কাজ করার জন্য একটি পরীক্ষা কনফিগারেশন ফাইল আছে এবং কাস্টমাইজেশনটি বাস্তবায়ন করতে হবে।

অ্যাডবি রুট দিয়ে পরীক্ষা চালাতে বাধ্য করুন

বেশিরভাগ VTS পরীক্ষা চালানোর জন্য রুট বিশেষাধিকার প্রয়োজন। পরীক্ষার কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি হলে, আপনি Android.bp এ নিম্নলিখিত বৈশিষ্ট্য যোগ করতে পারেন।

require_root: true,

পরীক্ষা কনফিগারেশন ফাইল কাস্টমাইজ করা হলে, পরীক্ষা XML ফাইলে নিম্নলিখিত যোগ করুন।

<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>

পরীক্ষার সময় কাঠামো বন্ধ করুন

অনেক VTS পরীক্ষার জন্য Android ফ্রেমওয়ার্ক চালানোর প্রয়োজন হয় না, এবং ফ্রেমওয়ার্ক বন্ধ করে পরীক্ষা চালানোর ফলে ডিভাইস ফ্লেক্স দ্বারা প্রভাবিত না হয়ে স্থিতিশীলতার সাথে পরীক্ষা চালানোর অনুমতি দেয়। পরীক্ষার কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি হলে, আপনি Android.bp এ নিম্নলিখিত বৈশিষ্ট্য যোগ করতে পারেন।

disable_framework: true,

পরীক্ষা কনফিগারেশন ফাইল কাস্টমাইজ করা হলে, পরীক্ষা XML ফাইলে নিম্নলিখিত যোগ করুন।

<target_preparer class="com.android.tradefed.targetprep.StopServicesSetup"/>

অতিরিক্ত পরীক্ষা আর্গুমেন্ট যোগ করুন

কিছু gtest পরীক্ষা চালানোর জন্য আরও সময় লাগতে পারে। এই ধরনের ক্ষেত্রে, আপনি XML ফাইলে টেস্ট রানার বিকল্প যোগ করতে পারেন।

উদাহরণস্বরূপ, নিম্নলিখিত এন্ট্রিতে native-test-timeout সেটিং পরীক্ষাটিকে 1 মিনিটের ডিফল্টের পরিবর্তে 3 মিনিটের টাইমআউটের সাথে চালানোর অনুমতি দেয়।

   <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>

ন্যূনতম API স্তর প্রয়োজন

কিছু 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>

API স্তর বৈশিষ্ট্য

Android 12 এই ডিভাইসগুলিতে বিক্রেতার চিত্রগুলির API স্তর দেখানোর জন্য ro.board.first_api_level এবং ro.board.api_level বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে৷ ro.product.first_api_level এর সাথে এই বৈশিষ্ট্যগুলিকে একত্রিত করে, টেস্ট স্যুটগুলি ডিভাইসগুলির জন্য সঠিক পরীক্ষার কেস বেছে নেয়৷

Android 13 ro.vendor.api_level সংজ্ঞায়িত করে যা ro.product.first_api_level , ro.board.first_api_level , এবং ro.board.api_level বৈশিষ্ট্যগুলি ব্যবহার করে প্রয়োজনীয় বিক্রেতা API স্তর গণনা করে স্বয়ংক্রিয়ভাবে সেট করা হয়৷

আরো বিস্তারিত জানার জন্য, ভেন্ডর এপিআই লেভেল দেখুন।

ro.board.first_api_level

ro.board.first_api_level প্রপার্টি হল API লেভেল যখন ভেন্ডর ফ্রিজের জন্য যোগ্য একটি SoC-এর ভেন্ডর ইমেজ এই প্রপার্টির সাথে প্রথমে প্রকাশ করা হয়। এটি ডিভাইসের লঞ্চিং API স্তরের উপর নির্ভর করে না তবে শুধুমাত্র SoC এর প্রথম API স্তরের উপর নির্ভর করে যা এই মানটিকে সংজ্ঞায়িত করে৷ মানটি SoC এর জীবনকালের জন্য স্থায়ী।

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 প্রপার্টি Android 13-এ চালু করা হয়েছিল API লেভেল দেখানোর জন্য যে বিক্রেতার ছবিগুলিকে সমর্থন করতে হবে। এটি স্বয়ংক্রিয়ভাবে ro.product.first_api_level , অথবা ro.board.api_level এ সেট করা হয় যদি ro.board.first_api_level উপস্থিত থাকে এবং ro.board.api_level ro.product.first_api_level এর চেয়ে একটি আগের API স্তরে সেট করা হয়। সংস্করণটি সংশ্লিষ্ট বিক্রেতা API স্তরের সাথে প্রতিস্থাপিত হবে যদি এটি ro.product.first_api_level থেকে সংস্করণে সেট করা হয় যা 35 থেকে বড় বা সমান। বিক্রেতার ইমেজ আপগ্রেড করার জন্য বিক্রেতা বাস্তবায়নের পরীক্ষাগুলি এই সম্পত্তির উল্লেখ করে SoC-এর জন্য বিক্রেতার প্রয়োজনীয়তা থেকে বাদ দেওয়া যেতে পারে।

VTS ব্যবহার করে শেয়ারিং প্রক্রিয়া

Android সংস্করণ 10 বা তার বেশির জন্য, আপনি নীচের নির্দেশাবলী অনুসরণ করে 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 প্ল্যানকে শার্ডে বিভক্ত করে এবং একাধিক ডিভাইসে চালায়।