دستگاه های مجازی در OmniLab ATS

OmniLab ATS از دستگاه‌های مجازی Cuttlefish پشتیبانی می‌کند که به شما امکان می‌دهند بدون دستگاه‌های فیزیکی اندروید آزمایش‌ها را اجرا کنید. ساقه ماهی برای آزمایش عملکردهای مستقل از سخت افزار مناسب است. قبل از شروع به استفاده از دستگاه های مجازی، راهنمای کاربر را برای نصب OmniLab ATS دنبال کنید.

OmniLab ATS از دستگاه های مجازی در دو حالت محلی و راه دور پشتیبانی می کند. جدول زیر مقایسه ای از دو حالت را ارائه می دهد.

دستگاه های مجازی محلی دستگاه های مجازی از راه دور
روی میزبان های کارگر ATS اجرا می شود روی هاست های راه دور اجرا می شود که میزبان های کارگر ATS می توانند از طریق SSH به آنها دسترسی داشته باشند
مبتنی بر x86 بسته به معماری هاست می تواند x86 یا ARM باشد
راه اندازی راحت تر راه اندازی پیچیده تر است

دستگاه های مجازی محلی و راه دور را می توان به طور مستقل فعال کرد. برای جزئیات بیشتر در مورد هر حالت، نگاه کنید به:

دستگاه های مجازی محلی را راه اندازی کنید

این بخش مراحل راه اندازی OmniLab ATS را برای دستگاه های مجازی محلی شرح می دهد.

وابستگی های Cuttlefish را نصب کنید

دستور زیر را اجرا کنید تا مطمئن شوید که ماژول های هسته لازم بارگذاری شده اند:

sudo modprobe -a kvm tun vhost_net vhost_vsock

OmniLab ATS را با دستگاه های مجازی محلی راه اندازی کنید

قبل از شروع OmniLab ATS، مطمئن شوید که تمام نمونه های Cuttlefish متوقف شده اند. OmniLab ATS به طور خودکار دستگاه های مجازی را در طول چرخه آزمایش راه اندازی و متوقف می کند، و نمونه های Cuttlefish موجود با نمونه های مدیریت شده توسط OmniLab ATS در تضاد هستند. برای جزئیات بیشتر در مورد توقف نمونه‌های سگ‌ماهی، به توقف کوتلفیش مراجعه کنید.

برای فعال کردن دستگاه های مجازی محلی، اجرا کنید:

mtt start --max_local_virtual_devices N

N حداکثر تعداد دستگاه های مجازی است که OmniLab ATS می تواند به طور همزمان اختصاص دهد. عدد پیش فرض 0 است.

اگر دستور به دلیل از دست دادن گره های دستگاه با شکست مواجه شد، مراحل موجود در پیام خطا را برای بارگیری ماژول های هسته دنبال کنید. اگر همچنان خراب شد، دستگاه را مجددا راه اندازی کنید.

دستگاه های مجازی راه دور را راه اندازی کنید

این بخش مراحل راه اندازی OmniLab ATS را برای دستگاه های مجازی راه دور توضیح می دهد.

وابستگی های Cuttlefish را نصب کنید

برای نصب Dependencies Cuttlefish مراحل زیر را دنبال کنید.

  1. بسته‌های Debian را روی میزبان راه دور با دنبال کردن مراحل در Cuttlefish > Get start نصب کنید.

  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 در تضاد هستند. برای جزئیات بیشتر در مورد توقف نمونه‌های سگ‌ماهی، به توقف کوتلفیش مراجعه کنید.

برای عملکرد بهتر، توصیه می کنیم میزبان OmniLab ATS و میزبان راه دور را در یک شبکه محلی راه اندازی کنید.

برای فعال کردن دستگاه های مجازی راه دور، این دستور را در میزبان OmniLab ATS اجرا کنید:

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

USER نام حساب SSH است.

HOST آدرس IPv4 میزبان راه دور است.

N حداکثر تعداد دستگاه های مجازی است که OmniLab ATS می تواند به طور همزمان اختصاص دهد.

KEY مسیر کلید خصوصی SSH در میزبان OmniLab ATS است.

این فرمان قبل از شروع 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 نشان می دهد که دستگاه مجازی در حال اجرا نیست و می توان آن را برای آزمایش اختصاص داد.

Virtual Devices را انتخاب کنید

شکل 1. انتخاب دستگاه های مجازی

اقدامات دستگاه را اضافه کنید

اگر حداقل یک دستگاه مجازی را انتخاب کنید، عملکرد دستگاه مرتبط باید به طور خودکار به لیست اضافه شود. این اقدام شامل پارامترهای TradeFed و منابع آزمایشی مورد نیاز برای ایجاد دستگاه های مجازی است.

اقدامات دستگاه مجازی محلی

شکل 2. اقدامات دستگاه برای دستگاه های مجازی محلی

اقدامات دستگاه مجازی از راه دور

شکل 3. اقدامات دستگاه برای دستگاه های مجازی راه دور

منابع آزمون را تنظیم کنید

دستگاه‌های مجازی Cuttlefish به سه منبع آزمایشی نیاز دارند، ابزارهای ماشین مجازی، تصاویر و Acloud . در یک ساخت معمولی Cuttlefish (به عنوان مثال، aosp_cf_x86_64_phone در ci.android.com )، ابزارهای ماشین مجازی در cvd-host_package.tar.gz و تصاویر در aosp_cf_x86_64_phone-img-*.zip هستند. باینری Acloud در OmniLab ATS ساخته شده است و با تمام نسخه های Cuttlefish سازگار است. URL دانلود پیش‌فرض باینری Acloud فقط برای اهداف اشکال‌زدایی باید تغییر کند.

منابع تست دستگاه مجازی

شکل 4. منابع تست برای دستگاه های مجازی

مشاهده اجراهای آزمایشی

گزارش‌های دستگاه، از جمله kernel.log ، host_log.txt ، و launcher.log در پوشه فایل خروجی جمع‌آوری می‌شوند. برای مشاهده آنها روی View Output Files کلیک کنید.

نتایج اجرای آزمایشی

شکل 5. نتایج اجرای آزمایشی