Elasticsearch-testing

提供:Dev Guides
移動先:案内検索

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クラスは、このテストに使用されます。 テストケースの準備作業を簡単にするさまざまな方法があります。

S.No Method & Description
1
  • refresh()*

クラスター内のすべてのインデックスが更新されます

2

ensureGreen()

緑のヘルスクラスター状態を保証します

3

ensureYellow()

黄色のヘルスクラスター状態を保証します

4

createIndex(name)

このメソッドに渡された名前でインデックスを作成します

5

flush()

クラスター内のすべてのインデックスがフラッシュされます

6

flushAndRefresh()

flush()およびrefresh()

7

indexExists(name)

指定されたインデックスの存在を確認します

8

clusterService()

クラスタサービスのJavaクラスを返します

9

cluster()

テストクラスタクラスを返します

クラスターメソッドのテスト

S.No Method & Description
1

ensureAtLeastNumNodes(n)

クラスター内のノードの最小数が指定された数以上であることを確認します。

2

ensureAtMostNumNodes(n)

クラスター内の最大ノード数が指定された数以下になるようにします。

3

stopRandomNode()

クラスター内のランダムノードを停止するには

4

stopCurrentMasterNode()

マスターノードを停止するには

5

stopRandomNonMaster()

マスターノードではないクラスター内のランダムノードを停止します。

6

buildNode()

新しいノードを作成する

7

startNode(settings)

新しいノードを開始します

8

nodeSettings()

ノード設定を変更するには、このメソッドをオーバーライドします。

クライアントへのアクセス

クライアントは、クラスター内の異なるノードにアクセスし、何らかのアクションを実行するために使用されます。 ESIntegTestCase.client()メソッドは、ランダムクライアントを取得するために使用されます。 Elasticsearchは、クライアントにアクセスする他のメソッドも提供し、これらのメソッドにはESIntegTestCase.internalCluster()メソッドを使用してアクセスできます。

S.No Method & Description
1

iterator()

これにより、利用可能なすべてのクライアントにアクセスできます。

2

masterClient()

これにより、マスターノードと通信しているクライアントが返されます。

3

nonMasterClient()

これにより、マスターノードと通信していないクライアントが返されます。

4

clientNodeClient()

これは、クライアントノードで現在稼働しているクライアントを返します。

無作為化試験

このテストは、すべての可能なデータでユーザーのコードをテストするために使用されるため、将来どのタイプのデータでもエラーが発生することはありません。 このテストを実行するには、ランダムデータが最適なオプションです。

ランダムデータの生成

このテストでは、RandomizedクラスはRandomizedTestによって提供されるインスタンスによってインスタンス化され、さまざまなタイプのデータを取得するための多くのメソッドを提供します。

Method Return value
getRandom() Instance of random class
randomBoolean() Random boolean
randomByte() Random byte
randomShort() Random short
randomInt() Random integer
randomLong() Random long
randomFloat() Random float
randomDouble() Random double
randomLocale() Random locale
randomTimeZone() Random time zone
randomFrom() Random element from array

アサーション

ElasticsearchAssertionsおよびElasticsearchGeoAssertionsクラスには、テスト時に一般的なチェックを実行するために使用されるアサーションが含まれています。 たとえば、ここで与えられたコードを観察します-

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