يتيح OmniLab ATS استخدام الأجهزة الافتراضية Cuttlefish التي تتيح لك إجراء الاختبارات بدون أجهزة Android فعلية. إنّ Cuttlefish مناسب لاختبار الوظائف غير المستندة إلى الأجهزة. قبل بدء استخدام الأجهزة الافتراضية، اتّبِع دليل المستخدم لتثبيت OmniLab ATS.
يتوافق OmniLab ATS مع الأجهزة الافتراضية في وضعَين، هما الوضع المحلي والوضع عن بُعد. يقدّم الجدول التالي مقارنة بين الوضعَين.
الأجهزة الافتراضية المحلية | الأجهزة الافتراضية البعيدة |
---|---|
يتم تشغيله على مضيفي عامل ATS | يتم تشغيله على مضيفين عن بُعد يمكن لمضيفي عامل ATS الوصول إليهم من خلال بروتوكول النقل الآمن (SSH) |
الأجهزة المستندة إلى x86 | يمكن أن يكون x86 أو ARM استنادًا إلى بنية المضيفين |
سهولة الإعداد | عملية الإعداد أكثر تعقيدًا |
يمكن تفعيل الأجهزة الافتراضية المحلية والبعيدة بشكل مستقل. لمعرفة تفاصيل عن كل وضع، يُرجى الاطّلاع على:
إعداد الأجهزة الافتراضية المحلية
يصف هذا القسم خطوات إعداد OmniLab ATS للأجهزة الافتراضية المحلية.
تثبيت تبعيات Cuttlefish
شغِّل الأمر التالي للتأكّد من تحميل وحدات kernel اللازمة:
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 N
N
هو الحد الأقصى لعدد الأجهزة الافتراضية التي يمكن لـ OmniLab ATS تخصيصها
في الوقت نفسه. العدد التلقائي هو 0.
إذا تعذّر تنفيذ الأمر بسبب عدم توفّر عقد الجهاز، اتّبِع الخطوات الواردة في رسالة الخطأ لتحميل وحدات kernel. إذا استمرت المشكلة، أعِد تشغيل الجهاز.
إعداد الأجهزة الافتراضية عن بُعد
يصف هذا القسم خطوات إعداد OmniLab ATS للأجهزة الافتراضية عن بُعد.
تثبيت تبعيات Cuttlefish
لتثبيت متطلّبات Cuttlefish، اتّبِع الخطوات التالية:
ثبِّت حِزم Debian على المضيف البعيد باتّباع الخطوات الواردة في Cuttlefish > البدء.
اضبط الحد الأقصى لعدد الأجهزة الافتراضية على المضيف البعيد باتّباع الخطوات التالية:
- عدِّل
/etc/default/cuttlefish-host-resources
باستخدام امتياز الجذر. - اضبط
num_cvd_accounts
على الحد الأقصى لعدد الأجهزة الافتراضية التي تريد السماح بها على هذا المضيف. - شغِّل
sudo systemctl restart cuttlefish-host-resources
. - شغِّل
ifconfig
وتأكَّد من عدد واجهاتcvd-wtap-*
.
- عدِّل
إنشاء حساب SSH
بما أنّ مضيف OmniLab ATS يتصل بالمضيف البعيد من خلال بروتوكول النقل الآمن (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 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 للأجهزة الافتراضية البعيدة. تكون الحالات إما متوفّرة أو مخصّصة. يشير العنصر النائب في حالة متاح إلى أنّ الجهاز الافتراضي غير مفعّل ويمكن تخصيصه للاختبار.
الشكل 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 إلا لأغراض debugging.
الشكل 4: اختبار موارد الأجهزة الافتراضية
عرض عمليات تنفيذ الاختبار
يتم جمع سجلات الجهاز، بما في ذلك kernel.log
وhost_log.txt
وlauncher.log
،
في مجلد ملف الإخراج. انقر على عرض ملفات الإخراج للاطّلاع عليها.
الشكل 5: نتائج التشغيل التجريبي