اختبارات وحدة شبكات النواة

بدءًا من الإصدار Android 5.0، أصبح التشغيل الصحيح لحزمة شبكات Android على نظام التشغيل Linux تتطلب النواة (النواة) عددًا من عمليات التنفيذ التي تمت معالجتها مؤخرًا نسبيًا أو لم تصدره بعد. ليس من السهل التحقق يدويًا من يتطلب الحصول على وظائف kernel أو تتبع عمليات التنفيذ المفقودة، وبالتالي يمكن لفريق Android مشاركة الاختبارات التي تستخدمها للتأكد من عمل النواة على النحو المتوقع.

أسباب إجراء الاختبارات

تم إجراء هذه الاختبارات لثلاثة الأسباب:

  1. الإصدار الدقيق من نواة Linux المستخدمة على الجهاز هو خاصة بالجهاز عادةً، ومن الصعب معرفة ما إذا كانت هناك أي النواة بشكل صحيح دون إجراء الاختبارات.
  2. النقل الأمامي نقل تصحيحات النواة إلى إصدارات نواة مختلفة أو قد تؤدي أشجار الأجهزة إلى حدوث مشاكل خفية قد يستحيل اكتشافها بدون وإجراء الاختبارات.
  3. قد تتطلب ميزات الشبكات الجديدة وظائف نواة جديدة أو خطأ في النواة إصلاحات الأخطاء.

إذا لم تجتَز الاختبارات، ستكون حزمة الشبكة للجهاز يتصرف بشكل غير صحيح، مما يتسبب في حدوث أخطاء اتصال مرئية للمستخدم (مثل السقوط شبكات Wi-Fi). من المحتمل ألا يجتاز الجهاز أيضًا اختبار التوافق مع Android. اختبارات Suite (CTS).

استخدام الاختبارات

تستخدم الاختبارات نظام التشغيل Linux لوضع المستخدم لتشغيل kernel كعملية على جهاز مضيف Linux. عرض إنشاء بيئة إنشاء إصدارات نظام التشغيل المناسبة. إطار عمل اختبار الوحدة تقوم بتمهيد النواة بصورة مناسبة للقرص وإجراء الاختبارات من نظام الملفات المضيف. تتم كتابة الاختبارات بلغة بايثون وتستخدم واجهات TAP سلوك النواة وواجهة برمجة تطبيقات المقبس.

تجميع النواة لـ ARCH=um

لإجراء الاختبارات، يجب تجميع النواة في ARCH=um SUBARCH=x86_64. هذا هو بالاستناد إلى بنية مُعتمَدة في كلّ من أشجار نواة Android الشائعة (مثل android-4.4). لكن في بعض الأحيان قد لا يكون الجهاز لا يتم تجميع النواة في هذا الوضع لأن أشجار الأجهزة تحتوي على رمز خاص بالجهاز أو رمز خاص بالجهاز في الملفات الشائعة (على سبيل المثال sys/exit.c).

وفي كثير من الحالات، يكفي التأكد من أن الرمز الخاص بالجهاز وراء #ifdef. يجب أن يكون هذا أن يكون #ifdef في خيار ضبط يتحكّم في السمة الميزة ذات الصلة بالمدونة. إذا لم يكن هناك خيار التهيئة هذا، فضع رمز خاص بالجهاز داخل #ifndef CONFIG_UML مجموعات.

ضِمن عام، فإن إصلاح هذا ينبغي أن يكون من مسئولية مزود شجرة النواة (مثل مورّد الشريحة أو مورِّد المنظومة على الرقاقة (SoC)). نعمل مع المصنّعين الأصليين للأجهزة والمورّدين لضمان يتم تجميع النواة الحالية والمستقبلية في ARCH=um SUBARCH=x86_64 بدون الحاجة إلى إجراء أيّ تغييرات.

إجراء الاختبارات

موعد الاختبارات هو kernel/tests/net/test. يُنصح بإجراء الاختبارات من تطبيق AOSP الرئيسي لأنّها هي الأحدث؛ وفي بعض الحالات، فإن ميزات النواة الضرورية عملية التشغيل الصحيحة في إصدار Android معيّن لا تشمل تغطية كاملة للاختبار حتى الآن في الإصدار المحدد. للحصول على معلومات حول كيفية إجراء الاختبارات، يمكنك الاطّلاع على مقالة النواة (kernel) ملف README لاختبار الشبكة بشكل أساسي، من أعلى شجرة النواة، شغِّل:

ANDROID_TREE/kernel/tests/net/test/run_net_test.sh all_tests.sh

اجتياز الاختبارات

اختبار شبكة النواة في لغة بايثون تحتوي ملفات المصدر على تعليقات تحدد عمليات تنفيذ النواة المعروفة بأنها المطلوبة لاجتياز الاختبارات. وينبغي أن تمر الاختبارات في أشجار النواة الشائعة - كل ذلك فروع النواة المشتركة android-4.4 والفرعية الأعلى في kernel/common مشروعنا في AOSP. وبالتالي، فإن اجتياز الاختبارات على النواة يعتمد على الاندماج المستمر من فرع النواة المشترك المقابل.

المساهمات

الإبلاغ عن المشاكل

الإبلاغ عن أي مشاكل في اختبارات شبكة النواة في نظام التشغيل Android أداة تتبُّع المشاكل باستخدام شبكات المكوّنات التصنيف.

التزامات المستند وإضافة الاختبارات

أبلغ عن المشاكل كما هو موضح أعلاه، وإذا أمكن، حمِّل تغييرًا لحل المشكلة، إذا:

  • لا تجتاز الاختبارات أشجار النواة الشائعة
  • إِنْتَ العثور على التزام ضروري غير مذكور في تعليقات المصدر
  • يتطلب الحصول على الاختبارات لاجتياز النواة الرئيسية تغييرات كبيرة
  • كنت تعتقد أنه يتم تحديد الاختبارات بشكل مفرط، أو أن الاختبار يفشل في المستقبل نواة
  • تريد إضافة المزيد من الاختبارات أو تغطية إضافية إلى الاختبار الحالي الاختبار.