تتيح أجهزة Cuttlefish الافتراضية في OmniLab ATS إجراء الاختبارات بدون أجهزة Android فعلية. تتوفّر 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. للحصول على تفاصيل حول إيقاف مثيلات Cuttlefish، يُرجى الاطّلاع على إيقاف Cuttlefish.
لتفعيل الأجهزة الافتراضية المحلية، نفِّذ ما يلي:
mtt start --max_local_virtual_devices NN هو الحد الأقصى لعدد الأجهزة الافتراضية التي يمكن أن يخصّصها نظام OmniLab ATS في الوقت نفسه. العدد التلقائي هو 0.
إذا تعذّر تنفيذ الأمر بسبب عدم توفّر عقد الجهاز، اتّبِع الخطوات الواردة في رسالة الخطأ لتحميل وحدات النواة. إذا استمرّت المشكلة، أعِد تشغيل الجهاز.
إعداد الأجهزة الافتراضية عن بُعد
يوضّح هذا القسم خطوات إعداد 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 KEYUSER هو اسم حساب 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_only_phone-userdebug على
ci.android.com
)، يتم تجميع أدوات الجهاز الافتراضي في cvd-host_package.tar.gz،
وتكون الصور في aosp_cf_x86_64_only_phone-img-*.zip. تم إنشاء ملف Acloud الثنائي في OmniLab ATS وهو متوافق مع جميع إصدارات Cuttlefish. يجب تغيير عنوان URL التلقائي لتنزيل ملف Acloud الثنائي لأغراض تصحيح الأخطاء فقط.
الشكل 4. موارد الاختبار للأجهزة الافتراضية
عرض عمليات الاختبار
يتم جمع سجلّات الجهاز، بما في ذلك kernel.log وhost_log.txt وlauncher.log، في مجلد ملف الإخراج. انقر على عرض ملفات الإخراج للاطّلاع عليها.
الشكل 5. نتائج اختبار التنفيذ