Elasticsearch-テスト
Elasticsearchはjarファイルを提供します。このファイルは任意のJavaIDEに追加でき、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 | 方法と説明 | 
|---|---|
| 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 | 方法と説明 | 
|---|---|
| 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 | 方法と説明 | 
|---|---|
| 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”);