سؤال

وأود أن الإعداد بعض الاختبار الآلي من حالات الاختبار على ثنائيات فورتران داخل مستودع SVN، عند الطلب، أو مع وظيفة كرون. إلى تعقيد المسألة قليلا، وسوف يتم تشغيل حالات الاختبار على كتلة الحسابية، بحيث يحتاج كل حالة اختبار لإنشاء برنامج نصي PBS. (لينكس البيئة)

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

وأي اقتراحات بشأن الكيفية التي ينبغي هذه اقترب؟

هل كانت مفيدة؟

المحلول

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

ومنذ كنت في النظام دفعة، لديك بعض الحرية لجدولة الاختبارات. قد ترغب في الحصول على وظيفة عامة "التحقق" التي يمكن أن توفر معلمات الإعداد ل(على سبيل المثال إلى مواقع الإنتاج المتوقع والفعلي الناتج البرنامج). نيك المذكورة باستخدام grep للتحقق من الانتاج من qstat لID عملك، ولكن يمكن أن أقول لكم PBS لعقد العمل حتى اكتمال وظيفة أخرى. وهذا يعني أن لديك شيء من هذا القبيل:

...
#PBS -N run_test_1
#PBS -a 200906270000
...
<compile test>
<run test>
<save output>

وعندما قدم، حفظ الهوية وظيفة إرجاعها بواسطة qsub (كيف يمكنك أن تفعل هذا يعتمد على النظام الأساسي الخاص بك - عادة شيء من هذا القبيل job_id=$(qsub $JOB_FILE) غير كافية). ثم قم بتوصيل تلك القيمة في لالنصي آخر:

...
#PBS -N verify_test_1
#PBS -W depend=afterany:$job_id
<run comparison>
...

وهذه الإرادة (عندما يتم إدخال القيمة الصحيحة من job_id) عقد تنفيذ اختبار تشغيل حتى منتصف الليل في 27 يونيو 2009، واستمر في تنفيذ هذه المهمة التحقق حتى اكتمال المهمة اختبار (يشير التوجيه afterany أنه يجب تشغيل دائما بعد أول وظيفة - وليس فقط إذا كان ناجحا)

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

نصائح أخرى

وربما تكون هناك إجابة أفضل أن يكون أكثر المعبأة مسبقا، ولكن أعتقد أن Buildbot هو شكلي يكفي أنه طالما يمكنك كتابة السيناريو بيثون لتشغيل ثنائي الخاص بك، يجب أن تعمل من أجل ما تريد.

http://buildbot.net/

ويبدو أن لإدخال بسيط / الإخراج اختبار هل يمكن أن أيقظه السيناريو نفسك للقيام بذلك ...

ومنها مثلا.

for each program
    compile
    submit to queue
    wait for finish
    check output

في الواقع، كنت ربما تريد أن تقدم أكثر من وظيفة إلى قائمة الانتظار، ولكن الفكرة هي نفسها.

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

تقديم

هل يمكن استخدام PBS النصي القالب، واستخدام الحوار الاقتصادي الاستراتيجي للعثور على / استبدال الرموز INTPUT مع قيم الإدخال للبرنامج قبل تقديم

انتظار النهاية

هل يمكن البقرى مرارا إخراج qstat للحصول على معرف عملك، الى الانتظار لذلك لإنهاء

تحقق الانتاج

وتحقق ملف الإخراج العمل ضد الناتج المتوقع. هل يمكن إما حفظ الناتج المتوقع إلى ملف واستخدام فرق، أو لديك قائمة التعبير العادية التي يجب أن تطابق لكل شوط

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top