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

يتيح OmniLab ATS استخدام الأجهزة الافتراضية Cuttlefish التي تتيح لك إجراء الاختبارات بدون أجهزة Android فعلية. إنّ Cuttlefish مناسب لاختبار الوظائف غير المستندة إلى الأجهزة. قبل البدء في استخدام الأجهزة الافتراضية، اتّبِع دليل المستخدم لتثبيت OmniLab ATS.

يتوافق تطبيق OmniLab ATS مع الأجهزة الافتراضية في وضعَين، أحدهما على الجهاز والآخر عن بُعد. يقدّم الجدول التالي مقارنة بين الوضعَين.

الأجهزة الافتراضية المحلية الأجهزة الافتراضية البعيدة
يتم تشغيله على مضيفي عامل ATS يتم تشغيله على مضيفين عن بُعد يمكن لمضيفي عامل ATS الوصول إليهم من خلال بروتوكول النقل الآمن (SSH)
مستندة إلى x86 يمكن أن يكون x86 أو ARM استنادًا إلى بنية المضيفين
سهولة أكبر في الإعداد عملية الإعداد أكثر تعقيدًا

يمكن تفعيل الأجهزة الافتراضية المحلية والبعيدة بشكلٍ مستقل. لمعرفة تفاصيل عن كل وضع، يُرجى الاطّلاع على:

إعداد الأجهزة الافتراضية المحلية

يصف هذا القسم خطوات إعداد OmniLab ATS للأجهزة الافتراضية المحلية.

تثبيت تبعيات الحبار

شغِّل الأمر التالي للتأكّد من تحميل وحدات kernel اللازمة:

sudo modprobe -a kvm tun vhost_net vhost_vsock

ابدأ تشغيل تكنولوجيا OmniLab ATS باستخدام الأجهزة الافتراضية المحلية

قبل بدء OmniLab ATS، تأكَّد من إيقاف جميع نُسخ Cuttlefish. يطلق OmniLab ATS الأجهزة الافتراضية ويوقفها تلقائيًا خلال دورة الاختبار، وتتعارض مثيلات الحبار الحالية مع المثيلات التي يديرها OmniLab ATS. للحصول على تفاصيل حول كيفية إيقاف تصرفات الحبار، يُرجى الاطّلاع على إيقاف الحبار.

لتفعيل الأجهزة الافتراضية المحلية، شغِّل:

mtt start --max_local_virtual_devices N

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

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

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

يصف هذا القسم خطوات إعداد OmniLab ATS للأجهزة الافتراضية البعيدة.

تثبيت تبعيات Cuttlefish

لتثبيت متطلّبات Cuttlefish، اتّبِع الخطوات التالية:

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

  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)، يجب إعداد حساب SSH على المضيف البعيد. وبما أنّ OmniLab ATS يعالج الملفات في دليل الصفحة الرئيسية، ننصحك بإنشاء حساب مخصّص.

يتطلب مضيف 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. للحصول على تفاصيل حول كيفية إيقاف تصرفات الحبار، يُرجى الاطّلاع على إيقاف الحبار.

للحصول على أداء أفضل، ننصحك بإعداد مضيف 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: نتائج التشغيل التجريبي