Over a million developers have joined DZone.

Mongo Conduction: Or, What I Did For Spring SkunkWorks

DZone's Guide to

Mongo Conduction: Or, What I Did For Spring SkunkWorks

For SkunkWorks, I created MockupDB, a MongoDB Wire Protocol Server in Python; Mongo Conduction, a Wire Protocol server, and a test-suite runner in C.

· Database Zone ·
Free Resource

MariaDB TX, proven in production and driven by the community, is a complete database solution for any and every enterprise — a modern database for modern applications.

MongoDB, Inc. holds quarterly skunkworks sessions—basically a hackathon, but more relaxed. We set aside three days to work on neat hacks, or to start deep projects that need uninterrupted concentration, or to do something new outside our regular duties.

For SkunkWorks last week I did three related projects:

MockupDB, a MongoDB Wire Protocol server written in Python.

Mongo Conduction, a server that receives Wire Protocol messages and creates test deployments of MongoDB servers. It looks sort of like a JSON-over-HTTP RESTful API, but what it actually does is a BSON-over-Wire-Protocol RESTful API.

A test-suite runner written in C. It reads our standard driver test specifications from YAML files, sends commands to Mongo Conduction to create the cluster, and connects the C Driver, libmongoc, to the cluster. It does operations with the driver, and sends more commands to Mongo Conduction to alter the cluster while the driver is connected to it, and asserts that the outcomes of the driver operations match the expected outcomes from the standard test.

In the demo I'm using CLion, a new C/C++ IDE.

If you use the closed captions I added, let me know if I did an ok job, it's my first time captioning a video.

MariaDB AX is an open source database for modern analytics: distributed, columnar and easy to use.

opinion ,nosql ,mongodb ,skunkworks ,suite runner ,wire protocol ,database

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}