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

পরীক্ষা স্যুট

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 এ নিম্নলিখিত বৈশিষ্ট্য যোগ করতে পারেন।

test_min_api_level: 29,

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

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MinApiLevelModuleController">
       <option name="min-api-level" value="29" />
   </object>

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 প্রপার্টি হল একটি SoC এর জন্য ভেন্ডর ইমেজের বর্তমান API লেভেল। যখন ro.board.first_api_level আছে এমন ভেন্ডর ইমেজের API লেভেল আপডেট করা হয়, তখন SoC ব্যবহার করা ডিভাইসটিকে ro.board.first_api_level আপডেট করার পরিবর্তে ভেন্ডর ইমেজের বর্তমান API লেভেলের সাথে ro.board.api_level প্রপার্টি নির্ধারণ করতে হবে। . এই প্রপার্টি সেট করা না থাকলে, ro.board.first_api_level ডিফল্টরূপে ব্যবহার করা হবে।

ro.board.api_level সেট করতে, BOARD_API_LEVEL পছন্দসই মান সহ device.mk ফাইলে সংজ্ঞায়িত করুন।

ro.vendor.api_level

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

,

পরীক্ষা স্যুট

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 এ নিম্নলিখিত বৈশিষ্ট্য যোগ করতে পারেন।

test_min_api_level: 29,

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

   <object type="module_controller" class="com.android.tradefed.testtype.suite.module.MinApiLevelModuleController">
       <option name="min-api-level" value="29" />
   </object>

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 প্রপার্টি হল একটি SoC এর জন্য ভেন্ডর ইমেজের বর্তমান API লেভেল। যখন ro.board.first_api_level আছে এমন ভেন্ডর ইমেজের API লেভেল আপডেট করা হয়, তখন SoC ব্যবহার করা ডিভাইসটিকে ro.board.first_api_level আপডেট করার পরিবর্তে ভেন্ডর ইমেজের বর্তমান API লেভেলের সাথে ro.board.api_level প্রপার্টি নির্ধারণ করতে হবে। . এই প্রপার্টি সেট করা না থাকলে, ro.board.first_api_level ডিফল্টরূপে ব্যবহার করা হবে।

ro.board.api_level সেট করতে, BOARD_API_LEVEL পছন্দসই মান সহ device.mk ফাইলে সংজ্ঞায়িত করুন।

ro.vendor.api_level

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