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