English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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

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

  • Модульные тесты

  • Интегрированные тесты

  • случайный тест

Прerequisites

Чтобы начать тестирование, вам нужно добавить зависимость теста 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 для создания узлов и индексов, а также использовать метод test для выполнения тестов. Классы ESTestCase и ESTokenStreamTestCase используются для этого теста.

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

Интегрированные тесты используют несколько узлов в кластере. Класс ESIntegTestCase используется для этого теста. Есть несколько методов, которые могут упростить работу по созданию тестовых примеров.

номерметоды и описание
1

refresh()

Обновить все индексы в кластере

2

ensureGreen()

Убедиться в зеленом состоянии кластера

3

ensureYellow()

Убедиться в желтом состоянии кластера

4

createIndex(name)

Создать индекс с помощью переданного имени метода

5

flush()

Обновить все индексы в кластере
6

flushAndRefresh()

flush() и refresh()

7

indexExists(name)

Проверить, существует ли указанный индекс

8

clusterService()

Возвратить java класс услуги кластера

9

cluster()

Возвратить класс теста кластера

Метод тестирования кластера

номерметоды и описание
1

ensureAtLeastNumNodes(n)

Убедиться, что минимальное количество узлов в кластере не ниже указанного числа

2

ensureAtMostNumNodes(n)

Убедиться, что максимальное количество узлов в кластере не превышает указанного числа

3

stopRandomNode()

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

4

stopCurrentMasterNode()

Остановить узел мастера

5

stopRandomNonMaster()

остановка случайного узла, который не является основным узлом, в кластере

6

buildNode()

создание нового узла

7

startNode(settings)

запуск нового узла

8

nodeSettings()

переопределите этот метод для изменения параметров узла

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

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

номерметоды и описание
1

iterator()

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

2

masterClient()

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

3

nonMasterClient()

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

4

clientNodeClient()

Это вернет текущий клиент на клиентском узле

случайный тест

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

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

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

методвозвратное значение
getRandom()экземпляр случайного класса
randomBoolean()случайное логическое значение
randomByte()случайный байт
randomShort()случайное короткое
randomInt()случайное целое
randomLong()случайное целое
randomFloat()случайное浮-point
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");