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

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