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

Elasticsearch 测试

Elasticsearch bietet eine jar-Datei an, die in jede Java IDE eingefügt werden kann und zur Testung von mit Elasticsearch verbundenem Code verwendet werden kann. Mit dem von Elasticsearch bereitgestellten Framework können eine Reihe von Tests durchgeführt werden. In diesem Kapitel werden wir diese Tests im Detail besprechen.-

  • 单元测试

  • 整合测试

  • Zufälliger Test

先决条件

要开始测试,您需要将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类创建节点和索引,并且可以使用test方法执行测试。ESTestCase和ESTokenStreamTestCase类用于此测试。

整合测试

集成测试使用群集中的多个节点。ESIntegTestCase类用于此测试。有多种方法可以简化准备测试用例的工作。

NummerMethoden und Beschreibungen
1

refresh()

将刷新群集中的所有索引

2

ensureGreen()

确保绿色健康集群状态

3

ensureYellow()

确保黄色运行状况群集状态

4

createIndex(name)

使用传递给此方法的名称创建索引

5

flush()

将刷新群集中的所有索引
6

flushAndRefresh()

flush() 和 refresh()

7

indexExists(name)

验证指定索引是否存在

8

clusterService()

返回集群服务 java 类

9

cluster()

返回测试群集类

测试集群方法

NummerMethoden und Beschreibungen
1

ensureAtLeastNumNodes(n)

确保群集中最多的最小节点数大于或等于指定的数目

2

ensureAtMostNumNodes(n)

确保群集中最多的节点数小于或等于指定的数目

3

stopRandomNode()

停止群集中的随机节点

4

stopCurrentMasterNode()

停止主节点

5

stopRandomNonMaster()

Zufälligen Knoten außerhalb des Hauptknotens im Cluster stoppen

6

buildNode()

Neuen Knoten erstellen

7

startNode(settings)

Neuen Knoten starten

8

nodeSettings()

Überschreiben Sie diese Methode, um die Knotenkonfiguration zu ändern

Zugriff auf Client

Der Client wird verwendet, um auf verschiedene Knoten in einem Cluster zuzugreifen und bestimmte Operationen auszuführen. Die Methode ESIntegTestCase.client() wird verwendet, um einen zufälligen Client zu erhalten. Elasticsearch bietet auch andere Methoden zum Zugriff auf Clients, die durch die Methode ESIntegTestCase.internalCluster() verwendet werden können.

NummerMethoden und Beschreibungen
1

iterator()

Dies hilft Ihnen, auf alle verfügbaren Clients zuzugreifen

2

masterClient()

Dies wird einen Client zurückgeben, der mit dem Hauptknoten kommuniziert

3

nonMasterClient()

Dies wird einen Client zurückgeben, der nicht mit dem Hauptknoten kommuniziert

4

clientNodeClient()

Dies wird den aktuellen Client auf dem Client-Knoten zurückgeben

Zufälliger Test

Dieser Test wird verwendet, um Benutzercode mit allen möglichen Daten zu testen, um sicherzustellen, dass in der Zukunft keine Datenart fehlschlägt. Zufällige Daten sind die beste Wahl für die Durchführung dieses Tests.

Erzeugung zufälliger Daten

In diesem Test wird die Klasse Random durch eine Instanz von RandomizedTest instanziert und bietet viele Methoden, um verschiedene Arten von Daten zu erhalten.

MethodeRückgabewert
getRandom()Instanz einer zufälligen Klasse
randomBoolean()Zufällige Boolean
randomByte()Zufällige Byte
randomShort()Zufällige Short
randomInt()Zufällige Integer
randomLong()Zufällige Long
randomFloat()Zufällige Float
randomDouble()Zufällige Double
randomLocale()Zufällige Region
randomTimeZone()Zufällige Zeitzone
randomFrom()Zufälliges Element aus einem Array

Assertion

Die Klassen ElasticsearchAssertions und ElasticsearchGeoAssertions enthalten Assertions, die zur Durchführung einiger häufiger Überprüfungen bei Tests verwendet werden. Zum Beispiel, beobachten Sie hier das gegebene Codebeispiel-

SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6");
assertSearchHits(searchResponse, "123456