এই বিভাগটি বোঝার জন্য, প্রথমে Tradefed @Option অধ্যয়ন করুন।
Tradefed-এ সাধারণ বিকল্পগুলি পরীক্ষা ক্লাসের জন্য XML কনফিগারেশন বা কমান্ড লাইন থেকে অতিরিক্ত তথ্য পেতে অনুমতি দেয়। এই বৈশিষ্ট্যটি আপনাকে একটি অতিরিক্ত ধাপে যেতে এবং প্রয়োজনে এই অতিরিক্ত তথ্যের কিছু সমাধান করতে দেয়।
ফাইল বিকল্প উদাহরণ
উদাহরণ ফাইল @ বিকল্প:
@Option(name = 'config-file')
private File mConfigFile;
উপরের XML কনফিগারেশনের মাধ্যমে সেট করা যেতে পারে:
<option name="config-file" value="/tmp/file" />
বা কমান্ডের মাধ্যমে:
--config-file /tmp/file
বর্ণনা
বৈশিষ্ট্যটি আপনাকে ব্যবহারকারীর দৃষ্টিকোণ থেকে নির্বিঘ্নে উপলব্ধ করার জন্য স্থানীয় ফাইলে দূরবর্তী ফাইল-টাইপ করা @ বিকল্পগুলি সমাধান করতে দেয়।
এটি কাজ করার জন্য, ফাইলটিকে একটি দূরবর্তী শৈলী পাথ দিয়ে নির্দিষ্ট করতে হবে। যেমন:
--config-file gs://bucket/tmp/file
এই পথটি Google ক্লাউড স্টোরেজ (GCS) বাকেটের মধ্যে একটি ফাইলকে নির্দেশ করে যেখানে এটি সংরক্ষণ করা হয়। সেই দূরবর্তী পথটি দেখে ট্রেডফেড করা হবে, স্থানীয়ভাবে ফাইলটি ডাউনলোড করার চেষ্টা করবে এবং এটিকে @Option-এ বরাদ্দ করবে। এর ফলে mConfigFile
ভেরিয়েবল এখন ফাইলের স্থানীয় সংস্করণের দিকে নির্দেশ করে, যা পরীক্ষার মাধ্যমে ব্যবহার করা যেতে পারে।
যদি কোনো কারণে রিমোট ফাইল ডাউনলোড করা না যায়, তাহলে Tradefed একটি ConfigurationException
নিক্ষেপ করবে যা পরীক্ষাটি চালানো থেকে বাধা দেবে। আমরা সেই ফাইলগুলি হারিয়ে যাওয়াকে একটি গুরুতর ব্যর্থতা বলে মনে করি কারণ কিছু পরীক্ষা নিদর্শনও অনুপস্থিত হবে৷
ক্যোয়ারী প্যারামিটার ব্যবহার করুন
একটি URL-এ ক্যোয়ারী প্যারামিটার যোগ করা কি ব্যবহার করে সম্ভব ?
. উদাহরণস্বরূপ, gs://bucket/path?unzip=true
। কী/মান unzip=true
IRemoteFileResolver ইন্টারফেস বাস্তবায়নে উপলব্ধ হবে।
দুটি অন্তর্নির্মিত আচরণ উপলব্ধ:
- আনজিপ: যদি
true
সেট করা হয় এবং ডাউনলোড করা ফাইলটি একটি জিপ হয়, তাহলে এটি স্বয়ংক্রিয়ভাবে একটি অস্থায়ী অবস্থানে আনজিপ হয়ে যাবে। উদাহরণ:?unzip=true
- ঐচ্ছিক: ডিফল্ট থেকে
false
। যদিtrue
সেট করা হয় এবং রেজোলিউশন ব্যর্থ হয় তবে এটি একটি ব্যতিক্রম নিক্ষেপ করবে না এবং কেবল ফাইলটি প্রতিস্থাপন করবে না। উদাহরণ:?optional=true
এছাড়াও আপনি --dynamic-download-args key=value
এর মাধ্যমে গ্লোবাল কোয়েরি আর্গুমেন্ট পাস করতে পারেন যা আমন্ত্রণে প্রয়াস করা সমস্ত ডাইনামিক ডাউনলোডে কী/মান পাস করবে।
সমর্থিত প্রোটোকল
আনুষ্ঠানিকভাবে সমর্থিত প্রোটোকল এবং তাদের সংশ্লিষ্ট ফর্ম্যাটগুলি হল:
- Google ক্লাউড স্টোরেজ, প্রোটোকল:
gs
, বিন্যাস:gs://<bucket name>/path
- স্থানীয় ফাইল, প্রোটোকল:
file
, বিন্যাস:file:/local/path
- http লিঙ্ক, প্রোটোকল:
http
, বিন্যাস:http://url
- https লিঙ্ক, প্রোটোকল:
https
, বিন্যাস:https://url
সীমাবদ্ধতা
@Option-এর গতিশীল রেজোলিউশন বর্তমানে শুধুমাত্র সীমিত সংখ্যক প্রোটোকল এবং অবস্থান থেকে ডাউনলোড করতে সমর্থন করে। @Option-এর রেজোলিউশন বর্তমানে শুধুমাত্র প্রধান XML Tradefed কনফিগারেশনের জন্য সক্ষম।
স্যুট হিসাবে চললে, বর্তমান মডিউলগুলি ( AndroidTest.xml
) ডিফল্টরূপে ফাইলগুলির সমাধান করবে না৷ এটি কিছু অজানা নির্ভরতা তৈরি করা থেকে মডিউলগুলিকে প্রতিরোধ করার উদ্দেশ্যে করা হয়েছে । স্যুট লেভেলে --enable-module-dynamic-download
ব্যবহার করে এটি এড়িয়ে যেতে পারে, কিন্তু প্রধান স্যুট যেমন কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) এবং Vendor Test Suite (VTS) এটি সক্ষম করবে না।
একটি নতুন প্রোটোকল বাস্তবায়ন করুন
সমর্থিত প্রোটোকলগুলির IRemoteFileResolver ইন্টারফেসের Tradefed-এ একটি বাস্তবায়ন রয়েছে, যা প্রোটোকলের সংক্ষিপ্ত ট্যাগকে সংজ্ঞায়িত করে যা getSupportedProtocol
এর মাধ্যমে ফাইল পাথে মিলিত হবে। উদাহরণস্বরূপ, gs
Google ক্লাউড স্টোরেজ প্রোটোকলের জন্য ব্যবহৃত হয়। বাস্তবায়নের জন্য প্রস্তাবিত ইন্টারফেস হল #resolveRemoteFiles(RemoteFileResolverArgs)
যা দীর্ঘমেয়াদী রক্ষণাবেক্ষণ করা ইন্টারফেস হবে।
আনুষ্ঠানিকভাবে সমর্থন চালু করার জন্য বাস্তবায়িত প্রোটোকলগুলি META-INF পরিষেবার ফাইলে যোগ করা যেতে পারে।