Elasticsearch-테스트

Elasticsearch는 모든 Java IDE에 추가 ​​할 수 있고 Elasticsearch와 관련된 코드를 테스트하는 데 사용할 수있는 jar 파일을 제공합니다. 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. 아니 방법 및 설명
1

refresh()

클러스터의 모든 인덱스가 새로 고쳐집니다.

2

ensureGreen()

녹색 상태 클러스터 상태 보장

ensureYellow()

노란색 상태 클러스터 상태를 보장합니다.

4

createIndex(name)

이 메서드에 전달 된 이름으로 인덱스를 만듭니다.

5

flush()

클러스터의 모든 인덱스가 플러시됩니다.

6

flushAndRefresh()

flush () 및 refresh ()

7

indexExists(name)

지정된 인덱스가 있는지 확인합니다.

8

clusterService()

클러스터 서비스 Java 클래스를 반환합니다.

9

cluster()

테스트 클러스터 클래스를 반환합니다.

클러스터 방법 테스트

S. 아니 방법 및 설명
1

ensureAtLeastNumNodes(n)

클러스터에있는 최소 노드 수가 지정된 수 이상인지 확인합니다.

2

ensureAtMostNumNodes(n)

클러스터에서 최대 노드 수가 지정된 수보다 작거나 같은지 확인합니다.

stopRandomNode()

클러스터에서 임의의 노드를 중지하려면

4

stopCurrentMasterNode()

마스터 노드를 중지하려면

5

stopRandomNonMaster()

마스터 노드가 아닌 클러스터에서 임의의 노드를 중지합니다.

6

buildNode()

새 노드 만들기

7

startNode(settings)

새 노드 시작

8

nodeSettings()

노드 설정을 변경하려면이 메서드를 재정의합니다.

클라이언트 액세스

클라이언트는 클러스터의 다른 노드에 액세스하고 일부 작업을 수행하는 데 사용됩니다. ESIntegTestCase.client () 메서드는 임의의 클라이언트를 가져 오는 데 사용됩니다. Elasticsearch는 클라이언트에 액세스 할 수있는 다른 방법도 제공하며 ESIntegTestCase.internalCluster () 메서드를 사용하여 해당 메서드에 액세스 할 수 있습니다.

S. 아니 방법 및 설명
1

iterator()

이렇게하면 사용 가능한 모든 클라이언트에 액세스 할 수 있습니다.

2

masterClient()

이것은 마스터 노드와 통신하는 클라이언트를 반환합니다.

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