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