सूट में कई टेस्ट मॉड्यूल शामिल होते हैं और टेस्ट कॉर्पस का साइज़ काफ़ी बड़ा हो सकता है. उदाहरण के लिए, Android Compatibility Test Suite (CTS) में सैकड़ों मॉड्यूल और लाखों टेस्ट केस शामिल हैं.
डिवाइस के ठीक से काम न करने या आइसोलेशन की सुविधा ठीक से काम न करने की वजह से, कई टेस्ट फ़ेल हो सकते हैं.
सूट को फिर से आज़माने की सुविधा, इन मामलों को हल करने के लिए बनाई गई है: यह आपको पूरे सूट के बजाय, सिर्फ़ उन टेस्ट को फिर से आज़माने की सुविधा देती है जो फ़ेल हो गए हैं. इससे, फ़्लेकी टेस्ट और खराब आइसोलेशन की समस्या को हल किया जा सकता है. अगर कोई जांच लगातार फ़ेल हो रही है, तो फिर से कोशिश करने पर भी वह फ़ेल हो जाती है. इससे आपको यह पता चलता है कि कोई गंभीर समस्या है.
सुइट को फिर से आज़माने की सुविधा लागू करना
नतीजों को फिर से पाने की कोशिश करने के लिए, पिछले नतीजों को पढ़ा जाता है और पिछले इनवोकेशन को फिर से चलाया जाता है.
फिर से कोशिश करने की सुविधा देने वाला मुख्य इंटरफ़ेस ITestSuiteResultLoader है. इसकी मदद से, पिछले नतीजे और पिछली कमांड लाइन को लोड किया जा सकता है.
RetryRescheduler
इसके बाद, इस जानकारी का इस्तेमाल करके पिछली कमांड को फिर से बनाया जाता है. साथ ही, कुछ फ़िल्टर में डेटा भरा जाता है, ताकि सिर्फ़ पिछली बार फ़ेल हुई या नहीं की गई जांचों को फिर से चलाया जा सके.
सूट को फिर से आज़माने का उदाहरण: 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>
यह सुविधा, इसे बढ़ाने वाले ज़्यादातर सुइट पर लागू होती है. उदाहरण के लिए, वीटीएस.
इसे इस तरह से शुरू किया जाएगा:
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" />
इसे मुख्य कमांड के एक्सएमएल कॉन्फ़िगरेशन में जोड़ा जाना चाहिए. इससे, नतीजे वाले फ़ोल्डर में test-record.pb फ़ाइल बन जाती है.
इसके बाद, सीटीएस फिर से कोशिश करने के लिए, test-record.pb और मौजूदा test_result.xml से डेटा लोड करता है, ताकि फिर से कोशिश करने के लिए इनवॉकेशन तैयार किया जा सके.