Elasticsearch - Test

Elasticsearch fournit un fichier jar, qui peut être ajouté à n'importe quel IDE java et peut être utilisé pour tester le code lié à Elasticsearch. Une gamme de tests peut être effectuée à l'aide du framework fourni par Elasticsearch. Dans ce chapitre, nous discuterons de ces tests en détail -

  • Test unitaire
  • Test d'intégration
  • Tests randomisés

Conditions préalables

Pour commencer les tests, vous devez ajouter la dépendance de test Elasticsearch à votre programme. Vous pouvez utiliser maven à cette fin et ajouter ce qui suit dans pom.xml.

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

EsSetup a été initialisé pour démarrer et arrêter le nœud Elasticsearch et également pour créer des index.

EsSetup esSetup = new EsSetup();

La fonction esSetup.execute () avec createIndex créera les index, vous devez spécifier les paramètres, le type et les données.

Test unitaire

Le test unitaire est effectué à l'aide du framework de test JUnit et Elasticsearch. Le nœud et les index peuvent être créés à l'aide des classes Elasticsearch et dans la méthode de test peuvent être utilisés pour effectuer les tests. Les classes ESTestCase et ESTokenStreamTestCase sont utilisées pour ce test.

Test d'intégration

Les tests d'intégration utilisent plusieurs nœuds dans un cluster. La classe ESIntegTestCase est utilisée pour ce test. Il existe différentes méthodes qui facilitent la préparation d'un scénario de test.

S. Non Méthode et description
1

refresh()

Tous les index d'un cluster sont actualisés

2

ensureGreen()

Garantit un état de cluster de santé vert

3

ensureYellow()

Garantit un état de cluster d'intégrité jaune

4

createIndex(name)

Créer un index avec le nom passé à cette méthode

5

flush()

Tous les index du cluster sont vidés

6

flushAndRefresh()

flush () et refresh ()

sept

indexExists(name)

Vérifie l'existence de l'index spécifié

8

clusterService()

Renvoie la classe Java du service de cluster

9

cluster()

Renvoie la classe de cluster de test

Tester les méthodes de cluster

S. Non Méthode et description
1

ensureAtLeastNumNodes(n)

Garantit que le nombre minimum de nœuds dans un cluster est supérieur ou égal au nombre spécifié.

2

ensureAtMostNumNodes(n)

Garantit que le nombre maximal de nœuds dans un cluster est inférieur ou égal au nombre spécifié.

3

stopRandomNode()

Pour arrêter un nœud aléatoire dans un cluster

4

stopCurrentMasterNode()

Pour arrêter le nœud maître

5

stopRandomNonMaster()

Pour arrêter un nœud aléatoire dans un cluster, qui n'est pas un nœud maître.

6

buildNode()

Créer un nouveau nœud

sept

startNode(settings)

Démarrer un nouveau nœud

8

nodeSettings()

Remplacez cette méthode pour modifier les paramètres des nœuds.

Accéder aux clients

Un client est utilisé pour accéder à différents nœuds dans un cluster et effectuer certaines actions. La méthode ESIntegTestCase.client () est utilisée pour obtenir un client aléatoire. Elasticsearch propose également d'autres méthodes pour accéder au client et ces méthodes sont accessibles à l'aide de la méthode ESIntegTestCase.internalCluster ().

S. Non Méthode et description
1

iterator()

Cela vous aide à accéder à tous les clients disponibles.

2

masterClient()

Cela renvoie un client, qui communique avec le nœud maître.

3

nonMasterClient()

Cela renvoie un client qui ne communique pas avec le nœud maître.

4

clientNodeClient()

Cela renvoie un client actuellement sur le poste client.

Tests randomisés

Ce test est utilisé pour tester le code de l'utilisateur avec toutes les données possibles, afin qu'il n'y ait pas d'échec à l'avenir avec n'importe quel type de données. Les données aléatoires sont la meilleure option pour effectuer ces tests.

Générer des données aléatoires

Dans ce test, la classe Random est instanciée par l'instance fournie par RandomizedTest et propose de nombreuses méthodes pour obtenir différents types de données.

Méthode Valeur de retour
getRandom () Instance de classe aléatoire
randomBoolean () Booléen aléatoire
randomByte () Octet aléatoire
randomShort () Court aléatoire
randomInt () Entier aléatoire
randomLong () Aléatoire long
randomFloat () Flotteur aléatoire
randomDouble () Double aléatoire
randomLocale () Paramètres régionaux aléatoires
randomTimeZone () Fuseau horaire aléatoire
randomFrom () Élément aléatoire du tableau

Assertions

Les classes ElasticsearchAssertions et ElasticsearchGeoAssertions contiennent des assertions, qui sont utilisées pour effectuer certaines vérifications courantes au moment du test. Par exemple, observez le code donné ici -

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