The Spec Determine the "nearest" member as the one with the quickest response to a ping.“Choose a member randomly from those at most 15ms "farther" than the nearest member.
„I'm bored
How to validate compliance?
Requirements for validating compliance• Unit tests. • Integration tests. • Tests define as “data”. • Language-agnostic. • Reproducible scenarios.
define
Format - YAML Tests
Scenarios
Our approach:“DIY” testing
benefitsFormat: YAML
• Describes data. • Can translate to actions. • Most languages can use a YAML parsing
library. • Driver authors write a reusable harness. • Changes in the spec can be
communicated via additional YAML tests or changes to existing ones.
Test harness in each driver
1. Resource (mongodb) 2. Specification (parsed YAML) 3. Test (can be run)
3 types of tests
simple: (de)serialization
intermediate: driverhard: driver + mongodb
Simple: (de)serialization
BSON unit testsported from the General Decimal Arithmetic
Specification by Mike Cowlishaw http://speleotrove.com/decimal/dectest.html
Unit test (Decimal128)decimal128/decimal128-1.yml
SDAM unit tests
Intermediate: Driver
Server Discovery and Monitoring Spec
Logic required to make an application using MongoDB highly available.
Unit test #1 - YAMLsingle/direct_connection_standalone.yml
SDAM integration tests
Hard: Driver + server
Mongo Orchestration
Define clusters using JSON.Manipulate clusters via RESTful API.
Mongo OrchestrationHTTP server providing REST interface to manage