Penanganan opsi di Tradefed

Penanganan opsi adalah inti dari pendekatan modular Trade Federation. Secara khusus, opsi adalah mekanisme yang memungkinkan developer, Integrator, dan Test Runner bekerja sama tanpa harus menduplikasi pekerjaan satu sama lain. Sederhananya, implementasi penanganan opsi kami memungkinkan developer menandai anggota class Java sebagai dapat dikonfigurasi, pada saat nilai anggota tersebut dapat ditambah atau diganti oleh Integrator, dan kemudian dapat ditambah atau diganti oleh Test Runner. Mekanisme ini berfungsi untuk semua jenis intrinsik Java, serta untuk instance Map atau Collection dari jenis intrinsik.

Catatan: Mekanisme penanganan opsi hanya berfungsi untuk class yang mengimplementasikan salah satu antarmuka yang disertakan dalam Siklus Proses Pengujian, dan hanya jika class tersebut dibuat instance-nya oleh mesin siklus proses.

Developer

Untuk memulai, developer menandai anggota dengan anotasi @Option. Parameter ini menentukan (minimal) nilai name dan description, yang menentukan nama argumen yang terkait dengan Opsi tersebut, dan deskripsi yang ditampilkan di konsol TF saat perintah dijalankan dengan --help atau --help-all.

Sebagai contoh, misalkan kita ingin membuat pengujian telepon fungsional yang menghubungi berbagai nomor telepon, dan mengharapkan untuk menerima urutan nada DTMF dari setiap nomor setelah terhubung.

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
    }

Hanya itu yang diperlukan developer untuk menyiapkan dua titik konfigurasi untuk pengujian tersebut. Kemudian, mereka dapat menggunakan mWaitTime dan mCalls seperti biasa, tanpa terlalu memperhatikan fakta bahwa keduanya dapat dikonfigurasi. Karena kolom @Option ditetapkan setelah class dibuat instance-nya, tetapi sebelum metode run dipanggil, hal ini memberikan cara mudah bagi implementor untuk menyiapkan default untuk atau melakukan semacam pemfilteran pada kolom Map dan Collection, yang hanya dapat ditambahkan.

Integrator

Integrator berfungsi di dunia konfigurasi, yang ditulis dalam XML. Format konfigurasi memungkinkan Pengintegrasi menetapkan (atau menambahkan) nilai untuk kolom @Option apa pun. Misalnya, misalnya Integrator ingin menentukan pengujian latensi yang lebih rendah yang memanggil nomor default, serta pengujian yang berjalan lama yang memanggil berbagai nomor. Mereka dapat membuat sepasang konfigurasi yang mungkin terlihat seperti berikut:

<?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

Test Runner juga memiliki akses ke titik konfigurasi ini melalui konsol Trade Federation. Pertama-tama, mereka menjalankan perintah (yaitu, konfigurasi dan semua argumennya) dengan petunjuk run command <name> (atau run <name> untuk singkatnya). Selain itu, mereka dapat menentukan daftar argumen apa pun yang merupakan bagian dari perintah, yang dapat mengganti atau menambahkan ke kolom yang ditentukan oleh objek siklus proses dalam setiap konfigurasi.

Untuk menjalankan pengujian latensi rendah dengan nomor telepon many-numbers, Runner Pengujian dapat menjalankan:

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

Atau, untuk mendapatkan efek yang serupa dari arah yang berlawanan, Runner Pengujian dapat mengurangi waktu tunggu untuk pengujian many-numbers:

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

Urutan opsi

Anda mungkin melihat bahwa opsi call yang mendasari penerapan adalah Map, sehingga setelah --call berulang di command line, semuanya akan disimpan.

Opsi timeout, yang memiliki implementasi dasar long, hanya dapat menyimpan satu nilai. Jadi, hanya nilai terakhir yang ditentukan yang disimpan. --timeout 5 --timeout 10 menghasilkan timeout yang berisi 10.

Jika List atau Collection sebagai implementasi yang mendasarinya, semua nilai akan disimpan, dalam urutan yang ditentukan di command line.

Opsi boolean

Opsi jenis dasar boolean dapat ditetapkan ke true dengan meneruskan nama opsi secara langsung, misalnya, --[option-name] dan dapat ditetapkan ke false menggunakan sintaksis --no-[option-name].

Lihat juga

Teruskan opsi ke suite dan modul