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

测试 Elasticsearch

Elasticsearch proporciona un archivo jar que se puede agregar a cualquier IDE de Java y se puede usar para probar código relacionado con Elasticsearch. Al usar el framework proporcionado por Elasticsearch se pueden ejecutar una serie de pruebas. En este capítulo, discutiremos en detalle estas pruebas-

  • Pruebas unitarias

  • Pruebas integradas

  • Prueba aleatoria

Requisitos previos

Para comenzar las pruebas, necesita agregar la dependencia de prueba de Elasticsearch a su programa. Puede usar Maven para este propósito y puede agregar el siguiente contenido a pom.xml.

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

EsSetup ha sido inicializado para iniciar y detener nodos de Elasticsearch y crear índices.

EsSetup esSetup = new EsSetup();

La función con createIndex en esSetup.execute() creará el índice, necesitará especificar la configuración, el tipo y los datos.

Pruebas unitarias

Las pruebas unitarias se realizan utilizando JUnit y el framework de pruebas de Elasticsearch. Se pueden crear nodos e índices utilizando la clase Elasticsearch y se pueden ejecutar pruebas utilizando el método test. Las clases ESTestCase y ESTokenStreamTestCase se utilizan para esta prueba.

Pruebas integradas

Las pruebas integradas utilizan múltiples nodos en el clúster. La clase ESIntegTestCase se utiliza para esta prueba. Hay varios métodos para simplificar el trabajo de preparación de los casos de prueba.

Número de serieMétodos y descripciones
1

refresh()

Actualizar todos los índices del clúster

2

ensureGreen()

Asegurar el estado de clúster de salud verde

3

ensureYellow()

Asegurar el estado de clúster de condición amarilla

4

createIndex(name)

Crear un índice utilizando el nombre pasado a este método

5

flush()

Actualizar todos los índices del clúster
6

flushAndRefresh()

flush() y refresh()

7

indexExists(name)

Verificar si existe el índice especificado

8

clusterService()

Devolver la clase de servicio de clúster java

9

cluster()

Devolver la clase de prueba de clúster

Método de prueba de clúster

Número de serieMétodos y descripciones
1

ensureAtLeastNumNodes(n)

Asegurar que el número mínimo máximo de nodos en el clúster sea mayor o igual al número especificado

2

ensureAtMostNumNodes(n)

Asegurar que el número máximo de nodos en el clúster sea menor o igual al número especificado

3

stopRandomNode()

Detener un nodo aleatorio en el clúster

4

stopCurrentMasterNode()

Detener el nodo principal

5

stopRandomNonMaster()

Detener un nodo aleatorio no maestro en el clúster

6

buildNode()

Crear un nuevo nodo

7

startNode(settings)

Iniciar un nuevo nodo

8

nodeSettings()

Sobrescribe este método para cambiar la configuración del nodo

Acceso al cliente

El cliente se utiliza para acceder a diferentes nodos en el clúster y ejecutar ciertas operaciones. El método ESIntegTestCase.client() se utiliza para obtener un cliente aleatorio. Elasticsearch también proporciona otros métodos para acceder a los clientes, que se pueden usar a través del método ESIntegTestCase.internalCluster().

Número de serieMétodos y descripciones
1

iterator()

Esto ayuda a acceder a todos los clientes disponibles

2

masterClient()

Esto devolverá un cliente que se comunique con el nodo maestro

3

nonMasterClient()

Esto devolverá un cliente que no se comunique con el nodo maestro

4

clientNodeClient()

Esto devolverá el cliente actual en el nodo del cliente

Prueba aleatoria

Esta prueba se utiliza para probar el código del usuario con todos los posibles datos, para evitar que cualquier tipo de datos falle en el futuro. Los datos aleatorios son la mejor opción para ejecutar esta prueba.

Generación de datos aleatorios

En esta prueba, la clase Random se instancia con una instancia proporcionada por RandomizedTest y ofrece muchos métodos para obtener diferentes tipos de datos.

MétodoValor de retorno
getRandom()Instancia de clase aleatoria
randomBoolean()Booleano aleatorio
randomByte()Byte aleatorio
randomShort()Short aleatorio
randomInt()Entero aleatorio
randomLong()Long aleatorio
randomFloat()Float aleatorio
randomDouble()Double aleatorio
randomLocale()Localización aleatoria
randomTimeZone()Zona horaria aleatoria
randomFrom()Elemento aleatorio de un array

Afirmación

Las clases ElasticsearchAssertions y ElasticsearchGeoAssertions contienen afirmaciones, que se utilizan para realizar algunas comprobaciones habituales durante las pruebas. Por ejemplo, observe el código proporcionado aquí-

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