Tradefed'de Opsiyon İşleme

Opsiyon yönetimi, Ticaret Federasyonu'nun modüler yaklaşımının merkezinde yer almaktadır. Özellikle seçenekler, Geliştiricinin, Entegratörün ve Test Çalıştırıcısının birbirlerinin çalışmalarını kopyalamak zorunda kalmadan birlikte çalışabilecekleri mekanizmadır. Basitçe söylemek gerekirse, seçenek işleme uygulamamız, Geliştiricinin bir Java sınıfı üyesini yapılandırılabilir olarak işaretlemesine olanak tanır; bu noktada bu üyenin değeri Entegratör tarafından artırılabilir veya geçersiz kılınabilir ve daha sonra Test Çalıştırıcısı tarafından artırılabilir veya geçersiz kılınabilir. Bu mekanizma, tüm Java içsel türlerinin yanı sıra, içsel türlerin tüm Map veya Collection için de çalışır.

Not: Seçenek işleme mekanizması yalnızca Test Yaşam Döngüsü'nde yer alan arayüzlerden birini uygulayan sınıflar için ve yalnızca bu sınıf yaşam döngüsü makinesi tarafından başlatıldığında çalışır.

Geliştirici

Başlangıç ​​olarak geliştirici bir üyeyi @Option ek açıklamasıyla işaretler. Bu Seçenek ile ilişkili bağımsız değişken adını belirten name ve description değerlerini (en azından) ve komut --help veya --help-all ile çalıştırıldığında TF konsolunda görüntülenecek açıklamayı belirtirler.

Örnek olarak, çeşitli telefon numaralarını çevirecek ve bağlandıktan sonra her numaradan bir dizi DTMF tonu almayı bekleyecek işlevsel bir telefon testi oluşturmak istediğimizi varsayalım.

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
    }

Geliştiricinin bu test için iki yapılandırma noktası ayarlaması için gereken tek şey budur. Daha sonra mWaitTime ve mCalls , yapılandırılabilir olmalarına fazla dikkat etmeden normal şekilde kullanabilirler. @Option alanları, sınıf başlatıldıktan sonra ancak run yöntemi çağrılmadan önce ayarlandığından, bu, uygulayıcılara varsayılanları ayarlamaları veya Map ve Collection alanları üzerinde bir tür filtreleme yapmaları için kolay bir yol sağlar. sadece.

Entegratör

Entegratör, XML ile yazılmış Konfigürasyonlar dünyasında çalışır. Yapılandırma formatı Entegratörün herhangi bir @Option alanı için bir değer ayarlamasına (veya eklemesine) olanak tanır. Örneğin, Entegratörün, varsayılan numarayı çağıran daha düşük gecikme süreli bir testin yanı sıra çeşitli numaraları çağıran uzun süreli bir test tanımlamak istediğini varsayalım. Aşağıdaki gibi görünebilecek bir çift konfigürasyon oluşturabilirler:

<?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 Çalıştırıcısı

Test Çalıştırıcısının ayrıca Ticaret Federasyonu konsolu aracılığıyla bu yapılandırma noktalarına erişimi vardır. İlk ve en önemlisi, run command <name> talimatıyla (veya kısaca run <name> ) bir Komutu (yani bir yapılandırmayı ve onun tüm argümanlarını) çalıştıracaklar. Bunun ötesinde, her yapılandırmada Yaşam Döngüsü Nesneleri tarafından belirtilen alanların yerini alabilecek veya bu alanlara eklenebilecek, komutun parçası olan herhangi bir bağımsız değişken listesini belirtebilirler.

Düşük gecikmeli testi many-numbers telefon numaralarıyla çalıştırmak için Test Çalıştırıcısı şunları gerçekleştirebilir:

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

Veya ters yönden benzer bir etki elde etmek için Test Çalıştırıcısı, many-numbers testi için bekleme süresini azaltabilir:

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

Seçenek Sıralaması

Uygulamanın temelindeki call seçeneğinin bir Map olduğunu ve komut satırında --call tekrarlandığında bunların hepsinin saklanacağını fark edebilirsiniz.

Temelinde long uygulaması bulunan timeout seçeneği yalnızca bir değer saklayabilir. Böylece yalnızca belirtilen son değer saklanacaktır. --timeout 5 --timeout 10 10 içeren timeout ile sonuçlanacaktır.

Temel uygulama olarak bir List veya Collection olması durumunda, tüm değerler komut satırında belirtilen sıraya göre saklanacaktır.

Boole Seçenekleri

Boolean temel türündeki seçenekler, doğrudan seçenek adı iletilerek true olarak ayarlanabilir, örneğin --[option-name] ve --no-[option-name] sözdizimi kullanılarak false olarak ayarlanabilir.

Ayrıca bakınız

Paket ve modüllere geçiş seçenekleri