Penanganan Opsi di Tradefed

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

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

Developer

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

Misalnya, kita ingin membuat pengujian telepon fungsional yang akan memanggil berbagai nomor telepon Anda, dan mengharapkan untuk menerima urutan nada DTMF dari setiap nomor setelahnya menghubungkan Anda.

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
    }

Itu saja yang diperlukan Developer untuk menyiapkan dua titik konfigurasi untuk uji coba. Kemudian mereka dapat keluar dan menggunakan mWaitTime dan mCalls seperti biasa, tanpa memperhatikan banyak fakta bahwa mereka dapat dikonfigurasi. Karena Kolom @Option ditetapkan setelah class dibuat instance-nya, tetapi sebelum Metode run dipanggil, yang memberikan cara mudah bagi pengimplementasi untuk menyiapkan default untuk atau melakukan semacam pemfilteran pada kolom Map dan Collection, yang jika tidak, {i>append-only<i}.

Integrator

Integrator bekerja di dunia Konfigurasi, yang ditulis dalam XML. Format konfigurasi memungkinkan Integrator menetapkan (atau menambahkan) nilai untuk kolom @Option mana pun. Contohnya, anggaplah Integrator ingin mendefinisikan pengujian berlatensi lebih rendah yang memanggil jumlah default, sebagai pengujian yang berjalan lama yang memanggil berbagai angka. Mereka bisa 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>

Runner Pengujian

Test Runner juga memiliki akses ke titik konfigurasi ini melalui konsol Trade Federation. Pertama dan terpenting, mereka akan menjalankan Perintah (yaitu, konfigurasi dan semua argumennya) dengan Petunjuk run command <name> (atau disingkat run <name>). Di luar itu, mereka dapat menentukan daftar argumen yang merupakan bagian dari perintah, yang dapat menggantikan atau menambahkan kolom yang ditentukan oleh Objek Siklus Proses di dalam setiap konfigurasi.

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

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

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

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

Pengurutan Opsi

Anda mungkin melihat bahwa opsi call yang mendasari implementasi adalah Map jadi setelah berulang --call pada baris perintah, semuanya akan disimpan.

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

Jika List atau Collection sebagai implementasi yang mendasarinya, semua nilai akan disimpan, sesuai urutan yang ditentukan pada baris perintah.

Opsi Boolean

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

Lihat Juga

Meneruskan opsi ke suite dan modul