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

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