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

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

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

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

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

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

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

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

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

sudo modprobe -a kvm tun vhost_net vhost_vsock

Android Test Station را با دستگاه های مجازی محلی راه اندازی کنید

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

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

mtt start --max_local_virtual_devices N

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

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

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

این بخش مراحل راه اندازی 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 ایجاد کنید

از آنجا که میزبان ATS از طریق SSH به میزبان راه دور متصل می شود، باید یک حساب SSH روی میزبان راه دور تهیه کنید. از آنجایی که ATS فایل های موجود در فهرست HOME را دستکاری می کند، توصیه می کنیم یک حساب اختصاصی ایجاد کنید.

میزبان ATS به یک جفت کلید SSH برای ورود به هاست راه دور بدون رمز عبور نیاز دارد. مراحل زیر نحوه تنظیم کلیدهای SSH را شرح می دهد:

  1. برای تولید یک کلید خصوصی و یک کلید عمومی، ssh-keygen در میزبان ATS اجرا کنید.
  2. کلید عمومی را به ~/.ssh/authorized_keys در میزبان راه دور آپلود و اضافه کنید.

اگر حساب SSH شما با حسابی که برای نصب وابستگی‌های Cuttlefish استفاده می‌شود متفاوت است، برای اینکه به حساب SSH اجازه راه‌اندازی Cuttlefish داده شود، این دستور را در میزبان راه دور اجرا کنید:

sudo usermod -aG kvm,cvdnetwork,render $USER

ATS را با دستگاه های مجازی راه دور شروع کنید

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

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

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

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

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

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

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

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

این فرمان قبل از شروع ATS اتصال به میزبان راه دور را آزمایش می کند. اگر پیام هشداری مانند The specified --remote_virtual_devices and --remote_ssh_key are invalid. در کنسول، باید تنظیمات SSH خود را بررسی کنید.

برای جلوگیری از تضاد منابع، یک میزبان ATS می تواند حداکثر به یک میزبان راه دور متصل شود. چندین میزبان ATS نمی توانند به طور همزمان به یک میزبان راه دور متصل شوند.

آزمایشی را با دستگاه های مجازی انجام دهید

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

دستگاه ها را انتخاب کنید

در لیست دستگاه، 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 در ATS ساخته شده است و با تمام نسخه های Cuttlefish سازگار است. URL دانلود پیش‌فرض باینری Acloud فقط برای اهداف اشکال‌زدایی باید تغییر کند.

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

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

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

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

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

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