OmniLab ATS-এ ভার্চুয়াল ডিভাইস

OmniLab ATS Cuttlefish ভার্চুয়াল ডিভাইস সাপোর্ট করে যা আপনাকে ফিজিক্যাল Android ডিভাইস ছাড়াই টেস্ট রান করতে দেয়। Cuttlefish, হার্ডওয়্যার-নিরপেক্ষ ফাংশন পরীক্ষা করার জন্য উপযুক্ত। ভার্চুয়াল ডিভাইস ব্যবহার শুরু করার আগে, OmniLab ATS ইনস্টল করতে ব্যবহারকারীর নির্দেশিকা অনুসরণ করুন।

OmniLab ATS তিনটি মোডে ভার্চুয়াল ডিভাইস সাপোর্ট করে: লোকাল, রিমোট ও ক্লাউড অর্কেস্ট্রেশন। নিচে দেওয়া সারণীতে মোডগুলির মধ্যে তুলনা করা হয়েছে।

স্থানীয় ভার্চুয়াল ডিভাইসরিমোট ভার্চুয়াল ডিভাইসক্লাউড অর্কেস্ট্রেশন
ATS ওয়ার্কার হোস্টের উপর রান করেরিমোট হোস্টে রান করে যা ATS ওয়ার্কার হোস্ট SSH-এর মাধ্যমে অ্যাক্সেস করতে পারেCloud Orchestrator-এর ম্যানেজ করা লোকাল বা রিমোট হোস্টে রান করে
x86-ভিত্তিকহোস্ট আর্কিটেকচারের উপর নির্ভর করে x86 বা ARM হতে পারে হোস্ট আর্কিটেকচারের উপর নির্ভর করে x86 বা ARM হতে পারে
সেট-আপ করা আরও সহজসেট-আপ করা আরও জটিলউচ্চ-পারফর্ম্যান্স, স্কেলেবল, সমান্তরাল ইনস্ট্যান্স লঞ্চ করার সুবিধা প্রদান করে

আপনি লোকাল ও রিমোট ভার্চুয়াল ডিভাইস মোড আলাদা আলাদাভাবে চালু করতে পারবেন। বিকল্প হিসেবে, আপনি ক্লাউড অর্কেস্ট্রেশন চালু করতে পারেন, যা একটি আধুনিক বিকল্প হিসেবে কাজ করে এবং দুটি মোডেই সম্পূর্ণ ফিচার প্যারিটি প্রদান করে। এছাড়াও, এটি প্যারালাল ইনস্ট্যান্স লঞ্চ করা এবং আরও ভালো রিসোর্স আইসোলেশনের মতো গুরুত্বপূর্ণ সুবিধাও প্রদান করে। প্রতিটি মোড সম্পর্কে বিস্তারিত জানতে, দেখুন:

লোকাল ভার্চুয়াল ডিভাইস সেট-আপ করা

এই বিভাগে, লোকাল ভার্চুয়াল ডিভাইসের জন্য OmniLab ATS সেট-আপ করার ধাপগুলি বর্ণনা করা হয়েছে।

Cuttlefish-এর ডিপেন্ডেন্সি ইনস্টল করা

প্রয়োজনীয় কার্নেল মডিউল লোড করা হয়েছে কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ড রান করুন:

sudo modprobe -a kvm tun vhost_net vhost_vsock

লোকাল ভার্চুয়াল ডিভাইস দিয়ে OmniLab ATS শুরু করা

OmniLab ATS শুরু করার আগে, সব Cuttlefish ইনস্ট্যান্স বন্ধ আছে কিনা তা নিশ্চিত করুন। পরীক্ষা চক্র চলাকালীন OmniLab ATS অটোমেটিক ভার্চুয়াল ডিভাইস লঞ্চ ও বন্ধ করে এবং আগে থেকে থাকা Cuttlefish ইনস্ট্যান্স, OmniLab ATS-এর ম্যানেজ করা ইনস্ট্যান্সের সাথে সংঘাত ঘটায়। Cuttlefish ইনস্ট্যান্স বন্ধ করার ব্যাপারে আরও জানতে, Cuttlefish বন্ধ করুন দেখুন।

লোকাল ভার্চুয়াল ডিভাইস চালু করতে, এগুলি রান করান:

mtt start --max_local_virtual_devices N

OmniLab ATS একসাথে সর্বাধিক Nটি ভার্চুয়াল ডিভাইস অ্যালোকেট করতে পারে। ডিফল্ট সংখ্যা হল ০।

ডিভাইস নোড না থাকার কারণে কমান্ড কাজ না করলে, কার্নেল মডিউল লোড করতে ত্রুটি মেসেজে উল্লেখ করা ধাপগুলি অনুসরণ করুন। এটি কাজ না করলে, মেশিনটি রিবুট করুন।

রিমোট ভার্চুয়াল ডিভাইস সেট-আপ করা

এই বিভাগে রিমোট ভার্চুয়াল ডিভাইসের জন্য OmniLab ATS সেট-আপ করার ধাপগুলি বর্ণনা করা হয়েছে।

Cuttlefish ডিপেন্ডেন্সি ইনস্টল করুন

Cuttlefish ডিপেন্ডেন্সি ইনস্টল করতে, এই ধাপগুলি অনুসরণ করুন।

  1. Cuttlefish > শুরু করা যাক লিঙ্কে দেওয়া ধাপগুলি অনুসরণ করে রিমোট হোস্টে Debian প্যাকেজ ইনস্টল করুন।

  2. এইসব ধাপ অনুসরণ করে রিমোট হোস্টে ভার্চুয়াল ডিভাইসের সর্বাধিক সংখ্যা কনফিগার করুন:

    1. রুট বিশেষ অধিকার সহ /etc/default/cuttlefish-host-resources এডিট করুন।
    2. এই হোস্টে সর্বাধিক সংখ্যক ভার্চুয়াল ডিভাইসকে অনুমতি দিতে num_cvd_accounts সেট করুন।
    3. রান sudo systemctl restart cuttlefish-host-resources
    4. ifconfig রান করান এবং cvd-wtap-* ইন্টারফেসের সংখ্যা যাচাই করুন।

SSH অ্যাকাউন্ট তৈরি করুন

যেহেতু OmniLab ATS হোস্ট SSH-এর মাধ্যমে রিমোট হোস্টের সাথে কানেক্ট করে, তাই আপনাকে অবশ্যই রিমোট হোস্টে একটি SSH অ্যাকাউন্ট তৈরি করতে হবে। OmniLab ATS যেহেতু HOME ডিরেক্টরির ফাইলগুলি ম্যানিপুলেট করে, তাই আমরা আপনাকে একটি ডেডিকেটেড অ্যাকাউন্ট তৈরি করার পরামর্শ দিই।

পাসওয়ার্ড ছাড়াই রিমোট হোস্টে লগ-ইন করতে OmniLab ATS হোস্টের একটি SSH কী পেয়ার প্রয়োজন হয়। SSH কী কীভাবে সেট-আপ করতে হয় তা নিম্নলিখিত ধাপগুলি থেকে জানতে পারবেন:

  1. ব্যক্তিগত কী ও সর্বজনীন কী জেনারেট করতে, ssh-keygen OmniLab ATS হোস্টে চালান।
  2. ~/.ssh/authorized_keys রিমোট হোস্টে পাবলিক কী আপলোড ও যোগ করুন।

আপনার SSH অ্যাকাউন্ট যদি Cuttlefish ডিপেন্ডেন্সি ইনস্টল করার জন্য ব্যবহৃত অ্যাকাউন্টের থেকে আলাদা হয়, তাহলে SSH অ্যাকাউন্টকে Cuttlefish চালু করার অনুমতি দিতে, রিমোট হোস্টে এই কমান্ডটি চালান:

sudo usermod -aG kvm,cvdnetwork,render $USER

রিমোট ভার্চুয়াল ডিভাইস দিয়ে OmniLab ATS শুরু করা

OmniLab ATS শুরু করার আগে, সব Cuttlefish ইনস্ট্যান্স বন্ধ আছে কিনা তা নিশ্চিত করুন। OmniLab ATS টেস্ট সাইকেল চলাকালীন ভার্চুয়াল ডিভাইস অটোমেটিক চালু ও বন্ধ করে এবং আগে থেকে থাকা Cuttlefish ইনস্ট্যান্স, OmniLab ATS-এর ম্যানেজ করা ইনস্ট্যান্সের সাথে কনফ্লিক্ট করে। Cuttlefish ইনস্ট্যান্স বন্ধ করার ব্যাপারে আরও জানতে, Cuttlefish বন্ধ করুন দেখুন।

আরও ভালো পারফর্ম্যান্সের জন্য, আমরা লোকাল এরিয়া নেটওয়ার্কে OmniLab ATS হোস্ট ও রিমোট হোস্ট সেট-আপ করার সাজেশন দিই।

রিমোট ভার্চুয়াল ডিভাইস চালু করতে, OmniLab ATS হোস্টে এই কমান্ড রান করুন:

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER হল SSH অ্যাকাউন্টের নাম।

HOST হল রিমোট হোস্টের IPv4 অ্যাড্রেস।

OmniLab ATS একসাথে সর্বাধিক Nটি ভার্চুয়াল ডিভাইস অ্যালোকেট করতে পারে।

KEY হল OmniLab ATS হোস্টে প্রাইভেট SSH কী-এর পাথ।

OmniLab ATS শুরু করার আগে কমান্ডটি রিমোট হোস্টের সাথে কানেকশন পরীক্ষা করে। কনসোলে যদি এই ধরনের কোনও সতর্কতামূলক মেসেজ দেখানো হয় The specified --remote_virtual_devices and --remote_ssh_key are invalid. তাহলে আপনার SSH সেট-আপ চেক করে নেওয়া উচিত।

রিসোর্স সংক্রান্ত সমস্যা এড়াতে, একটি OmniLab ATS হোস্ট সর্বাধিক একটি রিমোট হোস্টের সাথে কানেক্ট করতে পারে। একাধিক OmniLab ATS হোস্ট একই সময়ে একটি রিমোট হোস্টের সাথে কানেক্ট করতে পারবে না।

ভার্চুয়াল ডিভাইস দিয়ে পরীক্ষা চালান

এই বিভাগে লোকাল বা রিমোট ভার্চুয়াল ডিভাইসে টেস্ট চালানোর ধাপগুলি বর্ণনা করা হয়েছে।

ডিভাইসগুলি বেছে নিন

ডিভাইসের তালিকায়, OmniLab ATS ভার্চুয়াল ডিভাইসকে প্লেসহোল্ডার হিসেবে দেখায়, সেগুলির আসল সিরিয়াল নম্বর দেখায় না। স্থানীয় ভার্চুয়াল ডিভাইসের জন্য প্লেসহোল্ডারগুলি HOSTNAME:local-virtual-device-ID ফর্ম্যাটে দেখানো হয়; রিমোট ভার্চুয়াল ডিভাইসের জন্য remote-virtual-ADDRESS-ID ফর্ম্যাটে দেখানো হয়। স্টেটগুলি হয় উপলভ্য অথবা অ্যালোকেট করা। উপলভ্য স্টেটে থাকা প্লেসহোল্ডার থেকে বোঝা যায় যে ভার্চুয়াল ডিভাইসটি চলছে না এবং এটি পরীক্ষার জন্য বরাদ্দ করা যেতে পারে।

ভার্চুয়াল ডিভাইস বেছে নিন

ছবি ১. ভার্চুয়াল ডিভাইস বেছে নেওয়া

ডিভাইস অ্যাকশন যোগ করুন

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

লোকাল ভার্চুয়াল ডিভাইস অ্যাকশন

ছবি ২. লোকাল ভার্চুয়াল ডিভাইসের জন্য ডিভাইস অ্যাকশন

রিমোট ভার্চুয়াল ডিভাইস অ্যাকশন

ছবি ৩. রিমোট ভার্চুয়াল ডিভাইসের জন্য ডিভাইস অ্যাকশন

টেস্ট রিসোর্স সেট করা

Cuttlefish ভার্চুয়াল ডিভাইসের জন্য তিনটি টেস্ট রিসোর্স, ভার্চুয়াল মেশিন টুল, ছবি এবং Acloud প্রয়োজন। সাধারণত Cuttlefish বিল্ডে (যেমন, aosp_cf_x86_64_only_phone-userdebug on ci.android.com ), ভার্চুয়াল মেশিন টুল cvd-host_package.tar.gz-এ এবং ইমেজ aosp_cf_x86_64_only_phone-img-*.zip-এ থাকে। Acloud বাইনারি OmniLab ATS-এ তৈরি করা হয় এবং এটি Cuttlefish-এর সব ভার্সনের সাথে মানানসই। Acloud বাইনারির ডিফল্ট ডাউনলোড URL শুধুমাত্র ডিবাগিং উদ্দেশ্যের জন্য পরিবর্তন করতে হবে।

ভার্চুয়াল ডিভাইস টেস্ট রিসোর্স

ছবি ৪. ভার্চুয়াল ডিভাইসের জন্য টেস্ট রিসোর্স

টেস্ট রান দেখুন

kernel.log, host_log.txt ও launcher.log সহ ডিভাইস লগ আউটপুট ফাইল ফোল্ডারে সংগ্রহ করা হয়। সেগুলি দেখতে আউটপুট ফাইল দেখুন বিকল্পে ক্লিক করুন।

টেস্ট রান ফলাফল

ছবি ৫. টেস্ট রান ফলাফল