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

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

यहां ट्रेडेड एक्सएमएल कॉन्फ़िगरेशन में 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 कॉन्फ़िगरेशन का रेफ़रंस है, जिसमें कुछ भी नहीं है. हम इसका इस्तेमाल कुछ भी न बदलने के लिए रेफ़रंस के तौर पर करते हैं.

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

  • टूल/ट्राडफ़िडरेशन/कोर/रिज़ॉल्यूशन/कॉन्फ़िगरेशन
  • tools/tradefederation/core/tests/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 में ये ज़्यादा पोर्टेबल होते हैं. अगर ट्रेडफेड को किसी दूसरी मशीन पर ले जाया जाता है, तो ऐब्सलूट पाथ मान्य नहीं होंगे.

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

गलत कॉन्फ़िगरेशन के मामले में, जैसे कि जब एक्सएमएल बदला नहीं जाता है, तो ट्रेडफ़ेड, एक ConfigurationException देगा और उसमें यह जानकारी भी दी जाएगी कि वह कैसा दिख रहा है मौजूद नहीं हैं या गलत तरीके से कॉन्फ़िगर किए गए हैं.