স্বয়ংক্রিয় পরীক্ষার পরিকাঠামো

AOSP জেনেরিক সিস্টেম ইমেজ (GSI) চালিত অংশীদার ডিভাইসগুলিতে VTS, CTS, বা অন্যান্য পরীক্ষার স্বয়ংক্রিয় পরীক্ষার জন্য Android 9 একটি ভেন্ডর টেস্ট স্যুট (VTS) পরিকাঠামো অন্তর্ভুক্ত করে। পূর্বে, এই পরীক্ষাগুলি চালানো একটি অত্যন্ত ম্যানুয়াল অপারেশন ছিল; নতুন VTS পরীক্ষার পরিকাঠামো একাধিক ডিভাইসে দিনে একাধিকবার স্বয়ংক্রিয় পরীক্ষা সমর্থন করার জন্য ডিজাইন করা হয়েছে।

স্থাপত্য

VTS স্বয়ংক্রিয় পরীক্ষার অবকাঠামো নিম্নলিখিত স্থাপত্য ব্যবহার করে:

Automated test architecture

চিত্র 1. ভিটিএস স্বয়ংক্রিয় পরীক্ষার পরিকাঠামো আর্কিটেকচার

যখন একটি পরীক্ষা শুরু হয়, তখন VTS স্বয়ংক্রিয় পরীক্ষার অবকাঠামো নিম্নলিখিত কাজগুলি সম্পাদন করে:

  1. বিভিন্ন স্থান থেকে নিদর্শন এবং পরীক্ষা সম্পদ তৈরি করে:
    • পার্টনার অ্যান্ড্রয়েড বিল্ড (PAB) । জিএসআই, ভিটিএস ফ্রেমওয়ার্ক এবং অন্যান্য কিছু বিল্ডের জন্য।
    • স্থানীয় ফাইল সিস্টেম, Google ক্লাউড স্টোরেজ, বা অন্যান্য বিক্রেতা-নির্দিষ্ট বিল্ড সিস্টেম । অংশীদারদের জন্য যারা Google-এর ক্লাউডে বিল্ড সঞ্চয় করে না।
  2. ফ্ল্যাশগুলি আর্টিফ্যাক্ট (ডিভাইস থেকে) এবং জিএসআই (এওএসপি থেকে) সংযুক্ত ডিভাইসে (গুলি) তৈরি করে।
  3. ক্লাউডে স্থানীয় ট্রেডফেড বা ট্রেডফেড ব্যবহার করে VTS পরীক্ষা চালায়।
  4. VTS ড্যাশবোর্ডে পরীক্ষার ফলাফল রিপোর্ট করে

প্রক্রিয়াটি VTS হোস্ট কন্ট্রোলার (HC) দ্বারা সমন্বিত হয়, ল্যাবের একটি মেশিন যা পরীক্ষার অধীনে সমস্ত সংযুক্ত ডিভাইসের আচরণ নির্দেশ করে। সর্বশেষ বিল্ডগুলি আনা, ডিভাইসগুলিতে ফ্ল্যাশ করা এবং পরীক্ষা চালানোর জন্য (স্থানীয়ভাবে বা কমান্ডারের মাধ্যমে) HC দায়ী। এটি একটি ক্লাউড শিডিউলারের সাথেও যোগাযোগ করে এবং HC-তে চলমান শিডিউলার এবং TradeFed ইনস্ট্যান্স (বা অন্য কিছু জোতা) এর মধ্যে ট্রাফিক নির্দেশ করে। হোস্ট কন্ট্রোলারের বিস্তারিত জানার জন্য, হোস্ট কন্ট্রোলার আর্কিটেকচার দেখুন।

সম্পদ প্রদানকারী

স্বয়ংক্রিয় পরীক্ষার জন্য সিস্টেম বিল্ড, টেস্ট ফাইল এবং VTS আর্টিফ্যাক্টের মতো সংস্থান প্রয়োজন। যদিও উৎস থেকে এগুলি তৈরি করা সম্ভব, তবে নিয়মিতভাবে গাছের ডগা থেকে এগুলি তৈরি করা সহজ তারপর ডাউনলোডের জন্য নিদর্শনগুলি পোস্ট করুন৷

অংশীদাররা নিম্নলিখিত অবস্থানগুলি ব্যবহার করে অটোমেশন সংস্থানগুলি অ্যাক্সেস করতে পারে:

  • পার্টনার অ্যান্ড্রয়েড বিল্ড । প্রতি-অ্যাকাউন্টের ভিত্তিতে প্রোগ্রাম্যাটিক অ্যাক্সেস দেওয়া হয়।
  • স্থানীয় ফাইল সিস্টেম (বা অনুরূপ)। অংশীদারদের জন্য যারা পার্টনার অ্যান্ড্রয়েড বিল্ড ব্যবহার করেন না।

ডিভাইসগুলিকে পরে ফ্ল্যাশ করার জন্য ব্যবহারের জন্য, সংস্থানগুলির মধ্যে উভয় বিকল্পের জন্য বিল্ড প্রোভাইডার অন্তর্ভুক্ত রয়েছে, একটি একক build_provider.py থেকে বিস্তৃত যা স্থানীয় অস্থায়ী ডিরেক্টরিগুলিতে বিল্ডগুলি সঞ্চয় করে৷

পার্টনার অ্যান্ড্রয়েড বিল্ড

অ্যান্ড্রয়েড 8.1 এবং নিম্নতর রিলিজে, অ্যান্ড্রয়েড অংশীদারদের অংশীদার অ্যান্ড্রয়েড বিল্ড ওয়েবসাইট ( https://partner.android.com/build ) পরিদর্শন করতে হবে, তাদের অ্যাকাউন্টে নেভিগেট করতে হবে এবং ব্যবহারকারী ইন্টারফেসের মাধ্যমে সাম্প্রতিক সিস্টেমের ছবিগুলি আনতে হবে৷ অংশীদারদের এই ধীর এবং শ্রম-নিবিড় প্রক্রিয়া এড়াতে সহায়তা করার জন্য, উপযুক্ত শংসাপত্র প্রদান করা হলে Android 9 PAB থেকে এই সংস্থানগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড করার জন্য সমর্থন অন্তর্ভুক্ত করে।

অ্যাক্সেস স্থাপন করুন

প্রোগ্রাম্যাটিক অ্যাক্সেস প্রয়োজনীয় RPC অ্যাক্সেস করতে Google API-এ OAuth2 ব্যবহার করে। OAuth2 শংসাপত্র তৈরি করার জন্য আদর্শ পদ্ধতি ব্যবহার করে, অংশীদারকে অবশ্যই Google-এর সাথে একটি ক্লায়েন্ট আইডি/গোপন জোড়া সেট আপ করতে হবে। যখন PartnerAndroidBuildClient প্রথমবার সেই গোপনীয়তার দিকে নির্দেশ করা হয়, তখন এটি ব্যবহারকারীকে তাদের Google অ্যাকাউন্টে লগ ইন করার জন্য একটি ব্রাউজার উইন্ডো খোলে, যা এগিয়ে যাওয়ার জন্য প্রয়োজনীয় OAuth2 শংসাপত্র তৈরি করে। শংসাপত্রগুলি (অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন) স্থানীয়ভাবে সংরক্ষণ করা হয়, যার অর্থ অংশীদারদের শুধুমাত্র একবার লগইন করতে হবে।

URL-এর জন্য অনুরোধ পোস্ট করুন

PAB-তে একটি রিসোর্স লিঙ্কে ক্লিক করলে একটি POST অনুরোধ পাঠানো হয় যাতে সেই রিসোর্সের জন্য প্রয়োজনীয় ডেটা অন্তর্ভুক্ত থাকে, যার মধ্যে রয়েছে:

  • বিল্ড আইডি, বিল্ড টার্গেট
  • সম্পদের নাম
  • শাখা
  • প্রার্থীর নাম প্রকাশ করুন এবং প্রার্থী একটি অভ্যন্তরীণ বিল্ড কিনা

POST অনুরোধটি buildsvc RPC-এর downloadBuildArtifact পদ্ধতি দ্বারা গৃহীত হয়, যা একটি URL প্রদান করে যা সম্পদ অ্যাক্সেস করতে ব্যবহার করা যেতে পারে।

  • Clockwork Companion APK রিসোর্সের জন্য, URL হল PAB-তে হোস্ট করা একটি পঠনযোগ্য URL (যা প্রমাণীকরণ-সুরক্ষিত এবং উপযুক্ত OAuth2 শংসাপত্রের সাথে অ্যাক্সেসযোগ্য)।
  • অন্যান্য সংস্থানগুলির জন্য, অভ্যন্তরীণ অ্যান্ড্রয়েড বিল্ড API থেকে URLটি দীর্ঘ, অ-সুরক্ষিত URL (যা পাঁচ মিনিটের পরে মেয়াদ শেষ হয়ে যায়)৷

URL পান

ক্রস-সাইট অনুরোধ জালিয়াতি এড়াতে, buildsvc RPC-এর জন্য একটি XSRF টোকেন অন্যান্য প্যারামিটারের সাথে পোস্ট করা প্রয়োজন। যদিও এই টোকেন প্রক্রিয়াটিকে আরও সুরক্ষিত করে তোলে, এটি প্রোগ্রামেটিক অ্যাক্সেসকে আরও কঠিন করে তোলে কারণ টোকেনটি (যা শুধুমাত্র PAB পৃষ্ঠার জাভাস্ক্রিপ্টে উপলব্ধ) এখন অ্যাক্সেসের জন্যও প্রয়োজনীয়।

এই সমস্যাটি এড়াতে, অ্যান্ড্রয়েড 9 সমস্ত ফাইলের জন্য ইউআরএল নেমিং স্কিমটি পুনরায় ডিজাইন করে (শুধু এপিকে নয়) আর্টিফ্যাক্ট তালিকা এবং আর্টিফ্যাক্ট ইউআরএল অ্যাক্সেস করার জন্য অনুমানযোগ্য URL নাম ব্যবহার করতে। PAB এখন একটি সুবিধাজনক URL বিন্যাস ব্যবহার করে যা অংশীদারদের সম্পদ ডাউনলোড করতে সক্ষম করে; HC স্ক্রিপ্টগুলি সহজেই সেই APKগুলি ডাউনলোড করতে পারে, যেহেতু URL ফর্ম্যাটটি পরিচিত, এবং HC XSRF/কুকি সমস্যাগুলিকে বাইপাস করতে পারে কারণ এটির জন্য buildsvc RPC-এর প্রয়োজন নেই৷

স্থানীয় ফাইল সিস্টেম

আর্টিফ্যাক্টগুলির একটি তালিকা (বা জিপ ফাইল) সহ একটি ডিরেক্টরি প্রদত্ত, বিল্ড প্রদানকারী ডিরেক্টরিতে কী রয়েছে তার উপর ভিত্তি করে প্রাসঙ্গিক চিত্রগুলি সেট করে। আপনি Google ক্লাউড স্টোরেজ থেকে স্থানীয় ডিরেক্টরিতে ফাইল কপি করতে gsutil টুল ব্যবহার করতে পারেন।

ফ্ল্যাশ তৈরি করে

সাম্প্রতিক ডিভাইসের ছবিগুলি হোস্টে ডাউনলোড করার পরে, সেই ছবিগুলিকে অবশ্যই ডিভাইসগুলিতে ফ্ল্যাশ করতে হবে৷ এটি স্ট্যান্ডার্ড adb এবং fastboot কমান্ড এবং পাইথন সাবপ্রসেস ব্যবহার করে করা হয়, বিল্ড প্রদানকারীদের দ্বারা সংরক্ষিত অস্থায়ী ফাইল পাথের উপর ভিত্তি করে।

সমর্থিত কর্ম:

  • শুধুমাত্র জিএসআই ফ্ল্যাশ করছে
  • প্রধান সিস্টেম থেকে পৃথক ছবি ফ্ল্যাশ করা (যেমন, fastboot flash boot boot.img )
  • মূল সিস্টেম থেকে সমস্ত ছবি ফ্ল্যাশ করা হচ্ছে। উদাহরণ:
    • fastboot flashall (বিল্ট-ইন flashall ইউটিলিটি ব্যবহার করে)
    • fastboot flash (এক সময়ে এক)

পরীক্ষা চালান

অ্যান্ড্রয়েড 9-এ, VTS স্বয়ংক্রিয় পরীক্ষার পরিকাঠামো শুধুমাত্র TradeFed পরীক্ষার জোতা সমর্থন করে কিন্তু ভবিষ্যতে অন্যান্য জোতা সমর্থন করার জন্য প্রসারিত করা যেতে পারে।

ডিভাইসগুলি প্রস্তুত হওয়ার পরে, আপনি নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে পরীক্ষা শুরু করতে পারেন:

  • স্থানীয়ভাবে TradeFed ব্যবহার করার সময়, হোস্ট কন্ট্রোলারে test কমান্ডটি ব্যবহার করুন, যা একটি VTS পরীক্ষা পরিকল্পনার নাম নেয় (যেমন vts-selftest ) এবং পরীক্ষা চালায়।
  • ট্রেডফেড ক্লাস্টার ব্যবহার করার সময় (ঐচ্ছিকভাবে MTT এর সাথে সংযুক্ত), হোস্ট কন্ট্রোলার কনসোলে lease কমান্ডটি ব্যবহার করুন, যা অসম্পূর্ণ পরীক্ষা চালানোর জন্য দেখায়।

TradeFedCluster ব্যবহার করলে, TradeFed দূরবর্তী ব্যবস্থাপক হিসেবে স্থানীয়ভাবে চলে। যদি তা না হয়, পাইথন সাবপ্রসেস ব্যবহার করে পরীক্ষাগুলি আহ্বান করা হয়।

রিপোর্ট ফলাফল

VtsMultiDeviceTest দ্বারা কিছু VTS ড্যাশবোর্ড প্রকল্পে পরীক্ষার ফলাফল স্বয়ংক্রিয়ভাবে রিপোর্ট করা হয়।