टेस्ट तय करने के लिए, एक मॉनोलिथिक एक्सएमएल कॉन्फ़िगरेशन बनाना हमेशा काम का नहीं होता. अगर आपको इस तरह के टेस्ट करने के लिए, सेटअप के कुछ हिस्से का फिर से इस्तेमाल करना है, तो आपको दो बड़ी एक्सएमएल फ़ाइलों को कॉपी करना होगा और उनका रखरखाव करना होगा.
यहां, ट्रेडेड एक्सएमएल कॉन्फ़िगरेशन डेफ़िनिशन में मौजूद 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.xml
कॉन्फ़िगरेशन का रेफ़रंस है, जिसमें कुछ भी नहीं है. हम इसका इस्तेमाल, कुछ भी न बदलने के लिए रेफ़रंस के तौर पर करते हैं.
एक्सएमएल कॉन्फ़िगरेशन का पाथ, Tradefed के JAR संसाधनों में मौजूद res/config
फ़ोल्डर के लिए ऐब्सलूट या रिलेटिव हो सकता है. यहां इनकी कुछ जगहों की जानकारी दी गई है:
- tools/tradefederation/core/res/config
- tools/tradefederation/core/tests/res/config
- tools/tradedeferation/contrib/res/config
includes फ़ंक्शन की परिभाषा का उदाहरण
<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 एक ConfigurationException
दिखाएगा. इसमें, उस चीज़ के बारे में जानकारी होगी जो मौजूद नहीं है या गलत तरीके से कॉन्फ़िगर की गई है.