English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch テスト

Elasticsearchはjarファイルを提供しており、それをJava IDEに追加してElasticsearchに関連するコードのテストに使用することができます。Elasticsearchが提供するフレームワークを使用して、一連のテストを実行できます。本章では、これらのテストについて詳細に説明します。-

  • ユニットテスト

  • 統合テスト

  • ランダムテスト

先決条件
   テストを開始するには、Elasticsearchテスト依存関係をプログラムに追加する必要があります。mavenを使用してこの目的のために、pom.xmlに以下の内容を追加できます。/<dependency>
   groupId>/artifactId>
   <version>2.1/version>
</dependency>

EsSetupは初期化され、Elasticsearchノードを起動および停止し、インデックスを作成するために使用されます。

EsSetup esSetup = new EsSetup();

esSetup.execute()にcreateIndex関数を含む場合、設定、タイプ、データを指定する必要があります。

ユニットテスト

ユニットテストはJUnitとElasticsearchテストフレームワークを使用して実施されます。Elasticsearchクラスを使用してノードとインデックスを作成し、testメソッドを使用してテストを実行できます。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, "123456