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