Obsługa opcji w ramach Tradefed

Podejście modułowe Federacji Handlowej do wyboru leży u podstaw wielu opcji. Jeśli chodzi o opcje, to mechanizm, dzięki któremu deweloper, integrator i tester mogą współpracować bez powielania i powielania swoich zadań. Krótko mówiąc, nasza implementacja obsługi opcji umożliwia Programista oznacza członka klasy Java jako konfigurowalnego, co oznacza wartość tego użytkownika. mogą zostać uzupełnione lub zastąpione przez integratora, a następnie mogą zostać rozszerzone lub zastąpione przez biegacza testowego. Mechanizm ten działa w przypadku wszystkich typów wbudowanych w Javie oraz Map lub Collection typów wewnętrznych.

Uwaga: mechanizm obsługi opcji działa tylko w przypadku klas implementujących jeden z poniższych interfejsów uwzględnionych w cyklu życia testów i tylko wtedy, gdy ta klasa jest zainicjowane przez maszyny cyklu życia.

Programista

Na początek deweloper oznacza członka @Option adnotacja. Określają one (co najmniej) wartości name i description, które określ nazwę argumentu powiązaną z tą opcją oraz opis, który będzie wyświetlany w konsoli TF, gdy polecenie zostanie uruchomione przy użyciu --help lub --help-all.

Załóżmy na przykład, że chcemy utworzyć test sprawnego telefonu, który będzie wybierać różne numery numerów telefonów i będą otrzymywać sekwencję dźwięków DTMF z każdego kolejnego numeru nawiązuje połączenie.

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
    }

To wszystko, co deweloper potrzebuje, aby skonfigurować 2 punkty konfiguracji. test. Następnie mogą normalnie korzystać z usług mWaitTime i mCalls, Nie zwracając uwagi na to, że można je skonfigurować. Ponieważ Pola @Option są ustawiane po utworzeniu klasy, ale przed klasą Wywoływana jest metoda run, która umożliwia implementatorom łatwego konfigurowania ustawień domyślnych lub filtrowanie pól Map i Collection, które są w przeciwnym razie tylko dołączanie.

Producent

Integrator działa w świecie konfiguracji napisanych w języku XML. Format konfiguracji umożliwia integratorowi ustawianie (lub dołączanie) wartości do dowolnego pola @Option. Przykład: Załóżmy, że integrator chciał zdefiniować test z krótszym czasem oczekiwania, który wywołuje numer domyślny, a także w ramach długotrwałego testu, który wywołuje różne numery. Można utworzyć parę konfiguracji może wyglądać tak:

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

Przebieg testowy

Tester ma także dostęp do tych punktów konfiguracyjnych za pośrednictwem konsoli federacji handlowej. Przede wszystkim uruchomi polecenie (konfigurację i wszystkie jego argumenty) z funkcją Instrukcja run command <name> (w skrócie run <name>). Oprócz tego można określić dowolną listę argumentów, które są częścią polecenia, co może zastąpić lub dołączanie do pól określonych przez obiekty cyklu życia w każdej konfiguracji.

Aby przeprowadzić test niskiego opóźnienia z numerami telefonów many-numbers, może wykonać:

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

Aby uzyskać podobny efekt w odwrotnym kierunku, tester może skrócić czas oczekiwania. dla testu many-numbers:

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

Kolejność opcji

Możesz zauważyć, że bazowa implementacja call to Map więc po powtórzeniu --call w wierszu poleceń wszystkie zostaną zapisane.

Opcja timeout, która bazuje na implementacji long, mogą przechowywać tylko jedną wartość. Zapisana zostanie tylko ostatnia określona wartość. Parametr --timeout 5 --timeout 10 zwróci wartość timeout zawierającą 10.

Jeśli podstawową implementacją jest List lub Collection, wszystkie wartości zostaną zapisane w kolejności określonej w wierszu poleceń.

Opcje wartości logicznej

Opcje bazowego typu wartości logicznej można ustawić na true, przesyłając bezpośrednio nazwa opcji, np. --[option-name] i można ją ustawić na false za pomocą parametru składnię --no-[option-name].

Zobacz również

Opcje kart