Option Handling در Tradefed

مدیریت گزینه در قلب رویکرد مدولار فدراسیون تجارت قرار دارد. به طور خاص، گزینه‌ها مکانیزمی هستند که توسط آن Developer، Integrator و Test Runner می‌توانند بدون نیاز به تکرار کارهای یکدیگر با هم کار کنند. به زبان ساده، پیاده‌سازی مدیریت گزینه ما به توسعه‌دهنده اجازه می‌دهد تا یک عضو کلاس جاوا را به‌عنوان قابل تنظیم علامت‌گذاری کند، در این مرحله ممکن است مقدار آن عضو توسط انتگرال‌کننده افزوده یا لغو شود، و ممکن است متعاقباً توسط Test Runner تقویت یا لغو شود. این مکانیسم برای همه انواع ذاتی جاوا و همچنین برای هر Map یا Collection از انواع ذاتی کار می کند.

توجه: مکانیسم کنترل اختیار فقط برای کلاس‌هایی کار می‌کند که یکی از رابط‌های موجود در Test Lifecycle را پیاده‌سازی می‌کنند، و تنها زمانی که آن کلاس توسط ماشین‌های چرخه حیات نمونه‌سازی شده باشد.

توسعه دهنده

برای شروع، توسعه‌دهنده عضوی را با حاشیه‌نویسی @Option علامت‌گذاری می‌کند. آنها (حداقل) name و مقادیر description را مشخص می کنند، که نام آرگومان مرتبط با آن گزینه را مشخص می کند، و توضیحی را که در کنسول 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>

دونده تست

Test Runner همچنین از طریق کنسول Trade Federation به این نقاط پیکربندی دسترسی دارد. اول از همه، آنها یک Command (یعنی یک پیکربندی و همه آرگومان های آن) را با دستور run command <name> اجرا می کنند (یا به اختصار run <name> ). فراتر از آن، آنها می‌توانند هر فهرستی از آرگومان‌ها را مشخص کنند که بخشی از فرمان است، که ممکن است جایگزین یا الحاق به فیلدهای تعیین‌شده توسط Lifecycle Objects در هر پیکربندی شود.

برای اجرای تست تاخیر کم با شماره تلفن های many-numbers ، Test Runner می تواند موارد زیر را اجرا کند:

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

یا، برای به دست آوردن یک اثر مشابه از جهت مخالف، Test Runner می تواند زمان انتظار برای تست 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] و می توان با استفاده از نحو --no-[option-name] روی false تنظیم کرد.

همچنین ببینید

گزینه ها را به مجموعه و ماژول ها منتقل کنید