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類創建節點和索引,並且在測試方法中可以用來執行測試。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」);