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

تتيح أجهزة 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 N

N هو الحد الأقصى لعدد الأجهزة الافتراضية التي يمكن أن يخصّصها نظام OmniLab ATS في الوقت نفسه. العدد التلقائي هو 0.

إذا تعذّر تنفيذ الأمر بسبب عدم توفّر عقد الجهاز، اتّبِع الخطوات الواردة في رسالة الخطأ لتحميل وحدات النواة. إذا استمرّت المشكلة، أعِد تشغيل الجهاز.

إعداد الأجهزة الافتراضية عن بُعد

يوضّح هذا القسم خطوات إعداد 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_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. نتائج اختبار التنفيذ