Tradefed 中的期權處理

期權處理是 Trade Federation 模塊化方法的核心。特別是,選項是開發人員、集成人員和測試運行人員可以一起工作而不必重複彼此工作的機制。簡而言之,我們的選項處理實現允許開發人員將 Java 類成員標記為可配置的,此時該成員的值可能會被 Integrator 增加或覆蓋,並且隨後可能被 Test Runner 增加或覆蓋。這種機制適用於所有 Java 內在類型,以及任何MapCollection的內在類型。

注意:選項處理機制僅適用於實現Test Lifecycle中包含的接口之一的類,並且僅當該類由生命週期機制實例化時。

開發商

首先,開發人員使用@Option註釋標記成員。它們指定(至少) namedescription值,指定與該選項關聯的參數名稱,以及使用--help--help-all運行命令時將在 TF 控制台上顯示的描述。

舉個例子,假設我們要構建一個功能性電話測試,它將撥打各種電話號碼,並期望在每個號碼連接後接收到一個 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
    }

這就是開發人員為該測試設置兩個配置點所需的全部內容。然後他們可以正常使用mWaitTimemCalls ,而無需過多注意它們是可配置的事實。因為@Option字段是在類實例化之後設置的,但在調用run方法之前,這為實現者提供了一種簡單的方法來為MapCollection字段設置默認值或執行某種過濾,否則這些字段是附加的-只要。

積分器

Integrator 在以 XML 編寫的配置世界中工作。配置格式允許 Integrator 為任何@Option字段設置(或附加)一個值。例如,假設 Integrator 想要定義一個調用默認號碼的低延遲測試,以及一個調用各種號碼的長時間運行的測試。他們可以創建一對可能如下所示的配置:

<?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 控制台訪問這些配置點。首先,他們將使用run command <name>指令(或簡稱run <name> )運行命令(即配置及其所有參數)。除此之外,他們可以指定任何參數列表作為命令的一部分,可以替換或附加到每個配置中生命週期對象指定的字段。

要使用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時,它們都將被存儲。

具有long底層實現的選項timeout只能存儲一個值。所以只會存儲最後指定的值。 --timeout 5 --timeout 10將導致包含 10 的timeout

ListCollection作為底層實現的情況下,所有值都將按照命令行上指定的順序存儲。

布爾選項

布爾基礎類型的選項可以通過直接傳遞選項名稱設置為true ,例如--[option-name]並且可以使用語法--no-[option-name]設置為false

也可以看看

將選項傳遞給套件和模塊