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类创建节点和索引,并且在测试方法中可以用来执行测试。ESTestCaseESTokenStreamTestCase类用于此测试。

集成测试

集成测试在集群中使用多个节点。 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() 随机类的实例
randomBoolean() 随机布尔值
randomByte() 随机字节值
randomShort() 随机短整型值
randomInt() 随机整型值
randomLong() 随机长整型值
randomFloat() 随机浮点值
randomDouble() 随机双精度浮点值
randomLocale() 随机区域设置
randomTimeZone() 随机时区
randomFrom() 数组中的随机元素

断言

ElasticsearchAssertionsElasticsearchGeoAssertions类包含断言,用于在测试时执行一些常见检查。 例如,

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