الخلاصة

  • يقبل Rapport الآن فئات وأسماء اختبارات مفصولة بمسافات، ثم يبني كل زوج ممكن بينها. إذا لم يكن مسار الزوج دليلاً قائماً، تعود الدالة قبل التنفيذ ولا يظهر الزوج في النجاح أو الفشل أو التخطي أو النتيجة المجهولة.
  • يبيّن مثال ثابت من شجرة المستودع المثبتة أن أربعة أزواج مطلوبة قد تنتج تنفيذين ظاهرين ومسارين غائبين. يمكن أن تكون المجاميع صحيحة لما نُفّذ، من دون أن تصف كامل ما طُلب.

تطلب التعليمة أربع خلايا. لا يعرض التقرير سوى نتيجتين. ولا يوجد سطر يفسر مصير الخليتين الأخريين.

هذه هي حدود التتبّع التي يكشفها التغيير الرسمي في Rapport بتاريخ 7 سبتمبر، وعنوانه “Allow running multiple specific categories and tests”. عدّل التغيير ملف 2-test.sh وحده، لكنه غيّر معنى المدخل: قائمتان تتحولان إلى مصفوفة، ثم يصبح وجود الدليل شرطاً لدخول كل خلية إلى سجل النتائج.

يقرأ المشغّل المثبت عند التغيير وسيطه الأول بوصفه فئات مفصولة بمسافات، والثاني بوصفه أسماء اختبارات بالصيغة نفسها. تمر حلقة على الفئات وتطبق حلقة داخلية قائمة الاختبارات ذاتها على كل فئة. لكل زوج يُنشأ المسار tests/<category>/<test> ثم يُرسل إلى run_test.

في بداية run_test يُفحص ما إذا كان المسار دليلاً. إن لم يكن كذلك، تعود الدالة فوراً بالحالة صفر. يحدث ذلك قبل تعيين TESTID، وقبل طباعة Test:، وقبل تشغيل ملف السيناريو run.sh، وقبل زيادة أي من عدادات Success أو Failure أو Skipped أو Unknown.

إذن المسار الغائب ليس نجاحاً. وليس اختباراً متخطىً أيضاً. إنه خارج مجموعة النتائج تماماً.

أربع خلايا في الطلب وخليتان في التقرير

تحتوي شجرة المستودع غير القابلة للتبدل عند النسخة نفسها على 21 دليلاً للفئات و337 مساراً بالنمط tests/<category>/<test>/run.sh. ويوجد فيها المساران sample/100-simple وsample/500-multi-step، بينما لا يوجد rfc9286/100-simple ولا rfc9286/500-multi-step.

عند الجمع بين الفئتين sample rfc9286 والاختبارين 100-simple 500-multi-step، تُنشئ الحلقات أربع خلايا. يمكن لمساري sample الوصول إلى التنفيذ. أما مسارا rfc9286 فيعودان عند فحص الدليل. وحدها السيناريوهات التي تعمل يمكن أن تدخل العدادات الأربعة.

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

يحافظ هذا القيد أيضاً على دقة تفسير المجاميع. إذا نجح السيناريوهان الموجودان، فإن «نجاحان» وصف صحيح لملفي run.sh اللذين نُفّذا. لكنه ليس كشفاً كاملاً للخلايا الأربع التي رآها صاحب الطلب. واحتساب المسارين الغائبين فشلاً سيكون ادعاءً غير مسند. المطلوب هو فصل خمس مراحل: الطلب، والتوسيع، والوجود، والتنفيذ، والنتيجة.

توسّع الاختيار وبقي الإيصال ضيقاً

كان المشغّل الأب يدعم أشكالاً أضيق: كل الفئات، أو كل اختبارات فئة واحدة، أو زوجاً دقيقاً واحداً. استبدل التغيير الجديد تلك الفروع بحلقتين متداخلتين. تعرض رسالة التغيير أمثلة لفئات متعددة واختبارات متعددة كل على حدة، لكنها لا توثق الاستدعاء الجامع بينهما ولا تحدد معنى خلية لا تملك دليلاً.

لا يجيز هذا الصمت استنتاج نية الكاتب أو القول إنه كان يعرف مواضع الفراغ. ما يمكن إثباته هو انفصال معنيين للاكتمال: بالنسبة إلى دالة shell ينتهي المسار الغائب بالحالة صفر؛ وبالنسبة إلى التقرير لم يولد لذلك الزوج معرّف اختبار أصلاً. لا توجد قائمة جرد تصل بين المرحلتين.

يصف ملف README المثبت Rapport بأنه أداة لاختبار تطبيقات relying party في مرحلة تطوير مبكرة، مبنية بنصوص shell ويستهدف كل تشغيل فيها تطبيقاً واحداً. يتعرف المشغّل على عائلات fort وRoutinator وrpki-client وrpki-prover. كما يحذر من احتمال خطأ حزمة الاختبار ومن اختلاف التطبيقات في نتائجها. لهذه الأسباب يصبح توثيق مجموعة السيناريوهات الفعلية شرطاً لفهم المقارنة.

تضع LACNIC Rapport ضمن عملها في البرمجيات مفتوحة المصدر، ويتيح المستودع العام فحص الآلية. لا تصف المصادر الأداة بأنها شهادة أو شرط شراء أو مدقق إنتاج، ولا يفترض المقال ذلك. القضية هي أصل سجل الاختيار في أداة اختبار عامة.

إيصال اختيار يسبق النتائج

يمكن الحفاظ على النتائج الأربع الحالية وإضافة إيصال قبل فحص نظام الملفات. يسجل الإيصال الوسيطين الخامين، والفئات وأسماء الاختبارات بعد ضبطها، وكل زوج ناتج. ثم يحمل كل زوج حقولاً بسيطة: هل يوجد المسار، وهل القرار execute أم absent-path. وبعد التنفيذ يضاف TESTID والنتيجة المعتادة.

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

تجيب العدادات الأربعة عن سؤال «ماذا أعاد السيناريو؟». أما السجل المفقود فيجيب عن السؤال السابق: «ماذا حدث لكل خلية طلبناها؟»