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

集成測試

集成測試在集群中使用多個節點。 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() 數組中的隨機元素

斷言

ElasticsearchAssertionsElasticsearchGeoAssertions類包含斷言,用於在測試時執行一些常見檢查。 例如,

SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);

上一篇: Elasticsearch模組 下一篇: Elasticsearch入門教學