Descargo de responsabilidad: Pruebe siempre su aplicación contra un cluster real de Couchbase para asegurar su correcto funcionamiento.
Acerca de CouchbaseMock
Un proyecto poco conocido conocido como CouchbaseMock ha existido durante bastante tiempo aquí en Couchbase. Hace mucho tiempo, cuando Couchbase todavía era conocido como Membasenecesitábamos una aplicación sencilla que actuara como servidor para comprobar que los clientes funcionaban correctamente.
CouchbaseMock todavía sirve a este propósito hoy en día; aunque ejecutamos un extenso conjunto de pruebas contra un cluster real antes de cada lanzamiento del SDK, el CouchbaseMock todavía se utiliza para ensayo con humo (o prueba de sanidad) antes de que cada confirmación se fusione con el repositorio Git.
La ubicuidad de Java y el pequeño tamaño del simulacro (alrededor de 2.5MB de descarga) lo hacen ideal para servir como cluster en sistemas con recursos limitados, donde un Couchbase Cluster completo no puede ser instalado. El mock contiene además algunos comandos especiales para simular varias operaciones (como la conmutación por error, el reequilibrio y la replicación) de una manera controlada y determianda.
En las últimas semanas, he estado trabajando para añadir ver ¡soporte al Mock! - has oído bien: el mock puede ahora entender documentos de diseño, y ejecutar funciones map o reduce definidas por el usuario contra todos los documentos en su base de datos. El soporte de vistas era necesario para que pudiera integrar una funcionalidad de más alto nivel dentro del SDK de C (libcouchbase), cuyos detalles se publicarán en otro post.
Vistas MapReduce en CouchbaseMock
El mock responde correctamente a todas las APIs relacionadas con vistas que ofrece Couchbase. Puedes usar el SDK de tu elección (o rizo) para emitir las llamadas REST API adecuadas para crear documentos de diseño y vistas de consulta.
La implementación de las vistas en el mock de Java se realizó incrustando Mozilla Rhino (un intérprete de JavaScript escrito en Java) en el simulador. JavaScript mapa y reducir son analizadas por Rhino y representadas como objetos Java para el resto del código de simulación.
Se tuvo especial cuidado en asegurar que la funcionalidad de las vistas reflejara la de Couchbase hasta el más mínimo nivel de detalle - esto fue un poco difícil, especialmente en el caso de la clasificación de elementos - ya que la clasificación de Couchbase funciona de forma un poco diferente a la clasificación "tradicional" de JavaScript.
La salida JSON real también se formateó para insertar saltos de línea después de cada fila, para facilitar su lectura desde el terminal.
Por último, el muestra de cerveza también se incluye con la maqueta. Gracias a la compresión XZ, la base de datos ocupa muy poco espacio en la descarga.
API REST administrativa en CouchbaseMock
El mock también permite la creación y eliminación de buckets sobre la marcha. Puedes hacer esto usando la misma API REST que Couchbase entiende. Actualmente solo se soporta la creación, borrado y listado básico de buckets, pero es posible que se implementen más características en el futuro.
Ejecutar CouchbaseMock
Para usar CouchbaseMock, primero obténgalo del repositorio fuente:
|
1 2 3 4 5 6 7 8 9 |
git clone git://github.com/couchbase/CouchbaseMock # Ensure you have Maven and a JDK installed. On debian this might look like # sudo apt-get install openjdk-7-jdk maven cd CouchbaseMock mvn package |
Una vez construido, debería tener un CouchbaseMock-1.0.0-.jar en el objetivo dentro del repositorio fuente. El es el sha1 abreviado de git.
Por último, utilizarlo es tan sencillo como correr:
|
1 |
<span class="s1">java -jar target/CouchbaseMock-1.0.0-gd58ed25.jar</span> -S |
En -S activa la opción muestra de cerveza cubo. Por defecto, el simulacro se ejecutará en el puerto 8091pero puede personalizarse utilizando las opciones de la línea de comandos.
Una vez que el simulacro está en funcionamiento, puede interactuar con él desde el SDK de su elección; esto incluye cosas como realizar operaciones clave-valor, definir/consultar vistas y crear/destruir cubos.
Notas finales
CouchbaseMock es una forma conveniente de crear "algo parecido" a un cluster de Couchbase. Debería funcionar como un drop-in para la mayoría de las aplicaciones y SDKs - de hecho, las pruebas de vista para el propio Mock son más o menos copiadas/pegadas del SDK de Java.
El mock es un proyecto interno y su objetivo principal es probar el SDK. Como tal, el mock no es la forma oficial de probar aplicaciones que utilizan Couchbase, ni hay ninguna garantía de estabilidad con respecto a las características e interfaces del mock - cosas pueden ser añadidas o eliminadas según sea necesario.
Dicho lo anterior, el mock sigue siendo una forma conveniente de probar la funcionalidad básica de las aplicaciones que utilizan couchbase (¡o SDKs!) sin requerir una instalación completa del clúster.
Además, si su aplicación está escrita en Java, puede que incluso desee aventurarse dentro del código fuente del Mock para encontrar formas de incrustarlo en las pruebas.
¿Hay algún plan para incluir la capacidad N1QL a este simulacro? Estamos utilizando N1QL en gran medida para nuestra aplicación y estamos interesados en utilizar un servidor simulado para ello.
Hola, ¿cuál es la mejor manera para mí a la unidad de código de prueba que se pone en contacto couchbase a partir de hoy 2017, ¿sería el simulacro couchbase? (post es de 2015 quiero verificar que no me estoy perdiendo nada).