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

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

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

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

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

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

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

نصب وابستگی‌های Cuttlefish

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

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

برای نصب وابستگی‌های Cuttlefish، این مراحل را دنبال کنید.

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

  2. با دنبال کردن این مراحل، حداکثر تعداد دستگاه‌های مجازی روی میزبان راه دور را پیکربندی کنید:

    1. فایل /etc/default/cuttlefish-host-resources با دسترسی root ویرایش کنید.
    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، به 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 مسیر کلید خصوصی 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) هستند یا تخصیص‌یافته (Allocated) . وجود متغیر در وضعیت موجود (Available) نشان می‌دهد که دستگاه مجازی در حال اجرا نیست و می‌تواند برای آزمایش اختصاص داده شود.

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

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

افزودن اقدامات دستگاه

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

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

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

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

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

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

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

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

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

مشاهده‌ی تست‌های اجرا شده

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

نتایج اجرای تست

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