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