शार्डिंग की जांच करें

जब परीक्षण कोष बड़ा होता है या निष्पादन समय लंबा हो जाता है, तो हम परीक्षणों को कई उपकरणों में विभाजित करने की संभावना प्रदान करते हैं: शार्डिंग

शार्डिंग में टेस्ट रनर के लिए शार्डिंग का समर्थन करने की पूर्वापेक्षाएँ होती हैं।

अधिकांश मुख्य परीक्षण धावक पहले से ही शार्डिंग का समर्थन करते हैं इसलिए किसी अतिरिक्त कार्य की आवश्यकता नहीं है। ये पहले से ही शार्डिंग का समर्थन करते हैं: इंस्ट्रूमेंटेशन परीक्षण, होस्ट-साइड संचालित परीक्षण, जीटीटेस्ट।

ट्रेडफेड में हम दो प्रकार की शार्डिंग का समर्थन करते हैं: स्थानीय और वितरित। उनमें कुछ समानताएँ हैं, इसलिए यह पृष्ठ सामान्य गुणों और फिर प्रत्येक की विशिष्टताओं का वर्णन करता है।

सामान्य गुण

शार्डिंग के दोनों रूप परीक्षण धावकों से समान गुण ग्रहण करते हैं: शार्ड को स्वतंत्र और नियतिवादी होने की आवश्यकता है। दोनों शार्डिंग का पहला चरण परीक्षणों की पूरी क्रमबद्ध सूची बनाना और फिर उन्हें अलग-अलग समूहों/शार्ड में विभाजित करना है।

शेयरिंग फ़ॉर्म का मुख्य अंतर उनके परीक्षण निष्पादित करने के तरीके में है। नीचे अनुभागों में अधिक विवरण।

स्थानीय शार्डिंग

स्थानीय शार्डिंग का मतलब है कि शार्ड इनवोकेशन के निष्पादन में शामिल सभी उपकरण एक ही भौतिक होस्ट से जुड़े हुए हैं।

कार्यान्वयन

स्थानीय शार्डिंग परीक्षणों का एक पूल बनाकर एक ही होस्ट से जुड़े सभी उपकरणों का लाभ उठाती है जिन्हें निष्पादित करने की आवश्यकता होती है और जब यह मुफ़्त होता है तो प्रत्येक डिवाइस का मतदान परीक्षण होता है (अर्थात, पिछले परीक्षण के साथ किया जाता है)। इसके परिणामस्वरूप डिवाइस का अनुकूलित उपयोग होता है। इसे हम डायनामिक शार्डिंग भी कहते हैं।

विकल्प

--shard-count XX

वितरित शार्डिंग

वितरित शार्डिंग का मतलब है कि शार्ड इनवोकेशन के निष्पादन में शामिल सभी उपकरण कहीं भी रह सकते हैं और विभिन्न भौतिक होस्ट से जुड़े हो सकते हैं।

कार्यान्वयन

वितरित शार्डिंग परीक्षणों की सूची बनाने पर होती है, और प्रत्येक शार्ड की सामग्री केवल वर्तमान में अनुरोधित शार्ड को निष्पादित करती है। इसलिए सभी वितरित शार्ड पहले एक ही सूची बनाते हैं और फिर उसके परस्पर अनन्य उपसमुच्चय को निष्पादित करते हैं, जिसके परिणामस्वरूप सभी परीक्षण निष्पादित होते हैं।

इस रूप की मुख्य संपत्ति यह है कि टुकड़े एक-दूसरे से पूरी तरह अनजान होते हैं और स्वतंत्र रूप से विफल हो सकते हैं।

मुख्य दोष यह है कि शार्ड की लंबाई आवश्यक रूप से संतुलित नहीं है क्योंकि हम प्रत्येक शार्ड में प्रत्येक परीक्षण के रनटाइम की पहले से भविष्यवाणी नहीं कर सकते हैं। वितरण प्रत्येक टुकड़े में लगभग समान संख्या में परीक्षण मामलों के लिए किया जाता है।

विकल्प

--shard-count XX --shard-index XX

टोकन शार्डिंग

टोकन शार्डिंग का उपयोग केवल स्थानीय शार्डिंग के साथ किया जा सकता है। गैर-स्थानीय शार्डिंग उपयोग के मामलों में ध्वज निष्क्रिय है। कभी-कभी शार्डिंग में शामिल उपकरणों में से एक में विशेष संसाधन होते हैं जो दूसरों के पास नहीं होते, जैसे कि सिम कार्ड। कुछ परीक्षण केवल तभी काम कर सकते हैं जब वह विशेष संसाधन उपलब्ध हो और अन्यथा विफल हो जायेंगे।

ऐसे उपयोग के मामलों के लिए टोकन शार्डिंग हमारा समाधान है। परीक्षण मॉड्यूल यह घोषित करने में सक्षम हैं कि उन्हें अपने AndroidTest.xml में किस विशेष संसाधन की आवश्यकता है, और ट्रेडफेड परीक्षणों को उस डिवाइस पर रूट करता है जिसके पास संसाधन है।

एक्सएमएल कॉन्फ़िगरेशन

<option name="config-descriptor:metadata" key="token" value="SIM_CARD" />

टोकन का value ट्रेडफेड के TokenProperty से मेल खाता है और TokenProviderHelper में एक हैंडलर से जुड़ा हुआ है।

यह परीक्षण मॉड्यूल को उन उपकरणों के विरुद्ध चलाने की अनुमति देता है जो परीक्षणों को ठीक से निष्पादित कर सकते हैं।

यदि कोई उपकरण परीक्षण नहीं चला सके तो क्या होगा?

यदि उपलब्ध किसी भी उपकरण में परीक्षण मॉड्यूल से मेल खाने वाला संसाधन नहीं है, तो परीक्षण मॉड्यूल विफल हो जाता है और छोड़ दिया जाता है क्योंकि यह ठीक से निष्पादित नहीं हो सकता है।

उदाहरण के लिए, यदि कोई परीक्षण मॉड्यूल सिम कार्ड चलाने का अनुरोध करता है लेकिन किसी भी डिवाइस में सिम कार्ड नहीं है, तो परीक्षण मॉड्यूल विफल हो जाता है।

कार्यान्वयन

इस फीचर फ़्लैग को मुख्य ट्रेडफेड कमांड लाइन पर पास करें:

--enable-token-sharding