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

带有 createIndex 的 esSetup.execute() 函数将创建索引,您需要指定设置、类型和数据。

单元测试

单元测试是使用 JUnit 和 Elasticsearch 测试框架进行的。可以使用 Elasticsearch 类创建节点和索引,并在测试方法中使用它们来执行测试。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() 随机类实例
randomBoolean() 随机布尔值
randomByte() 随机字节
randomShort() 随机短整型
randomInt() 随机整数
randomLong() 随机长整型
randomFloat() 随机浮点数
randomDouble() 随机双精度浮点数
randomLocale() 随机区域设置
randomTimeZone() 随机时区
randomFrom() 数组中的随机元素

断言

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

SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);
广告
© . All rights reserved.