Xử lý tuỳ chọn trong Tradefed

Việc xử lý tuỳ chọn nằm ở trung tâm của phương pháp mô-đun của Trade Federation. Cụ thể, tuỳ chọn là cơ chế mà nhà phát triển, Trình tích hợp và Trình chạy kiểm thử có thể làm việc cùng nhau mà không cần phải sao chép công việc của nhau. Nói một cách đơn giản, việc triển khai tính năng xử lý tuỳ chọn cho phép nhà phát triển đánh dấu một thành viên lớp Java là có thể định cấu hình, tại thời điểm đó, giá trị của thành viên đó có thể được Trình tích hợp tăng cường hoặc ghi đè, sau đó có thể được Trình chạy kiểm thử tăng cường hoặc ghi đè. Cơ chế này hoạt động cho tất cả các loại nội tại của Java, cũng như cho mọi thực thể Map hoặc Collection của các loại nội tại.

Lưu ý: Cơ chế xử lý tuỳ chọn chỉ hoạt động đối với các lớp triển khai một trong các giao diện có trong Vòng đời kiểm thử và chỉ khi lớp đó được cơ chế vòng đời tạo bản sao.

Nhà phát triển

Để bắt đầu, nhà phát triển đánh dấu một thành phần bằng chú thích @Option. Các giá trị này chỉ định (tối thiểu) các giá trị namedescription, giá trị này chỉ định tên đối số liên kết với Tuỳ chọn đó và nội dung mô tả hiển thị trên bảng điều khiển TF khi lệnh được chạy bằng --help hoặc --help-all.

Ví dụ: giả sử chúng ta muốn tạo một chương trình kiểm thử chức năng của điện thoại để quay số nhiều số điện thoại và dự kiến sẽ nhận được một chuỗi âm DTMF từ mỗi số sau khi kết nối.

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
    }

Đó là tất cả những gì nhà phát triển cần thiết lập hai điểm cấu hình cho kiểm thử đó. Sau đó, họ có thể tắt và sử dụng mWaitTimemCalls như bình thường, mà không cần chú ý nhiều đến việc các thành phần này có thể định cấu hình. Vì các trường @Option được đặt sau khi tạo bản sao lớp, nhưng trước khi gọi phương thức run, nên cách này giúp người triển khai dễ dàng thiết lập các giá trị mặc định hoặc thực hiện một số loại lọc trên các trường MapCollection, nếu không thì các trường này chỉ có thể thêm vào.

Nhà tích hợp

Trình tích hợp hoạt động trong thế giới cấu hình được viết bằng XML. Định dạng cấu hình cho phép Trình tích hợp đặt (hoặc thêm) giá trị cho bất kỳ trường @Option nào. Ví dụ: giả sử Trình tích hợp muốn xác định một kiểm thử có độ trễ thấp hơn gọi số mặc định, cũng như một kiểm thử chạy trong thời gian dài gọi nhiều số. Họ có thể tạo một cặp cấu hình có dạng như sau:

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

Trình chạy kiểm thử

Trình chạy kiểm thử cũng có quyền truy cập vào các điểm cấu hình này thông qua bảng điều khiển Trade Federation. Trước tiên, các lệnh này chạy một lệnh (tức là một cấu hình và tất cả các đối số của cấu hình đó) bằng lệnh run command <name> (viết tắt là run <name>). Ngoài ra, các đối tượng này có thể chỉ định bất kỳ danh sách đối số nào là một phần của lệnh, có thể thay thế hoặc thêm vào các trường do đối tượng vòng đời chỉ định trong mỗi cấu hình.

Để chạy kiểm thử độ trễ thấp bằng số điện thoại many-numbers, Trình chạy kiểm thử có thể thực thi:

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

Hoặc để có được hiệu ứng tương tự theo hướng ngược lại, Trình chạy kiểm thử có thể giảm thời gian chờ cho kiểm thử many-numbers:

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

Thứ tự tuỳ chọn

Bạn có thể nhận thấy rằng tuỳ chọn call cơ bản để triển khai là Map. Vì vậy, khi lặp lại --call trên dòng lệnh, tất cả các tuỳ chọn này đều được lưu trữ.

Tuỳ chọn timeout có cách triển khai cơ bản của long, chỉ có thể lưu trữ một giá trị. Vì vậy, chỉ giá trị cuối cùng được chỉ định mới được lưu trữ. --timeout 5 --timeout 10 dẫn đến timeout chứa 10.

Trong trường hợp List hoặc Collection là phương thức triển khai cơ bản, tất cả các giá trị sẽ được lưu trữ theo thứ tự được chỉ định trên dòng lệnh.

Tuỳ chọn boolean

Bạn có thể đặt các tuỳ chọn của loại cơ bản boolean thành true bằng cách truyền trực tiếp tên tuỳ chọn, ví dụ: --[option-name] và có thể đặt thành false bằng cú pháp --no-[option-name].

Xem thêm

Chuyển các tuỳ chọn đến bộ và mô-đun