No description
  • Nix 68.4%
  • Python 29.7%
  • Shell 1.4%
  • Java 0.5%
Find a file
2026-09-12 00:39:41 +02:00
.github/workflows clean library exports and docs 2026-06-12 03:46:00 +02:00
docs claims csv and repo info 2026-09-12 00:39:41 +02:00
experiments claims csv and repo info 2026-09-12 00:39:41 +02:00
lib Add repetition token: force fresh VM execution, opt-in 2026-09-12 00:21:18 +02:00
research rabbitmq research 2026-07-09 14:40:58 +02:00
targets etcd v1 2026-09-12 00:21:22 +02:00
tests claims csv and repo info 2026-09-12 00:39:41 +02:00
topotestix base evals reproduce script 2026-09-12 00:26:57 +02:00
.gitignore base evals reproduce script 2026-09-12 00:26:57 +02:00
flake.lock testing & flake file 2026-05-09 15:13:40 +02:00
flake.nix add py tests to runtest alias 2026-07-06 10:14:10 +02:00
LICENSE Initial commit 2026-03-19 17:50:16 +01:00
pyproject.toml Remove Textual TUI module and dependency 2026-06-19 18:14:03 +02:00
README.md readme update for target atuthoring guide 2026-07-06 10:14:37 +02:00

TopoTestix

Environment-aware property-based testing framework for distributed systems, built on Nix and NixOS.

Instead of testing only application-level inputs, TopoTestix treats system configuration as a first-class test dimension. A fuzzer generates diverse NixOS VM configurations (network topology, resource limits, service versions) from a single seed, runs them as NixOS integration tests, and on failure shrinks the seed to find a minimal reproducing case.

Master Thesis for the master's programme in Computing, specializing in Distributed and Cloud Systems, at Poznań University of Technology.

Documentation

All design and planning documents live in docs/:

File Content
docs/idea.md Project motivation, core concepts (PBT, environment-aware testing, Nix as test generator), example property categories, and limitations
docs/architecture.md Module overview (fuzzer, expandTopology, runner, orchestrator), three-layer config composition, data flow, directory structure, and design principles
docs/target-authoring.md Practical cheat sheet for creating new targets: file roles, naming conventions, CLI workflow, result interpretation, and common failure modes
docs/plan.md Phased implementation plan from foundation through shrinking and scale
docs/testing.md How to run tests with nix-unit, test file conventions, and how to verify expected values