Elasticsearch - testowanie

Elasticsearch udostępnia plik jar, który można dodać do dowolnego środowiska java IDE i można go użyć do testowania kodu związanego z Elasticsearch. Szereg testów można przeprowadzić przy użyciu struktury dostarczonej przez Elasticsearch. W tym rozdziale omówimy szczegółowo te testy -

  • Testów jednostkowych
  • Testy integracyjne
  • Testy losowe

Wymagania wstępne

Aby rozpocząć testowanie, musisz dodać do swojego programu zależność testową Elasticsearch. Możesz użyć do tego celu maven i dodać następujące elementy w pom.xml.

<dependency>
   <groupId>org.elasticsearch</groupId>
   <artifactId>elasticsearch</artifactId>
   <version>2.1.0</version>
</dependency>

EsSetup został zainicjowany w celu uruchamiania i zatrzymywania węzła Elasticsearch, a także tworzenia indeksów.

EsSetup esSetup = new EsSetup();

Funkcja esSetup.execute () z createIndex utworzy indeksy, musisz określić ustawienia, typ i dane.

Testów jednostkowych

Test jednostkowy jest przeprowadzany przy użyciu środowiska testowego JUnit i Elasticsearch. Węzeł i indeksy mogą być tworzone za pomocą klas Elasticsearch, aw metodzie testowej mogą być używane do przeprowadzania testów. Do testowania używane są klasy ESTestCase i ESTokenStreamTestCase.

Testy integracyjne

Testowanie integracji wykorzystuje wiele węzłów w klastrze. Do testowania używana jest klasa ESIntegTestCase. Istnieje wiele metod, które ułatwiają przygotowanie przypadku testowego.

S.Nr Metoda i opis
1

refresh()

Odświeżane są wszystkie indeksy w klastrze

2

ensureGreen()

Zapewnia zielony stan klastra kondycji

3

ensureYellow()

Zapewnia żółty stan klastra kondycji

4

createIndex(name)

Utwórz indeks z nazwą przekazaną do tej metody

5

flush()

Wszystkie indeksy w klastrze są opróżniane

6

flushAndRefresh()

flush () i refresh ()

7

indexExists(name)

Weryfikuje istnienie określonego indeksu

8

clusterService()

Zwraca klasę java usługi klastra

9

cluster()

Zwraca testową klasę klastra

Testowanie metod klastra

S.Nr Metoda i opis
1

ensureAtLeastNumNodes(n)

Zapewnia, że ​​minimalna liczba węzłów w klastrze jest większa lub równa określonej liczbie.

2

ensureAtMostNumNodes(n)

Zapewnia, że ​​maksymalna liczba węzłów w klastrze jest mniejsza lub równa określonej liczbie.

3

stopRandomNode()

Aby zatrzymać losowy węzeł w klastrze

4

stopCurrentMasterNode()

Aby zatrzymać węzeł główny

5

stopRandomNonMaster()

Aby zatrzymać losowy węzeł w klastrze, który nie jest węzłem głównym.

6

buildNode()

Utwórz nowy węzeł

7

startNode(settings)

Uruchom nowy węzeł

8

nodeSettings()

Zastąp tę metodę zmiany ustawień węzła.

Dostęp do klientów

Klient jest używany do uzyskiwania dostępu do różnych węzłów w klastrze i wykonywania pewnych czynności. Metoda ESIntegTestCase.client () służy do pobierania losowego klienta. Elasticsearch oferuje również inne metody dostępu do klienta, a dostęp do tych metod można uzyskać za pomocą metody ESIntegTestCase.internalCluster ().

S.Nr Metoda i opis
1

iterator()

Ułatwia to dostęp do wszystkich dostępnych klientów.

2

masterClient()

Zwraca to klienta, który komunikuje się z węzłem głównym.

3

nonMasterClient()

Zwraca to klienta, który nie komunikuje się z węzłem głównym.

4

clientNodeClient()

To zwraca klienta aktualnie znajdującego się w węźle klienta.

Testowanie losowe

Testowanie to służy do testowania kodu użytkownika przy użyciu wszelkich możliwych danych, tak aby w przyszłości nie wystąpiły żadne błędy związane z jakimkolwiek typem danych. Dane losowe to najlepsza opcja do przeprowadzenia tego testu.

Generowanie danych losowych

W tym teście klasa Random jest tworzona przez instancję dostarczoną przez RandomizedTest i oferuje wiele metod uzyskiwania różnych typów danych.

metoda Wartość zwracana
getRandom () Wystąpienie losowej klasy
randomBoolean () Losowe wartości logiczne
randomByte () Losowy bajt
randomShort () Losowe krótkie
randomInt () Losowa liczba całkowita
randomLong () Losowo długi
randomFloat () Losowy pływak
randomDouble () Losowe podwójne
randomLocale () Losowe ustawienia regionalne
randomTimeZone () Losowa strefa czasowa
randomFrom () Losowy element z tablicy

Asercje

Klasy ElasticsearchAssertions i ElasticsearchGeoAssertions zawierają asercje, które są używane do wykonywania niektórych typowych kontroli w czasie testowania. Na przykład spójrz na kod podany tutaj -

SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);