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 类用于此测试。有多种方法可以使准备测试用例的工作更容易。
S.No | 方法和说明 |
---|---|
1 |
refresh() 刷新集群中的所有索引 |
2 |
ensureGreen() 确保绿色健康集群状态 |
3 |
ensureYellow() 确保集群健康状态为黄色 |
4 |
createIndex(name) 使用传递给此方法的名称创建索引 |
5 |
flush() 集群中的所有索引均已刷新 |
6 |
flushAndRefresh() flush() 和 refresh() |
7 |
indexExists(name) 验证指定索引是否存在 |
8 |
clusterService() 返回集群服务 java 类 |
9 |
cluster() 返回测试集群类 |
测试集群方法
S.No | 方法和说明 |
---|---|
1 |
ensureAtLeastNumNodes(n) 确保集群中启动的最小节点数大于或等于指定数量。 |
2 |
ensureAtMostNumNodes(n) 确保集群中启动的最大节点数小于或等于指定数量号。 |
3 |
stopRandomNode() 停止集群中的随机节点 |
4 |
stopCurrentMasterNode() 停止主节点 |
5 |
stopRandomNonMaster() 停止集群中的随机节点(不是主节点)节点。 |
6 |
buildNode() 创建一个新节点 |
7 |
startNode(settings) 启动一个新节点 |
8 |
nodeSettings() 重写此方法以更改节点设置。 |
访问客户端
客户端用于访问集群中的不同节点并执行某些操作。ESIntegTestCase.client() 方法用于获取随机客户端。Elasticsearch 还提供其他方法来访问客户端,这些方法可以通过 ESIntegTestCase.internalCluster() 方法访问。
S.No | 方法和说明 |
---|---|
1 |
iterator() 这可以帮助您访问所有可用的客户端。 |
2 |
masterClient() 这将返回一个与主节点通信的客户端。 |
3 |
nonMasterClient() 这将返回一个未与主节点通信的客户端节点。 |
4 |
clientNodeClient() 这将返回当前在客户端节点上启动的客户端。 |
随机测试
此测试用于使用所有可能的数据测试用户的代码,以便将来任何类型的数据都不会出现故障。随机数据是进行此测试的最佳选择。
生成随机数据
在此测试中,Random 类由 RandomizedTest 提供的实例实例化,并提供多种方法来获取不同类型的数据。
方法 | 返回值 |
---|---|
getRandom() | 随机类的实例 |
randomBoolean() | 随机布尔值 |
randomByte() | 随机字节 |
randomShort() | 随机短整型 |
randomInt() | 随机整数 |
randomLong() | 随机long |
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”);