ES 测试
Elasticsearch 测试
Elasticsearch 提供了一个jar 文档,用于测试elasticsearch 相关的代码。我们可以将此 jar 文件添加到任何 Java IDE。 Elasticsearch 提供了一个框架,可帮助利用该系统执行一系列测试。基本上在elasticsearch中进行了三种类型的测试来测试代码,如下-
单元测试
集成测试
随机测试
需要记住的一件事是,新版本的 elasticsearch 不支持测试。它现在已被 elasticsearch 社区弃用。但在本章中,我们将为您提供早期版本的elasticsearch用户的一般测试指南。
前置要求
开始执行测试在Elasticsearch中,需要设置一些前置要求。为此,我们必须将 elasticsearch 依赖项添加到我们的程序中。为此,我们可以使用 maven 并将以下代码添加到 pom.xml 文件中。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.1.0</version>
</dependency>
通过创建对象来启动和停止 Elasticsearch 节点来初始化 EsSetup。看下面的代码-
EsSetup esetobj = new EsSetup();
您还可以使用 esSetup.execute() 函数和 createindex 创建索引,其中需要指定设置、类型和数据。
单元测试
单元测试是基础测试,使用elasticsearch测试框架和JUnit。我们可以通过使用 Elasticsearch 类来创建节点和索引,它们可以在测试方法中使用来执行测试。
为了执行单元测试,使用了 Elasticsearch Test Case 和 Elasticsearch Token Stream Case 类。
集成测试
集成测试在单元测试之后进行。在elasticsearch中,它是通过使用集群中的多个节点来执行的。您需要使用 ESIntegTestCase 类进行此测试。 Elasticsearch 提供了多种方法,可以帮助用户更轻松地准备测试用例。以下是这些方法的列表-
方法 |
说明 |
cluster() |
cluster() 方法返回测试集群类。 |
clusterService() |
该函数返回集群服务java类。 |
createIndex(name) |
此方法用于根据传入的名称创建索引。 |
ensureGreen() |
此功能有助于确保绿色健康集群状态。 |
ensureYellow() |
此功能有助于确认黄色健康集群状态。 |
flush() |
该函数用于刷新集群中的所有索引。 |
flushAndRefresh() |
它在一个术语中同时执行flush()和refresh()操作。 |
indexExists(name) |
该函数验证指定的索引是否存在。这意味着它确保了索引的存在。 |
refresh() |
该函数用于刷新集群中的所有索引。 |
测试集群方法
Elasticsearch 提供了几种测试集群方法,下面给出-
方法 |
说明 |
ensureAtLeastNumNodes(n) |
顾名思义,此方法用于确保集群中最少up节点数大于或等于指定数量。 |
ensureAtMostNumNodes(n) |
顾名思义,它用于确保集群中的最大节点数等于或小于指定数量。 |
stopRandomNode() |
该函数用于停止集群中的随机节点。 |
stopCurrentMasterNode() |
停止主节点,这个功能很有用。 |
stopRandomNonMaster() |
此功能有助于停止集群中的随机节点。但是,这个随机节点不是主节点。 |
buildNode() |
buildNode() 函数用于创建一个新节点。 |
startNode(设置) |
该函数用于启动一个新节点。 |
nodeSettings() |
要更改节点设置,我们需要覆盖此方法。 |
访问客户端
在elasticsearch中,客户端用于访问集群中的不同节点。它也对它们执行一些操作。要获取随机客户端,请使用 ESIntegTestCase.client() 方法。 elasticsearch还提供了一些其他的方法,用于访问客户端。 ESIntegCase.internalCluster() 方法用于访问这些方法。以下是这些方法的列表-
方法 |
说明 |
iterator() |
用于访问所有可用客户端的迭代器方法。 |
masterClient() |
此方法返回一个与主节点通信的客户端。 |
nonMasterClient() |
与 masterClient() 方法不同,它返回一个不与主节点通信的客户端。 |
clientNodeClient() |
该方法返回一个客户端,该客户端当前在客户端节点上。 |
随机测试
顾名思义,随机测试针对每个可能的数据测试用户的代码。因此,对于任何类型的数据,失败的可能性都非常小。这是使用随机数据执行此测试的最佳方法。
生成随机数据
在此测试中,RandomizedTest 提供了加速 Random 类的实例.除此之外,它还提供了各种方法来获取不同类型的数据。以下是方法及其返回值-
方法 |
返回值 |
getRandom() |
它返回一个随机类的实例。 |
getBoolean() |
返回随机布尔值。 |
randomByte() |
返回随机字节 |
randomShort() |
随机返回空头 |
randomInt() |
返回随机整数 |
randomLong() |
返回随机长 |
randomFloat() |
返回随机浮动 |
randomDouble() |
返回随机双精度 |
randomLocale() |
返回随机区域 |
randomTimeZone() |
随机返回时区 |
randomFrom() |
从数组中返回随机元素 |
请记住,elasticsearch 社区现已弃用 测试功能。但是本章提供的指南是针对旧版elasticsearch的用户的。