إعادة محاولة استخدام الحزمة

عادةً ما تتضمّن المجموعة عدة وحدات اختبار ويمكن أن تصل إلى مجموعة كبيرة جدًا من الأجهزة الاختبارية. على سبيل المثال، تتضمّن مجموعة اختبار التوافق مع Android (CTS) مئات الوحدات ومئات الآلاف من حالات الاختبار.

يصبح من الممكن أن يتعذّر إكمال عدد كبير من الاختبارات بسبب العزل السيئ أو بسبب دخول الأجهزة في حالة سيئة.

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

إعادة محاولة تنفيذ الحزمة

تتضمن إعادة محاولة الحصول على النتائج قراءة النتائج السابقة وإعادة تنفيذ الطلب السابق.

الواجهة الرئيسية التي تُجري إعادة المحاولة هي ITestSuiteResultLoader، التي تتيح لك تحميل نتيجة سابقة وسطر الأوامر السابق.

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

مثال على إعادة محاولة مجموعة الاختبار: CTS

إعدادات إعادة المحاولة في CTS هي:

<configuration description="Runs a retry of a previous CTS session.">
    <object type="previous_loader" class="com.android.compatibility.common.tradefed.result.suite.PreviousResultLoader" />
    <test class="com.android.tradefed.testtype.suite.retry.RetryRescheduler" />

    <logger class="com.android.tradefed.log.FileLogger">
        <option name="log-level-display" value="WARN" />
    </logger>
</configuration>

وينطبق ذلك على معظم الحِزم التي توفّر هذه الميزة، مثل VTS.

سيتمّ استدعاؤه باستخدام:

cts-tradefed run retry --retry <session>

يمكن العثور على الجلسة من خلال إدراج النتائج السابقة في وحدة تحكّم CTS:

cts-tf > l r
Session  Pass  Fail  Modules Complete  Result Directory     Test Plan  Device serial(s)  Build ID   Product
0        2092  30    148 of 999        2018.10.29_14.12.57  cts        [serial]          P          Pixel

ستتم إعادة تحميل الأمر الأصلي بالضبط وإعادة تشغيله مع استخدام فلاتر إضافية. هذا يعني أنه إذا تضمن الأمر الأصلي بعض الخيارات، فإنها أيضًا جزء من إعادة المحاولة.

مثلاً:

cts-tradefed run cts-dev -m CtsGestureTestCases

إنّ إعادة محاولة تنفيذ ما سبق مرتبطة دائمًا بـ CtsGestureTestCases لأنّنا نعيد محاولة تنفيذ أمر يتضمنه فقط.

إعداد إعادة المحاولة لمجموعة بنمط CTS

ولكي تنجح إعادة المحاولة، يلزم تصدير النتائج السابقة بتنسيق النموذج الأوّلي. يجب إضافة ما يلي:

<result_reporter class="com.android.compatibility.common.tradefed.result.suite.CompatibilityProtoResultReporter" />

يجب إضافة هذا الإجراء إلى إعدادات XML للأمر الرئيسي، ويؤدي ذلك إلى إنشاء ملف test-record.pb في مجلد النتائج.

بعد ذلك، تحمِّل عملية إعادة المحاولة في CTS البيانات من مجموعة من test-record.pb و test_result.xml الحالية لإعداد طلب إعادة المحاولة.