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:
1 2 3 4 5 6 7 8 9 |
git clone git://github.com/couchbase/CouchbaseMock # Certifique-se de que você tenha o Maven e o JDK instalados. No debian, isso pode se parecer com # sudo apt-get install openjdk-7-jdk maven cd CouchbaseMock mvn pacote |
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:
1 |
<extensão classe="s1">java -frasco alvo/CouchbaseMock-1.0.0-gd58ed25.frasco</extensão> -S |
O -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.
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.
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).