您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Elasticsearch 测试

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

联系我
置顶