معالجة الخيارات في Tradefed

تُعدّ معالجة الخيارات من أهم العناصر في نهج Trade Federation المُركّب. وعلى وجه التحديد، تشكل الخيارات آلية يمكن من خلالها للمطوّر والمدمِج ومسؤول اختبار التطبيقات العمل معًا بدون تكرار عمل بعضهم. ببساطة، يتيح لنا تنفيذنا لمعالجة الخيارات السماح للمطوِّر بوضع علامة على أحد أعضاء فئة Java على أنّه قابل للضبط، وعند هذه النقطة، يمكن لمُدمِج الاختبار تعديل قيمة هذا العضو أو إلغاء تحديدها، ويمكن بعد ذلك لمُشغِّل الاختبار تعديلها أو إلغاء تحديدها. تعمل هذه الآلية مع جميع أنواع Java الأساسية وكذلك مع أي Map أو Collection مثيل من الأنواع الأساسية

ملاحظة: لا تعمل آلية معالجة الخيارات إلا مع الصفوف التي تطبّق إحدى الواجهات المضمّنة في رحلة الاختبار، وذلك فقط عندما يتم إنشاء مثيل لهذه الصفّة من خلال آلية رحلة الاختبار.

مطور التطبيق

للبدء، يضع المطوّر علامة على العضو باستخدام تعليق توضيحي واحد (@Option) تحدّد هذه القيم (على الأقل) قيمتَي name وdescription، اللتين تحددَان اسم الوسيطة المرتبط بهذا الخيار والوصف الذي يظهر علىconsole‏ (وحدة تحكّم) TF عند تنفيذ الأمر باستخدام --help أو --help-all.

على سبيل المثال، لنفترض أننا نريد إنشاء اختبار هاتف فعّال يطلب مجموعة متنوعة من أرقام الهواتف، ويتوقع تلقي سلسلة من نغمات DTMF من كل رقم بعده الاتصال.

public class PhoneCallFuncTest extends IRemoteTest {
    @Option(name = "timeout", description = "How long to wait for connection, in millis")
    private long mWaitTime = 30 * 1000;  // 30 seconds

    @Option(name = "call", description = "Key: Phone number to attempt. " +
            "Value: DTMF to expect. May be repeated.")
    private Map<String, String> mCalls = new HashMap<String, String>;

    public PhoneCallFuncTest() {
        mCalls.add("123-456-7890", "01134");  // default
    }

هذا كل ما يحتاج إليه المطوِّر لإعداد نقطتَي ضبط لهذا الاختبار. ويمكنهم بعد ذلك استخدام mWaitTime وmCalls كالمعتاد، بدون التركيز كثيرًا على إمكانية ضبطهما. نظرًا لأن يتم ضبط حقول @Option بعد إنشاء مثيل للفئة، ولكن قبل إنشاء مثيل يتم استدعاء طريقة run، التي توفر طريقة سهلة للقائمين بالتنفيذ لإعداد الإعدادات الافتراضية أو تنفيذ نوع من الفلترة في حقلَي Map وCollection، وهما إلحاق فقط بطريقة أخرى.

الشركة المتعهّدة

وتعمل أداة الدمج في عالم الإعدادات المكتوبة بتنسيق XML. يتيح تنسيق الضبط لمُدمِج الإعدادات ضبط (أو إلحاق) قيمة لأي حقل @Option. على سبيل المثال: لنفترض أن مسؤول الدمج أراد تحديد اختبار وقت الاستجابة الأقل الذي يستدعي الرقم الافتراضي، كاختبار طويل الأمد يستدعي مجموعة متنوعة من الأرقام. يمكنهم إنشاء زوج من التكوينات التي قد تبدو كما يلي:

<?xml version="1.0" encoding="utf-8"?>
<configuration description="low-latency default test; low-latency.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="timeout" value="5000" />
    </test>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration description="call a bunch of numbers; many-numbers.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="call" key="111-111-1111" value="#*#*TEST1*#*#" />
        <option name="call" key="222-222-2222" value="#*#*TEST2*#*#" />
        <!-- ... -->
    </test>
</configuration>

مشغّل الاختبار

يمكن لـ "أداة تنفيذ الاختبار" أيضًا الوصول إلى نقاط الضبط هذه من خلال وحدة تحكّم Trade Federation. أولاً وقبل كل شيء، يشغّل أمرًا (أي config وجميع وسيطاته) مع run command <name> تعليمات (أو run <name> للاختصار). علاوة على ذلك، يمكنه تحديد أي قائمة من الوسيطات هي جزء من الأمر، والذي يمكن أن يحل محل أو إلحاق بالحقول المحددة بواسطة عناصر مراحل النشاط داخل كل إعداد.

لإجراء اختبار وقت الاستجابة المنخفض باستخدام أرقام الهواتف many-numbers، يمكن لـ "أداة تنفيذ الاختبارات" تنفيذ ما يلي:

tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#

أو للحصول على تأثير مماثل من الاتجاه المقابل، يمكن لـ "أداة تشغيل الاختبارات" تقليل وقت الانتظار لاختبار many-numbers:

tf> run many-numbers.xml --timeout 5000

ترتيب الخيارات

قد تلاحظ أنّ التنفيذ الأساسي لخيار call هو Map ، لذا عند تكرار --call على سطر الأوامر، يتم تخزينها كلها.

الخيار timeout، الذي يتضمّن آلية تنفيذ long الأساسية يمكنها تخزين قيمة واحدة فقط. وبالتالي، يتم تخزين القيمة الأخيرة المحدّدة فقط. --timeout 5 --timeout 10 نتيجة في timeout تشمل 10 نتائج.

في حال اعتماد List أو Collection كعملية تنفيذ أساسية، يتم تخزين جميع القيم بالترتيب المحدد في سطر الأوامر.

الخيارات المنطقية

يمكن ضبط خيارات النوع الأساسي المنطقي على true من خلال تمرير اسم الخيار مباشرةً، على سبيل المثال، --[option-name]، ويمكن ضبطه على false باستخدام بناء الجملة --no-[option-name].

انظر أيضًا

تمرير الخيارات إلى الجناح الوحدات