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”);