Elasticsearch - Teste
Elasticsearch fornece um arquivo jar, que pode ser adicionado a qualquer IDE Java e pode ser usado para testar o código relacionado ao Elasticsearch. Uma variedade de testes pode ser realizada usando a estrutura fornecida pelo Elasticsearch. Neste capítulo, discutiremos esses testes em detalhes -
- Teste de unidade
- Teste de integração
- Teste Randomizado
Pré-requisitos
Para começar o teste, você precisa adicionar a dependência de teste Elasticsearch ao seu programa. Você pode usar o maven para essa finalidade e pode adicionar o seguinte em pom.xml.
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.1.0</version>
</dependency>
EsSetup foi inicializado para iniciar e parar o nó Elasticsearch e também para criar índices.
EsSetup esSetup = new EsSetup();
A função esSetup.execute () com createIndex irá criar os índices, você precisa especificar as configurações, tipo e dados.
Teste de Unidade
O teste de unidade é realizado usando a estrutura de teste JUnit e Elasticsearch. Nó e índices podem ser criados usando classes Elasticsearch e no método de teste podem ser usados para realizar o teste. As classes ESTestCase e ESTokenStreamTestCase são usadas para este teste.
Teste de integração
O teste de integração usa vários nós em um cluster. A classe ESIntegTestCase é usada para este teste. Existem vários métodos que facilitam o trabalho de preparação de um caso de teste.
| S.Não | Método e Descrição |
|---|---|
| 1 | refresh() Todos os índices em um cluster são atualizados |
| 2 | ensureGreen() Garante um estado de cluster de integridade verde |
| 3 | ensureYellow() Garante um estado de cluster de integridade amarelo |
| 4 | createIndex(name) Crie um índice com o nome passado para este método |
| 5 | flush() Todos os índices no cluster são liberados |
| 6 | flushAndRefresh() limpar () e atualizar () |
| 7 | indexExists(name) Verifica a existência de índice especificado |
| 8 | clusterService() Retorna a classe java do serviço de cluster |
| 9 | cluster() Retorna a classe de cluster de teste |
Métodos de cluster de teste
| S.Não | Método e Descrição |
|---|---|
| 1 | ensureAtLeastNumNodes(n) Garante que o número mínimo de nós em um cluster seja maior ou igual ao número especificado. |
| 2 | ensureAtMostNumNodes(n) Garante que o número máximo de nós em um cluster seja menor ou igual ao número especificado. |
| 3 | stopRandomNode() Para parar um nó aleatório em um cluster |
| 4 | stopCurrentMasterNode() Para parar o nó mestre |
| 5 | stopRandomNonMaster() Para parar um nó aleatório em um cluster, que não é um nó mestre. |
| 6 | buildNode() Crie um novo nó |
| 7 | startNode(settings) Inicie um novo nó |
| 8 | nodeSettings() Substitua este método para alterar as configurações do nó. |
Acessando clientes
Um cliente é usado para acessar diferentes nós em um cluster e realizar alguma ação. O método ESIntegTestCase.client () é usado para obter um cliente aleatório. Elasticsearch oferece outros métodos também para acessar o cliente e esses métodos podem ser acessados usando o método ESIntegTestCase.internalCluster ().
| S.Não | Método e Descrição |
|---|---|
| 1 | iterator() Isso ajuda você a acessar todos os clientes disponíveis. |
| 2 | masterClient() Isso retorna um cliente, que está se comunicando com o nó mestre. |
| 3 | nonMasterClient() Isso retorna um cliente, que não está se comunicando com o nó mestre. |
| 4 | clientNodeClient() Isso retorna um cliente atualmente ativo no nó cliente. |
Teste Randomizado
Este teste é usado para testar o código do usuário com todos os dados possíveis, para que não haja falha no futuro com qualquer tipo de dado. Dados aleatórios são a melhor opção para realizar este teste.
Gerando Dados Aleatórios
Nesse teste, a classe Random é instanciada pela instância fornecida por RandomizedTest e oferece muitos métodos para obter diferentes tipos de dados.
| Método | Valor de retorno |
|---|---|
| getRandom () | Instância de classe aleatória |
| randomBoolean () | Booleano aleatório |
| randomByte () | Byte aleatório |
| randomShort () | Curto aleatório |
| randomInt () | Inteiro aleatório |
| randomLong () | Random long |
| randomFloat () | Flutuação aleatória |
| randomDouble () | Duplo aleatório |
| randomLocale () | Local aleatório |
| randomTimeZone () | Fuso horário aleatório |
| randomFrom () | Elemento aleatório da matriz |
Afirmações
As classes ElasticsearchAssertions e ElasticsearchGeoAssertions contêm asserções, que são usadas para realizar algumas verificações comuns no momento do teste. Por exemplo, observe o código fornecido aqui -
SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);