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

Elasticsearch 테스트

Elasticsearch는 Java IDE에 추가할 수 있는 jar 파일을 제공하며, 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();

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()랜덤 셰ort
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");