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

帶有 createIndex 的 esSetup.execute() 函式將建立索引,您需要指定設定、型別和資料。

單元測試

單元測試是使用 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”);
廣告
© . All rights reserved.