Tradefed 中的選項處理

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

注意:選項處理機制僅適用於實現測試生命週期中包含的介面之一的類,並且僅當該類由生命週期機制實例化時才有效。

開發商

首先,開發人員使用@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欄位執行某種過濾提供了一種簡單的方法,否則這些欄位是附加的-僅有的。

積分器

整合器在配置領域工作,配置是用 XML 編寫的。配置格式允許整合器為任何@Option欄位設定(或附加)值。例如,假設整合商想要定義一個呼叫預設號碼的低延遲測試,以及一個呼叫各種號碼的長時間運行的測試。他們可以創建一對可能如下所示的配置:

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

測試運行者

測試運行者也可以透過 Trade Federation 控制台存取這些配置點。首先也是最重要的,他們將使用run command <name>指令(或簡稱run <name> )來執行指令(即設定及其所有參數)。除此之外,他們可以指定任何參數清單作為命令的一部分,這些參數可以替換或附加到每個配置中的生命週期物件指定的欄位。

若要使用many-numbers電話號碼執行低延遲測試,測試執行程式可以執行:

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

或者,為了從相反的方向獲得類似的效果,測試運行器可以減少many-numbers測試的等待時間:

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

選項訂購

您可能會注意到,底層實現的call選項是一個Map ,因此在命令列上重複--call時,它們都會被儲存。

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

如果使用ListCollection作為底層實現,則將按照命令列上指定的順序儲存所有值。

布林選項

布林基礎類型的選項可以透過直接傳遞選項名稱(例如--[option-name]設定為true ,也可以使用語法--no-[option-name]設定為false

也可以看看

將選項傳遞給套件和模組