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