Elasticsearch: pruebas

Elasticsearch proporciona un archivo jar, que se puede agregar a cualquier IDE de Java y se puede utilizar para probar el código relacionado con Elasticsearch. Se puede realizar una variedad de pruebas utilizando el marco proporcionado por Elasticsearch. En este capítulo, discutiremos estas pruebas en detalle:

  • Examen de la unidad
  • Pruebas de integración
  • Pruebas aleatorias

Prerrequisitos

Para comenzar con las pruebas, debe agregar la dependencia de pruebas de Elasticsearch a su programa. Puede usar maven para este propósito y puede agregar lo siguiente en pom.xml.

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

EsSetup se ha inicializado para iniciar y detener el nodo Elasticsearch y también para crear índices.

EsSetup esSetup = new EsSetup();

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

Examen de la unidad

La prueba unitaria se lleva a cabo utilizando JUnit y el marco de prueba Elasticsearch. El nodo y los índices se pueden crear usando clases de Elasticsearch y en el método de prueba se pueden usar para realizar las pruebas. Las clases ESTestCase y ESTokenStreamTestCase se utilizan para esta prueba.

Pruebas de integración

Las pruebas de integración utilizan varios nodos en un clúster. La clase ESIntegTestCase se utiliza para esta prueba. Hay varios métodos que facilitan el trabajo de preparar un caso de prueba.

S. No Método y descripción
1

refresh()

Todos los índices de un clúster se actualizan

2

ensureGreen()

Garantiza un estado de clúster de salud verde

3

ensureYellow()

Garantiza un estado de clúster de salud amarillo

4

createIndex(name)

Crea un índice con el nombre pasado a este método

5

flush()

Todos los índices del clúster se vacían

6

flushAndRefresh()

flush () y actualizar ()

7

indexExists(name)

Verifica la existencia de un índice especificado

8

clusterService()

Devuelve la clase java del servicio de clúster.

9

cluster()

Devuelve la clase de clúster de prueba

Métodos de grupos de prueba

S. No Método y descripción
1

ensureAtLeastNumNodes(n)

Garantiza que el número mínimo de nodos en un clúster sea mayor o igual al número especificado.

2

ensureAtMostNumNodes(n)

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

3

stopRandomNode()

Para detener un nodo aleatorio en un clúster

4

stopCurrentMasterNode()

Para detener el nodo maestro

5

stopRandomNonMaster()

Para detener un nodo aleatorio en un clúster, que no es un nodo principal.

6

buildNode()

Crea un nuevo nodo

7

startNode(settings)

Iniciar un nuevo nodo

8

nodeSettings()

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

Acceder a clientes

Se utiliza un cliente para acceder a diferentes nodos de un clúster y realizar alguna acción. El método ESIntegTestCase.client () se utiliza para obtener un cliente aleatorio. Elasticsearch ofrece otros métodos también para acceder al cliente y se puede acceder a esos métodos utilizando el método ESIntegTestCase.internalCluster ().

S. No Método y descripción
1

iterator()

Esto le ayuda a acceder a todos los clientes disponibles.

2

masterClient()

Esto devuelve un cliente, que se está comunicando con el nodo maestro.

3

nonMasterClient()

Esto devuelve un cliente que no se está comunicando con el nodo maestro.

4

clientNodeClient()

Esto devuelve un cliente actualmente en el nodo del cliente.

Pruebas aleatorias

Esta prueba se utiliza para probar el código del usuario con todos los datos posibles, de modo que no haya fallas en el futuro con ningún tipo de datos. Los datos aleatorios son la mejor opción para realizar esta prueba.

Generando datos aleatorios

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

Método Valor devuelto
getRandom () Instancia de clase aleatoria
randomBoolean () Booleano aleatorio
randomByte () Byte aleatorio
randomShort () Corto aleatorio
randomInt () Entero aleatorio
randomLong () Largo aleatorio
randomFloat () Flotador aleatorio
randomDouble () Doble aleatorio
randomLocale () Configuración regional aleatoria
randomTimeZone () Zona horaria aleatoria
randomFrom () Elemento aleatorio de la matriz

Afirmaciones

Las clases ElasticsearchAssertions y ElasticsearchGeoAssertions contienen aserciones, que se utilizan para realizar algunas comprobaciones comunes en el momento de la prueba. Por ejemplo, observe el código dado aquí:

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