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

يميل الجناح إلى تضمين عدة وحدات اختبار ويمكن أن يصل إلى حجم ملف اختبار كبير جدًا. على سبيل المثال، تتضمن مجموعة أدوات اختبار التوافق مع 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

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

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

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

تحاول CTS بعد ذلك تحميل البيانات من مزيج من test-record.pb وtest_result.xml الحالي لإعداد استدعاء إعادة المحاولة.