ES 测试
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的用户的。
下一章:ES 生命周期
在本章中,我们将讨论管理索引生命周期。众所周知,Elasticsearch 不仅执行各种任务,还管理索引生命周期。它涉及根据某些因素(例如分片大小和性能要求)执行管理操作。在 Elasticsearch 6.7 中。从 0 ...