Tradefed'de seçenekleri işleme

Ticaret Federasyonu'nun modüler yaklaşımının temelinde opsiyon kullanımı yer alır. Özellikle, seçenekler uygulama geliştiricisinin, Entegratörün ve Test Çalıştırıcısının herhangi bir çaba gerekmeden birlikte çalışabileceği ve birbirlerinin çalışmasını kopyalamak zorunda kalıyor. Basitçe ifade etmek gerekirse, seçenek işlemeyi uygulamamız, bir Java sınıfı üyesini yapılandırılabilir olarak işaretlemesini gerektirir. Bu noktada, söz konusu üyenin değeri integratör tarafından artırılabilir veya geçersiz kılınabilir ve daha sonra test etmek için kullanılır. Bu mekanizma, tüm Java doğal türleri ve doğal türlerin Map veya Collection örnekleri için çalışır.

Not: Seçenek işleme mekanizması yalnızca sınıflarda çalışır bunlardan birini uygulamak Test Yaşam Döngüsü'ne dahil edilen arayüzler ve yalnızca söz konusu sınıf yaşam döngüsü makinesi tarafından tespit edilir.

Geliştirici

Başlangıç olarak geliştirici, bir üyeyi @Option ek açıklaması. Bu seçenekler, en azından name ve description değerlerini belirtir. Bu değerler, ilgili seçenekle ilişkili bağımsız değişken adını ve komut --help veya --help-all ile çalıştırıldığında TF konsolunda gösterilen açıklamayı belirtir.

Örneğin, telefon numarası gibi çeşitli işlevleri arayan işlevsel bir telefon testi oluşturmak ve bu numaradan sonra gelen her numaradan bir dizi DTMF tonu almayı bekler. bağlanır.

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 SDK'ya ilişkin iki yapılandırma noktası oluşturması için gereken tüm bu testi. Sonrasında devre dışı bırakıp mWaitTime ve mCalls uygulamalarını normal şekilde kullanabilirler. ancak yapılandırılabilir olduklarına çok dikkat etmeyin. @Option alanları, sınıf oluşturulduktan sonra ancak run yöntemi çağrılmadan önce ayarlandığından, uygulayıcıların varsayılan ayarları belirlemesi veya aksi takdirde salt ekleme olan Map ve Collection alanlarında bir tür filtreleme yapması için kolay bir yol sağlar.

Entegre eden

Integrator, XML'de yazılan yapılandırmalar dünyasında çalışır. Yapılandırma biçimi, entegre edicinin herhangi bir @Option alanı için değer ayarlamasına (veya eklemesine) olanak tanır. Örneğin, entegratör'ün varsayılan numarayı arayan düşük gecikmeli bir testin yanı sıra çeşitli numaraları arayan uzun süreli bir test tanımlamak istediğini varsayalım. Bir iki konfigürasyon çifti oluşturabilir aşağıdaki gibi görünebilir:

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

Test çalıştırıcı, Trade Federation konsolu üzerinden de bu yapılandırma noktalarına erişebilir. Öncelikle, run command <name> talimatıyla (veya kısaca run <name>) bir komut (yani bir yapılandırma ve tüm bağımsız değişkenleri) çalıştırırlar. Bunun yanı sıra, komutun parçası olan herhangi bir bağımsız değişken listesini de belirtebilir. her yapılandırmadaki yaşam döngüsü nesneleri tarafından belirtilen alanlara ekleyin.

many-numbers telefon numarasıyla düşük gecikme testi yapmak için Test Çalıştırıcısı yürütülebilir:

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

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

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

Seçenek sıralaması

Uygulamanın temel aldığı call seçeneğinin Map olduğunu fark edebilirsiniz. Bu nedenle, komut satırında tekrarlanan --call komutları tümünün depolanmasını sağlar.

long'un temel uygulamasını içeren timeout seçeneği yalnızca bir değer saklayabilir. Bu nedenle, yalnızca belirtilen son değer saklanır. --timeout 5 --timeout 10, 10 içeren timeout sonucunu döndürür.

Temel uygulama olarak List veya Collection olması durumunda tüm değerler komut satırında belirtilen sırayla depolanır.

Boole seçenekleri

Temel Boole türündeki seçenekler, doğrudan seçenek adı (ör. --[option-name]) ile true olarak ayarlanabilir ve --no-[option-name] söz dizimi kullanılarak false olarak ayarlanabilir.

Ayrıca bkz.

Paket ve servis için kart seçenekleri modüllerini