Elasticsearch - Тестирование

Elasticsearch предоставляет файл jar, который можно добавить в любую Java IDE и использовать для тестирования кода, связанного с Elasticsearch. Ряд тестов может быть выполнен с использованием инфраструктуры, предоставляемой Elasticsearch. В этой главе мы подробно обсудим эти тесты -

  • Модульное тестирование
  • Интеграционное тестирование
  • Рандомизированное тестирование

Предпосылки

Чтобы начать тестирование, вам необходимо добавить в свою программу зависимость тестирования Elasticsearch. Вы можете использовать maven для этой цели и добавить в pom.xml следующее.

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

EsSetup был инициализирован для запуска и остановки узла Elasticsearch, а также для создания индексов.

EsSetup esSetup = new EsSetup();

Функция esSetup.execute () с createIndex создаст индексы, вам нужно указать настройки, тип и данные.

Модульное тестирование

Модульное тестирование выполняется с использованием тестовой среды JUnit и Elasticsearch. Узлы и индексы могут быть созданы с использованием классов Elasticsearch, а в методе тестирования могут использоваться для выполнения тестирования. Для этого тестирования используются классы ESTestCase и ESTokenStreamTestCase.

Интеграционное тестирование

Интеграционное тестирование использует несколько узлов в кластере. Класс ESIntegTestCase используется для этого тестирования. Существуют различные методы, упрощающие подготовку тестового примера.

S.No Метод и описание
1

refresh()

Все индексы в кластере обновляются

2

ensureGreen()

Обеспечивает состояние зеленого кластера здоровья

3

ensureYellow()

Обеспечивает желтое состояние кластера работоспособности

4

createIndex(name)

Создать индекс с именем, переданным в этот метод

5

flush()

Все индексы в кластере сбрасываются

6

flushAndRefresh()

flush () и refresh ()

7

indexExists(name)

Проверяет наличие указанного индекса

8

clusterService()

Возвращает класс Java службы кластера

9

cluster()

Возвращает класс тестового кластера

Методы тестового кластера

S.No Метод и описание
1

ensureAtLeastNumNodes(n)

Гарантирует, что минимальное количество узлов в кластере больше или равно указанному количеству.

2

ensureAtMostNumNodes(n)

Гарантирует, что максимальное количество узлов в кластере меньше или равно указанному количеству.

3

stopRandomNode()

Чтобы остановить случайный узел в кластере

4

stopCurrentMasterNode()

Чтобы остановить главный узел

5

stopRandomNonMaster()

Чтобы остановить случайный узел в кластере, который не является главным узлом.

6

buildNode()

Создать новый узел

7

startNode(settings)

Начать новый узел

8

nodeSettings()

Переопределите этот метод для изменения настроек узла.

Доступ к клиентам

Клиент используется для доступа к различным узлам в кластере и выполнения некоторых действий. Метод ESIntegTestCase.client () используется для получения случайного клиента. Elasticsearch предлагает и другие методы для доступа к клиенту, и к этим методам можно получить доступ с помощью метода ESIntegTestCase.internalCluster ().

S.No Метод и описание
1

iterator()

Это поможет вам получить доступ ко всем доступным клиентам.

2

masterClient()

Это возвращает клиента, который обменивается данными с главным узлом.

3

nonMasterClient()

Это возвращает клиента, который не взаимодействует с главным узлом.

4

clientNodeClient()

Это возвращает клиента, который в настоящее время работает на клиентском узле.

Рандомизированное тестирование

Это тестирование используется для проверки кода пользователя со всеми возможными данными, чтобы в будущем не было сбоев с любыми типами данных. Случайные данные - лучший вариант для проведения этого тестирования.

Генерация случайных данных

В этом тестировании экземпляр класса Random создается экземпляром, предоставленным RandomizedTest, и предлагает множество методов для получения различных типов данных.

Метод Возвращаемое значение
getRandom () Экземпляр случайного класса
randomBoolean () Случайное логическое значение
randomByte () Случайный байт
randomShort () Случайное короткое
randomInt () Случайное целое число
randomLong () Случайный длинный
randomFloat () Случайное плавание
randomDouble () Случайный двойной
randomLocale () Случайная локаль
randomTimeZone () Случайный часовой пояс
randomFrom () Случайный элемент из массива

Утверждения

Классы ElasticsearchAssertions и ElasticsearchGeoAssertions содержат утверждения, которые используются для выполнения некоторых общих проверок во время тестирования. Например, обратите внимание на приведенный здесь код -

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