টেমপ্লেট এবং ট্রেডফেড এক্সএমএল কনফিগারেশনে অন্তর্ভুক্ত

একটি টেস্ট সংজ্ঞায়িত করার জন্য একটি একক XML কনফিগারেশন তৈরি করা সবসময় বাস্তবসম্মত নয়। যদি আপনি একই ধরনের টেস্ট চালানোর জন্য সেটআপের কোনো অংশ পুনরায় ব্যবহার করতে চান, তাহলে আপনাকে দুটি বিশাল 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 ফিল্ড থাকে। ডিফল্ট ফিল্ডটি ডিফল্ট প্রতিস্থাপন XML নির্ধারণ করে, যা ব্যবহার করা উচিত।

প্রদত্ত কনফিগারেশনের জন্য একটি টেমপ্লেট প্রতিস্থাপন করতে, কমান্ড লাইনে নিম্নলিখিত কমান্ড প্যারামিটারটি যোগ করতে হবে:

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

--template:map preparers=empty

উদাহরণস্বরূপ:

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

এই ক্ষেত্রে empty রেফারেন্স বলতে empty.xml কনফিগারেশনকে বোঝায়, যার মধ্যে কিছুই থাকে না; আমরা এটিকে রেফারেন্স হিসেবে ব্যবহার করে কিছুই দিয়ে প্রতিস্থাপন করি

XML কনফিগ ফাইলগুলির পাথ অ্যাবসোলিউট অথবা ট্রেডফেডের JAR রিসোর্সের ভেতরের 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 ট্যাগে উল্লেখিত XML-কে এক্সপ্যান্ড করে। টেমপ্লেটের মতোই, কনফিগের পাথ অ্যাবসোলিউট বা রিলেটিভ হতে পারে। তবুও, includes জন্য আমরা শুধু রিলেটিভ পাথ ব্যবহার করার পরামর্শ দিই, কারণ ট্রেডফেডে এগুলো সহজে স্থানান্তরযোগ্য। ট্রেডফেড অন্য কোনো মেশিনে স্থানান্তর করা হলে অ্যাবসোলিউট পাথ আর বৈধ থাকবে না।

ভুল কনফিগারেশন

কনফিগারেশনে কোনো ভুল থাকলে, যেমন প্রতিস্থাপিত XML ফাইলটি খুঁজে না পাওয়া গেলে, Tradefed একটি ConfigurationException থ্রো করবে এবং সেখানে কী অনুপস্থিত বা ভুলভাবে কনফিগার করা হয়েছে তার বিবরণ দেবে।