الأجهزة الافتراضية في OmniLab ATS

يتيح 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، اتّبِع الخطوات التالية:

  1. ثبِّت حِزم Debian على المضيف البعيد باتّباع الخطوات الواردة في Cuttlefish > البدء.

  2. اضبط الحد الأقصى لعدد الأجهزة الافتراضية على المضيف البعيد باتّباع الخطوات التالية:

    1. عدِّل /etc/default/cuttlefish-host-resources باستخدام امتياز الجذر.
    2. اضبط num_cvd_accounts على الحد الأقصى لعدد الأجهزة الافتراضية التي تريد السماح بها على هذا المضيف.
    3. شغِّل sudo systemctl restart cuttlefish-host-resources.
    4. شغِّل ifconfig وتأكَّد من عدد واجهات cvd-wtap-*.

إنشاء حساب SSH

بما أنّ مضيف OmniLab ATS يتصل بالمضيف البعيد من خلال بروتوكول النقل الآمن (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، يُرجى الاطّلاع على مقالة إيقاف 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: نتائج التشغيل التجريبي