No anterior blog expliquei como usar o Docker executando o Couchbase durante seus testes. Ambas as publicações tinham o requisito de que você precisava criar sua própria imagem do Docker do Couchbase com o cluster e os dados já configurados. Nesta publicação, mostrarei como você pode usar nossa imagem oficial do Docker e configurar o cluster como desejar durante a fase de configuração do seu teste.

Um contêiner de teste personalizado do Couchbase

O TestContainers já oferece suporte a vários tipos específicos de contêineres, especialmente no mundo relacional, como você pode ver na página documentação. Eles oferecem alguns recursos avançados, como uma conexão JDBC que permite que você use o banco de dados subjacente diretamente. Com o mesmo espírito, podemos criar um CouchbaseContainer personalizado que permitirá que você configure o cluster e os buckets durante os testes.

Ele será responsável por iniciar a imagem do Docker e retornará uma instância configurada do CouchbaseCluster. Primeiro, definimos o identificador padrão da imagem da plataforma e a porta Liveness como a porta 8091. Essa é a porta que será testada pela estratégia de espera HTTP padrão para o caminho '/ui/index.html#/'. Quando conseguirmos acessar essa página, poderemos começar a configurar o cluster.

A segunda etapa é substituir o método configure para garantir que todas as portas necessárias sejam expostas e definir a estratégia de espera HTTP,

Nesse ponto, você pode testar esse contêiner genérico. A imagem será executada em um estado em que você precisará configurar o Couchbase. Você precisa passar por todas as etapas do assistente. Essas etapas podem ser automatizadas por meio das ferramentas da CLI ou da API REST. Vamos usar a API para configurar o cluster.

Há três chamadas obrigatórias que precisamos fazer. Uma para configurar as cotas de RAM, uma para configurar o nome de usuário e a senha do usuário administrador e uma para configurar os serviços disponíveis no cluster (chave/valor, índice, consulta e fts).

Usando o curl, essas chamadas teriam a seguinte aparência:

Há várias maneiras de fazer um POST em Java, veja um exemplo:

Todas essas chamadas serão feitas a partir do initCluster method. O conteúdo dessas chamadas dependerá da configuração fornecida ao contêiner. Podemos adicionar alguns métodos para definir quais serviços estão ativados, quais são o nome de usuário e a senha, as cotas de RAM ou os buckets de amostra a serem instalados.

Depois de implementar esse método, vamos expor um CouchbaseEnvironnement e um CouchbaseCluster. O getter do ambiente é responsável por executar initCluster se ainda não tiver sido inicializado. Esse método também requer o estratégia de espera personalizada escreveu na postagem anterior. Basicamente, ele faz uma pesquisa em '/pools/default' até que o primeiro nó apresente um estado íntegro.

Aqui está o código da classe completa:

Uso

Para usar o CouchbaseContainer, basta fazer algo como:

Se você quiser ter apenas o serviço k/v em execução com todas as amostras de dados importadas:

Como você pode ver, isso é muito simples e permite que qualquer pessoa execute testes no Couchbase, desde que tenha o Docker instalado.

 Conclusão

Diga-nos nos comentários abaixo se você gostou e se deseja que forneçamos configurações adicionais e atalhos para configurar seu cluster do Couchbase durante os testes.

Autor

Postado por Laurent Doguin

Laurent é um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve código em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programação reativa e outras coisas que estão na moda. Ele também foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experiência para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Relações com Desenvolvedores na Couchbase.

Deixar uma resposta