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