Tradefed एक्सएमएल कॉन्फ़िगरेशन में टेंप्लेट और शामिल किए गए आइटम

टेस्ट को तय करने के लिए, एक ही बड़े एक्सएमएल कॉन्फ़िगरेशन का इस्तेमाल करना हमेशा सही नहीं होता. अगर आपको एक जैसे टेस्ट चलाने के लिए, सेटअप के किसी हिस्से का फिर से इस्तेमाल करना है, तो आपको दो बड़ी एक्सएमएल फ़ाइलों को कॉपी करके सेव करना होगा.

ऐसे में, Tradefed XML कॉन्फ़िगरेशन की परिभाषा में मौजूद template और include टैग काम आते हैं. इनकी मदद से, कुछ एक्सएमएल कॉन्फ़िगरेशन में प्लेसहोल्डर सेट किए जा सकते हैं, ताकि किसी दूसरे एक्सएमएल कॉन्फ़िगरेशन का हिस्सा जोड़ा जा सके.

टेंप्लेट के लिए परिभाषा का उदाहरण

<configuration description="Common base configuration for local runs with minimum overhead">
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <template-include name="preparers" default="empty" />

    <template-include name="test" default="empty" />

    <template-include name="reporters" default="empty" />
</configuration>

टेंप्लेट, प्लेसहोल्डर होते हैं. इन्हें रेफ़रंस देने के लिए name और एक वैकल्पिक default फ़ील्ड होता है. डिफ़ॉल्ट फ़ील्ड, डिफ़ॉल्ट रिप्लेसमेंट एक्सएमएल को तय करता है. इसका इस्तेमाल किया जाना चाहिए.

किसी कॉन्फ़िगरेशन के लिए टेंप्लेट बदलने के लिए, कमांड लाइन में यह कमांड पैरामीटर जोड़ना होगा:

--template:map <name of template>=<replacement XML config path>

--template:map preparers=empty

उदाहरण के लिए:

<template-include name="preparers" default="empty" />

इस मामले में empty रेफ़रंस, empty कॉन्फ़िगरेशन को दिखाता है, जिसमें कुछ भी नहीं है. हम इसका इस्तेमाल किसी भी चीज़ को न बदलने के रेफ़रंस के तौर पर करते हैं.empty.xml

एक्सएमएल कॉन्फ़िगरेशन का पाथ, Tradefed के JAR संसाधनों में मौजूद res/config फ़ोल्डर के हिसाब से ऐब्सलूट या रिलेटिव हो सकता है. यहां उनके कुछ स्टोर की जानकारी दी गई है:

  • tools/tradefederation/core/res/config
  • tools/tradefederation/core/tests/res/config
  • tools/tradedeferation/contrib/res/config

'शामिल है' की परिभाषा का उदाहरण

<configuration description="Common base configuration for local runs with minimum overhead">
    <build_provider class="com.android.tradefed.build.BootstrapBuildProvider" />

    <include name="empty"/>
</configuration>

शामिल किए गए फ़ाइलें, टेंप्लेट से ज़्यादा आसान होती हैं, क्योंकि इनके लिए कमांड लाइन आर्ग्युमेंट की ज़रूरत नहीं होती; ये सीधे तौर पर name टैग में रेफ़र किए गए एक्सएमएल को बड़ा करती हैं. टेंप्लेट की तरह ही, कॉन्फ़िगरेशन का पाथ भी पूरा या मिलता-जुलता हो सकता है. हालांकि, हमारा सुझाव है कि includes के लिए सिर्फ़ रिलेटिव पाथ का इस्तेमाल करें, क्योंकि ये Tradefed में ज़्यादा पोर्टेबल होते हैं. अगर Tradefed को किसी दूसरी मशीन पर ले जाया जाता है, तो ऐब्सलूट पाथ मान्य नहीं होंगे.

गलत कॉन्फ़िगरेशन

गलत कॉन्फ़िगरेशन होने पर, जैसे कि जब बदलने के लिए एक्सएमएल नहीं मिलता है, तो Tradefed एक ConfigurationException दिखाएगा. इसमें यह जानकारी होगी कि क्या मौजूद नहीं है या क्या गलत तरीके से कॉन्फ़िगर किया गया है.