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

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

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

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

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

স্থানীয় ভার্চুয়াল ডিভাইস সেট আপ করুন

এই অংশে স্থানীয় ভার্চুয়াল ডিভাইসগুলির জন্য OmniLab ATS সেট আপ করার ধাপগুলি বর্ণনা করা হয়েছে।

কাটলফিশ নির্ভরতা ইনস্টল করুন

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

sudo modprobe -a kvm tun vhost_net vhost_vsock

স্থানীয় ভার্চুয়াল ডিভাইসগুলির সাথে OmniLab ATS শুরু করুন

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

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

mtt start --max_local_virtual_devices N

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

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

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

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

কাটলফিশ নির্ভরতা ইনস্টল করুন

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

  1. Cuttlefish > Get started- এ দেওয়া ধাপগুলো অনুসরণ করে রিমোট হোস্টে ডেবিয়ান প্যাকেজগুলো ইনস্টল করুন।

  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. প্রাইভেট কী এবং পাবলিক কী তৈরি করতে, OmniLab ATS হোস্টে ssh-keygen চালান।
  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 ইনস্ট্যান্স বন্ধ করার বিষয়ে বিস্তারিত জানতে, "Stop Cuttlefish" দেখুন।

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

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

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

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

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

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

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 ফরম্যাটে দেখানো হয়। এগুলোর স্টেট হয় Available অথবা AllocatedAvailable স্টেটে থাকা একটি প্লেসহোল্ডার নির্দেশ করে যে ভার্চুয়াল ডিভাইসটি চালু নেই এবং পরীক্ষার জন্য এটিকে বরাদ্দ করা যেতে পারে।

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

চিত্র ১. ভার্চুয়াল ডিভাইস নির্বাচন করা

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

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

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

চিত্র ২. স্থানীয় ভার্চুয়াল ডিভাইসগুলির জন্য ডিভাইস অ্যাকশন

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

চিত্র ৩. দূরবর্তী ভার্চুয়াল ডিভাইসগুলির জন্য ডিভাইস কার্যক্রম

পরীক্ষার রিসোর্স সেট করুন

Cuttlefish ভার্চুয়াল ডিভাইসগুলির জন্য তিনটি টেস্ট রিসোর্সের প্রয়োজন হয়: ভার্চুয়াল মেশিন টুলস, ইমেজ এবং Acloud । একটি সাধারণ Cuttlefish বিল্ডে (উদাহরণস্বরূপ, ci.android.com- এ থাকা aosp_cf_x86_64_only_phone-userdebug ), ভার্চুয়াল মেশিন টুলসগুলি 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 সহ ডিভাইসের লগগুলো আউটপুট ফাইল ফোল্ডারে সংগ্রহ করা হয়। সেগুলো দেখতে ‘View Output Files’-এ ক্লিক করুন।

পরীক্ষামূলক চালনার ফলাফল

চিত্র ৫. পরীক্ষামূলক চালনার ফলাফল