Elasticsearch 测试

Elasticsearch提供了一个jar文件,可以将其添加到任何Java IDE中,并可以用于测试与Elasticsearch相关的代码。使用Elasticsearch提供的框架可以执行一系列测试。在本章中,我们将详细讨论这些测试-

  • 单元测试

  • 整合测试

  • 随机测试

先决条件

要开始测试,您需要将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类用于此测试。有多种方法可以简化准备测试用例的工作。

序号方法与说明
1

refresh()

将刷新群集中的所有索引

2

ensureGreen()

确保绿色健康集群状态

3

ensureYellow()

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

4

createIndex(name)

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

5

flush()

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

flushAndRefresh()

flush() 和 refresh()

7

indexExists(name)

验证指定索引是否存在

8

clusterService()

返回集群服务 java 类

9

cluster()

返回测试群集类

测试集群方法

序号方法与说明
1

ensureAtLeastNumNodes(n)

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

2

ensureAtMostNumNodes(n)

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

3

stopRandomNode()

停止群集中的随机节点

4

stopCurrentMasterNode()

停止主节点

5

stopRandomNonMaster()

停止群集中不是主节点的随机节点

6

buildNode()

创建新节点

7

startNode(settings)

启动新节点

8

nodeSettings()

重写此方法以更改节点设置

访问客户端

客户机用于访问集群中的不同节点并执行某些操作。ESIntegTestCase.client()方法用于获取随机客户端。Elasticsearch还提供了访问客户端的其他方法,这些方法可以使用ESIntegTestCase.internalCluster()方法。

序号方法与说明
1

iterator()

这有助于您访问所有可用的客户端

2

masterClient()

这将返回一个与主节点通信的客户机

3

nonMasterClient()

这将返回一个客户端,该客户端不与主节点通信

4

clientNodeClient()

这将返回当前处于客户端节点上的客户端

随机测试

此测试用于测试用户代码与所有可能的数据,以便将来不会出现任何类型的数据失败。随机数据是执行此测试的最佳选择。

生成随机数据

在此测试中,Random类由RandomizedTest提供的实例实例化,并提供了许多用于获取不同类型数据的方法。

方法返回值
getRandom()Instance of random class
randomBoolean()Random boolean
randomByte()Random byte
randomShort()Random short
randomInt()Random integer
randomLong()Random long
randomFloat()Random float
randomDouble()Random double
randomLocale()Random locale
randomTimeZone()Random time zone
randomFrom()Random element from array

断言

ElasticsearchAssertions和ElasticsearchGeoAssertions类包含断言,这些断言用于在测试时执行一些常规检查。例如,观察此处给出的代码-

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