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