Elasticsearch-testing
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 |
クラスター内のすべてのインデックスが更新されます |
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”);