Xử lý quyền chọn trong Tradefed

Việc xử lý quyền chọn là trọng tâm trong cách tiếp cận theo mô-đun của Liên đoàn Thương mại. Đặc biệt, các tùy chọn là cơ chế mà Nhà phát triển, Người tích hợp và Người chạy 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 xử lý tùy chọn của chúng tôi 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 đè và sau đó có thể được Người chạy thử nghiệm tăng cường hoặc ghi đè. Cơ chế này hoạt động với tất cả các kiểu nội tại của Java, cũng như đối với mọi kiểu nội tại Map s hoặc Collection s.

Lưu ý: Cơ chế xử lý tùy 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 thử nghiệm và chỉ khi lớp đó được cơ chế vòng đời khởi tạo .

Nhà phát triển

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

Ví dụ: giả sử chúng tôi muốn xây dựng một bài kiểm tra điện thoại chức năng sẽ quay số nhiều số điện thoại khác nhau và 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 để thiết lập hai điểm cấu hình cho thử nghiệm đó. 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 thực tế là chúng có thể định cấu hình được. Bởi vì các trường @Option được đặt sau khi lớp được khởi tạo, nhưng trước khi phương thức run được gọi, điều đó cung cấp một cách dễ dàng để người triển khai thiết lập mặc định cho 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ì sẽ được thêm vào- chỉ một.

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 nối thêm) một 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 thử nghiệm có độ trễ thấp hơn gọi số mặc định cũng như thử nghiệm chạy dài gọi nhiều loại số. Họ có thể tạo một cặp cấu hình có thể trông giố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>

Người chạy thử

Người chạy 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 của Liên đoàn Thương mại. Đầu tiên và quan trọng nhất, họ sẽ chạy một Lệnh (nghĩa là một cấu hình và tất cả các đối số của nó) bằng lệnh run command <name> (hoặc gọi tắt là run <name> ). Ngoài ra, họ 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 nối thêm vào các trường được chỉ định bởi Đối tượng vòng đời trong mỗi cấu hình.

Để chạy thử nghiệm có độ trễ thấp với số điện thoại many-numbers , Người chạy thử có thể thực thi:

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

Hoặc, để đạt được hiệu quả tương tự từ hướng ngược lại, Người chạy thử có thể giảm thời gian chờ đợi cho bài kiểm tra many-numbers :

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

Thứ tự tùy chọn

Bạn có thể nhận thấy rằng tùy chọn call triển khai cơ bản là Map nên khi lặp lại --call trên dòng lệnh, tất cả chúng sẽ được lưu trữ.

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

Trong trường hợp List hoặc Collection làm 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.

Tùy chọn Boolean

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

Xem thêm

Chuyển tùy chọn cho bộ và mô-đun