Tradefed'de seçenekleri işleme

Seçeneklerin işlenmesi, Trade Federation'ın modüler yaklaşımının merkezinde yer alı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ışabileceği mekanizmadır. Basitçe söylemek gerekirse, seçenekleri işleme uygulamamız geliştiricinin bir Java sınıf üyesini yapılandırılabilir olarak işaretlemesine olanak tanır. Bu noktada, söz konusu üyenin değeri Entegre Edici 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 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 Test Yaşam Döngüsü'ne dahil edilen arayüzlerden birini uygulayan sınıflar için çalışır ve yalnızca bu sınıf yaşam döngüsü mekanizması tarafından oluşturulduğunda çalışır.

Geliştirici

Geliştirici, başlangıçta bir üyeyi @Option notuyla işaretler. 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, çeşitli telefon numaralarını çeviren ve bağlandıktan sonra her numaradan bir DTMF zil sesi dizisi almayı bekleyen 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ı oluşturması gereken tek şey budur. Ardından, mWaitTime ve mCalls'u yapılandırılabilir olmalarına fazla dikkat etmeden normal şekilde kullanabilirler. @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

Entegratör, XML biçiminde yazılmış 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. Aşağıdaki gibi görünen bir çift yapılandırma 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ı, 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 ötesinde, komutun bir parçası olan tüm bağımsız değişken listelerini belirtebilirler. Bu bağımsız değişkenler, her yapılandırmadaki yaşam döngüsü nesneleri tarafından belirtilen alanları değiştirebilir veya bu alanlara eklenebilir.

Test çalıştırıcı, düşük gecikmeli testi many-numbers telefon numaralarıyla çalıştırmak için şunları yapabilir:

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

Alternatif olarak, Test Çalıştırıcısı, ters yönde benzer bir etki elde etmek için many-numbers testinin bekleme süresini kısaltabilir:

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 işlemlerinin tümü depolanır.

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 depolanır. --timeout 5 --timeout 10, 10 içeren timeout sonucunu döndürür.

Temel uygulama olarak List veya Collection kullanılıyorsa tüm değerler, komut satırında belirtilen sırada saklanı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.

Seçenekleri pakete ve modüllere iletme