Simulação do cluster do Couchbase com o CouchbaseMock

Isenção de responsabilidade: Sempre teste seu aplicativo em um cluster real do Couchbase para garantir a funcionalidade adequada

Sobre o CouchbaseMock

Um projeto pouco conhecido, conhecido como CouchbaseMock já existe há um bom tempo aqui no Couchbase. Há muito tempo atrás, quando o Couchbase ainda era conhecido como MembasePara isso, precisávamos de um aplicativo simples para atuar como servidor e testar se os clientes funcionavam corretamente.

O CouchbaseMock ainda serve a esse propósito hoje; embora executemos um amplo conjunto de testes em um cluster real antes de cada lançamento do SDK, o CouchbaseMock ainda é usado para teste de fumaça (ou teste de sanidade) antes de cada commit ser mesclado ao repositório Git.

A onipresença do Java e a pequena área ocupada pela simulação (cerca de 2,5 MB de download) a tornam ideal para servir como um cluster em sistemas com recursos limitados, onde um cluster completo do Couchbase não pode ser instalado. Além disso, a simulação contém alguns comandos especiais para simular várias operações (como failover, rebalanceamento e replicação) de forma controlada e determinante.

Nas últimas semanas, tenho trabalhado para adicionar visualização suporte ao Mock! - você ouviu corretamente: o mock agora pode entender documentos de design e executar funções de mapa ou redução definidas pelo usuário em todos os documentos em seu banco de dados. O suporte à visualização foi necessário para que eu pudesse integrar uma funcionalidade de nível superior no SDK C (libcouchbase), cujos detalhes serão publicados em outra postagem.

Visualizações de MapReduce no CouchbaseMock

A simulação responde adequadamente a todas as APIs relacionadas à visualização que o Couchbase oferece. Você pode usar o SDK de sua escolha (ou enrolar) para emitir as chamadas apropriadas à API REST para criar documentos de design e visualizações de consulta.

A implementação de exibições no Java mock foi feita incorporando Mozilla Rhino (um interpretador de JavaScript escrito em Java) no mock. JavaScript mapa e reduzir são analisadas pelo Rhino e representadas como objetos Java para o restante do código de simulação.

Foi tomado um cuidado especial para garantir que a funcionalidade das exibições espelhasse a do Couchbase nos mínimos detalhes. Isso foi um pouco desafiador, especialmente no caso da classificação de itens, pois a classificação do Couchbase funciona de forma um pouco diferente da classificação "tradicional" do JavaScript.

A saída JSON real também foi formatada para inserir quebras de linha após cada linha, para facilitar a leitura no terminal.

Por fim, o amostra de cerveja também é fornecido com o Mock. Usando a compactação XZ, o banco de dados ocupa muito pouco espaço no download real.

API REST administrativa no CouchbaseMock

A simulação também permite a criação e a exclusão de buckets em tempo real. Você pode fazer isso usando a mesma API REST que o Couchbase entende. No momento, somente a criação, a exclusão e a listagem básicas de buckets são compatíveis, mas outros recursos poderão ser implementados no futuro.

Executando o CouchbaseMock

Para usar o CouchbaseMock, primeiro obtenha-o no repositório de código-fonte:

Uma vez construído, você deverá ter um CouchbaseMock-1.0.0-.jar no alvo no repositório de origem. O é o sha1 abreviado do git.

Por fim, usá-lo é tão simples quanto correr:

-S habilita a opção amostra de cerveja bucket. Por padrão, o mock será executado na porta 8091mas isso pode ser personalizado usando as opções da linha de comando.

Depois que a simulação estiver em funcionamento, você poderá interagir com ela a partir do SDK de sua escolha; isso inclui coisas como realizar operações de valor-chave, definir/consultar exibições e criar/destruir buckets.

Notas finais

O CouchbaseMock é uma maneira conveniente de criar "algo parecido" com um cluster do Couchbase. Ele deve funcionar como um drop-in para a maioria dos aplicativos e SDKs - na verdade, os testes de visualização para o próprio Mock são mais ou menos copiados/colados do Java SDK.

A simulação é um projeto interno e seu objetivo principal é testar o SDK. Dessa forma, a simulação não é a maneira oficial de testar aplicativos que usam o Couchbase, nem há qualquer garantia de estabilidade em relação aos recursos e às interfaces da simulação - itens podem ser adicionados ou removidos conforme necessário.

Dito isso, o mock continua sendo uma maneira conveniente de testar a funcionalidade básica de aplicativos que usam o couchbase (ou SDKs!) sem exigir uma instalação completa do cluster.

Além disso, se o seu aplicativo for escrito em Java, você pode até querer se aventurar no código-fonte do Mock para encontrar maneiras de incorporá-lo aos testes.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Mark Nunberg, engenheiro de software, Couchbase

Mark Nunberg é um engenheiro de software que trabalha na Couchbase. Ele mantém a biblioteca do cliente em C (libcouchbase), bem como o cliente em Python. Ele também desenvolveu o cliente Perl (para uso em sua empresa anterior), o que o levou inicialmente a trabalhar no Couchbase. Antes de ingressar no Couchbase, ele trabalhou em sistemas de roteamento distribuídos e de alto desempenho em uma empresa de análise de comércio eletrônico. Mark estudou Linguística na Universidade Hebraica de Jerusalém.

2 Comentários

  1. Existe algum plano para incluir o recurso N1QL nessa simulação? Estamos usando muito o N1QL em nosso aplicativo e temos interesse em usar um servidor de simulação para isso.

  2. Olá, qual é a melhor maneira de fazer o teste unitário do código que entra em contato com o couchbase a partir de hoje, 2017, seria o couchbase mock? (a postagem é de 2015, quero verificar se não estou perdendo nada).

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.