OmniLab ATS از دستگاههای مجازی Cuttlefish پشتیبانی میکند که به شما امکان میدهد بدون دستگاههای فیزیکی Android آزمایش اجرا کنید. Cuttlefish برای آزمایش کارکردهای مستقل از سختافزار مناسب است. قبلاز شروع استفاده از دستگاههای مجازی، برای نصب OmniLab ATS، راهنمای کاربر را دنبال کنید.
OmniLab ATS از دستگاههای مجازی در سه حالت پشتیبانی میکند: محلی، ازراهدور، و Cloud Orchestration. جدول زیر مقایسهای از این حالتها ارائه میدهد.
| دستگاههای مجازی محلی | دستگاههای مجازی از راه دور | Cloud Orchestration |
|---|---|---|
| در میزبانهای کارگر 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 NN حداکثر تعداد دستگاههای مجازی است که OmniLab ATS میتواند بهطور همزمان اختصاص دهد. عدد پیشفرض ۰ است.
اگر فرمان بهدلیل نبود گرههای دستگاه ناموفق بود، مراحل موجود در پیام خطا را برای بار کردن واحدهای هسته دنبال کنید. اگر همچنان ناموفق بود، ماشین را بازراهاندازی کنید.
راهاندازی دستگاههای مجازی از دور
این بخش مراحل راهاندازی OmniLab ATS را برای دستگاههای مجازی ازراهدور شرح میدهد.
نصب وابستگیهای Cuttlefish
برای نصب وابستگیهای Cuttlefish، این مراحل را دنبال کنید.
با دنبال کردن مراحل در Cuttlefish > شروع به کار، بستههای Debian را در میزبان از دور نصب کنید.
با دنبال کردن این مراحل، حداکثر تعداد دستگاههای مجازی را در میزبان راه دور پیکربندی کنید:
-
/etc/default/cuttlefish-host-resourcesرا با امتیاز ریشه ویرایش کنید. -
num_cvd_accountsرا روی حداکثر تعداد دستگاههای مجازی تنظیم کنید تا در این میزبان مجاز شوند. -
sudo systemctl restart cuttlefish-host-resourcesرا اجرا کنید. ifconfigرا اجرا کنید و تعداد میاناهایcvd-wtap-*را تأیید کنید.
-
ایجاد حساب SSH
ازآنجاییکه میزبان OmniLab ATS ازطریق SSH به میزبان راه دور متصل میشود، باید حساب SSH را در میزبان راه دور آماده کنید. ازآنجاییکه OmniLab ATS فایلهای موجود در دایرکتوری HOME را دستکاری میکند، توصیه میکنیم حساب اختصاصی ایجاد کنید.
میزبان OmniLab ATS برای ورود به سیستم میزبان راهدور بدون گذرواژه به یک جفت کلید SSH نیاز دارد. مراحل زیر نحوه تنظیم کلیدهای SSH را شرح میدهد:
- برای تولید کلید خصوصی و کلید عمومی،
ssh-keygenرا در میزبان OmniLab ATS اجرا کنید. - کلید عمومی را در
~/.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 KEYUSER نام حساب SSH است.
HOST نشانی IPv4 میزبان راه دور است.
N حداکثر تعداد دستگاههای مجازی است که OmniLab ATS میتواند بهطور همزمان اختصاص دهد.
KEY مسیر کلید پوسته امن خصوصی در میزبان OmniLab ATS است.
این فرمان اتصال به میزبان راه دور را قبلاز شروع OmniLab ATS آزمایش میکند.
اگر پیام هشداری مثل
The specified --remote_virtual_devices and --remote_ssh_key are invalid.
در کنسول نشان داده میشود، باید تنظیمات SSH خود را بررسی کنید.
برای جلوگیری از تعارض منابع، میزبان OmniLab ATS میتواند حداکثر به یک میزبان ازدور متصل شود. چند میزبان OmniLab ATS نمیتوانند بهطور همزمان به یک میزبان راه دور متصل شوند.
اجرای آزمایش با دستگاههای مجازی
این بخش مراحل اجرای آزمایش روی دستگاههای مجازی محلی یا راه دور را شرح میدهد.
دستگاههای خاص
در فهرست دستگاه، OmniLab ATS دستگاههای مجازی را بهجای شماره سریال واقعیشان بهعنوان جایبان نمایش میدهد. جایبانها در قالب نام میزبان:شناسه-دستگاه-مجازی-محلی برای دستگاههای مجازی محلی؛ شناسه-نشانی-مجازی-راه دور برای دستگاههای مجازی راه دور نشان داده میشوند. وضعیتها یا دردسترس یا اختصاصیافته است. جایبان در وضعیت دردسترس نشان میدهد که دستگاه مجازی درحال اجرا نیست و میتواند برای آزمایش اختصاص داده شود.
شکل ۱. درحال انتخاب دستگاههای مجازی
افزودن کنشهای دستگاه
اگر حداقل یک دستگاه مجازی را انتخاب کنید، کنش دستگاه مرتبط باید بهطور خودکار به فهرست اضافه شود. کنش شامل پارامترهای TradeFed و منابع آزمایشی لازم برای ایجاد دستگاههای مجازی است.
شکل ۲. کنشهای دستگاه برای دستگاههای مجازی محلی
شکل ۳. کنشهای دستگاه برای دستگاههای مجازی از راه دور
تنظیم منابع آزمایش
دستگاههای مجازی 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 در پوشه فایل خروجی جمعآوری میشود. روی مشاهده فایلهای خروجی کلیک کنید تا آنها را ببینید.
شکل ۵. نتایج اجرای آزمایشی