Testing

Each engine is tested against the real system it replaces. Every container a test starts is throwaway, memory-capped and removed with its volumes.

SuiteProves
cargo testEngines and server: SQL, row-level security, storage, simulations, cache, streams, migrations
tests/e2e/run.shAll four SDKs (with AutoGraph) and TLS against a fresh server
tests/e2e/console.shThe Control Center in Chromium: every page, night mode, phone width
tests/wire/run.shpsql, node-postgres and Drizzle over the Postgres protocol
tests/cache/run.shredis-cli, ioredis, node-redis; 866 replies compared with Redis 7.4 in Docker
tests/stream/run.shkafkajs and librdkafka; a session compared with Apache Kafka 3.9 in Docker
tests/objects/run.shThe AWS SDK over S3
tests/search/run.shIndexing, ranking, tenants, live sync, restarts
tests/migrate/run.shEvery migration source against real PostgreSQL, MySQL, Redis, Kafka and S3 in Docker
tests/diff/run.shRandom queries and scenarios (views, triggers, functions, windows) on Propus and PostgreSQL 18; results must match
tests/diff/extensions.shVector queries against pgvector and geometry queries against PostGIS in Docker; results must match
tests/replication/run.sh <binary>A primary and replicas in separate containers: following, refused writes, new and dropped databases, restarts, synchronous commits, promotion, failover
tests/installer/run.sh <binary>The installer in a throwaway Ubuntu container: signatures, permissions, TLS, upgrade, rollback, uninstall
tests/all.shEverything above plus cargo fmt --check and clippy, with a summary

tests/all.sh needs Docker, Node, Python, a JDK with Maven, .NET, redis-cli and psql. Logs go to $LOGS (a temp folder by default).

Beyond features

  • Seeded simulations of transactions, crashes and schema changes; a failure prints its seed to replay.
  • The server is killed mid-write and every acknowledged transaction must survive.
  • Bytes in data files are flipped and the damage must be reported, never served.
  • Secrets and audited SQL must never reach the disk unencrypted.