Tradefed'de Opsiyon İşleme

Opsiyon yönetimi, Ticaret Federasyonu'nun modüler yaklaşımının merkezinde yer alır. Özellikle seçenekler, Geliştirici, Entegratör ve Test Çalıştırıcısının birbirlerinin çalışmalarını çoğaltmak zorunda kalmadan birlikte çalışabileceği 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 o ü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ürleri için olduğu kadar, içsel türlerin herhangi bir Map s veya Collection s'si için de çalışır.

Not: Seçenek işleme mekanizması yalnızca Test Yaşam Döngüsüne dahil edilen arabirimlerden 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şlamak için geliştirici bir üyeyi @Option ek açıklamasıyla işaretler. Bu Seçenek ile ilişkili argüman adını belirten name ve description değerlerini ve komut --help veya --help-all ile çalıştırıldığında TF konsolunda görüntülenecek açıklamayı (en azından) 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, yapılandırılabilir olduklarına fazla dikkat etmeden mWaitTime ve mCalls normal şekilde kullanabilirler. @Option alanları, sınıf somutlaştırıldıktan sonra, ancak run yöntemi çağrılmadan önce ayarlandığından, bu, uygulayıcıların varsayılanları ayarlaması veya Map ve Collection alanları üzerinde bir tür filtreleme gerçekleştirmesi için kolay bir yol sağlar; sadece.

Entegratör

Entegratör, XML'de yazılan 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) izin verir. Ö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>
tutucu2 l10n-yer
<?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 Koşucusu

Test Runner'ın ayrıca Trade Federation konsolu aracılığıyla bu yapılandırma noktalarına erişimi vardır. Her şeyden önce, run command <name> (veya kısaca run <name> ad> komutunu çalıştırarak) bir Komut (yani, bir yapılandırma ve tüm argümanları) çalıştıracaklar. Bunun ötesinde, her yapılandırmada Yaşam Döngüsü Nesneleri tarafından belirtilen alanların yerini alabilecek veya bunlara eklenebilecek herhangi bir argüman listesinin komutun parçası olduğunu belirtebilirler.

Çok many-numbers telefon numaralarıyla düşük gecikmeli testi çalıştırmak için Test Çalıştırıcısı şunları yürütebilir:

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 Runner, many-numbers testin bekleme süresini azaltabilir:

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

Opsiyon Sıralaması

Uygulamanın altında yatan call seçeneğinin bir Map olduğunu fark edebilirsiniz, bu nedenle komut satırında tekrarlanan --call hepsi saklanacaktır.

Temelde long uygulaması olan timeout seçeneği yalnızca bir değer depolayabilir. Böylece sadece belirtilen son değer saklanacaktır. --timeout 5 --timeout 10 , 10 içeren timeout neden olur.

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

Boole Seçenekleri

Boole temel türünün seçenekleri, 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