Apply formatters and fix and unused import
pre-commit run --files antithesis/**/*
pre-commit run --files antithesis/**/*
This is more widely compatible
Bwbush/fix fig links
The resource management discussion will be relevant for multiple sections following it (sizing the storage, discussing alternative forms of it).
Minor enhancements to cryptography documentation
Corrections in response to reviewer comments. Co-authored-by: Thomas Vellekoop <[email protected]>
Dockerfiles reference files from both demo/ and antithesis/ directories, so the build context must be the repo root. Signed-off-by: Chris Gianelloni <[email protected]>
- Add `profiles: ["devnet"]` to all proto-devnet services - Proto-devnet now requires `--profile devnet` to start - ImmDB remains `--profile immdb` - Update README with new usage instructions - Update IP addresses in README for immdb profile Usage: docker compose --profile devnet up # Proto-devnet docker compose --profile immdb up # ImmDB mock Signed-off-by: Chris Gianelloni <[email protected]>
Add proto-devnet with 3 block-producing pools as the default setup: - pool1, pool2, pool3 in mesh topology with real block production - tx-generator for transaction load testing - Shared genesis volume for synchronized startup - Fast 0.1s slots for rapid iteration Keep existing immdb-server setup under --profile immdb: - upstream/node0/downstream services moved to immdb profile - analysis-immdb container for immdb-specific metrics Signed-off-by: Chris Gianelloni <[email protected]>
- Separate immdb profile IPs to avoid conflicts with proto-devnet: - upstream: 172.28.0.10 -> 172.28.0.110 - node0: 172.28.0.20 -> 172.28.0.120 - downstream: 172.28.0.30 -> 172.28.0.130 - Fix genesis file paths: use /data directly instead of /data/genesis to match config.json relative path expectations - Both profiles now work correctly together or separately Signed-off-by: Chris Gianelloni <[email protected]>
- cardano-node from leios-prototype branch - tx-generator from stable cardano-node 10.5.4 (leios-prototype has API incompatibility) - cardano-cli from blink labs pre-built image The tx-generator on leios-prototype fails to compile due to ouroboros-network API drift, but has no Leios-specific changes. Signed-off-by: Chris Gianelloni <[email protected]>
- Fix timestamp parsing to handle nanosecond precision (truncate to microseconds) - Fix log format detection: use 'ns' field for namespace detection (cardano-node format) - Add type safety checks for msg/data fields that may be strings - Parse block hash and slot from 'data.newtip' field (format: "hash@slot") - Detect BlockFetch.CompletedBlockFetch and immdb-server MsgBlock events - Fix schedule cleanup: remove stale base-schedule.json and schedule.json on init - Reduce default LEIOS_RELEASE_TIME from 128.9s to 10s for faster testing Signed-off-by: Chris Gianelloni <[email protected]>
- Remove obsolete version attribute from docker-compose.yaml - Rename compose.yaml to k8s-pod.yaml to avoid conflict with docker compose (was a Kubernetes Pod spec, not a compose file) Signed-off-by: Chris Gianelloni <[email protected]>
Antithesis docker-compose stack and CI workflow for testing: - docker-compose.yaml: Full stack orchestration with init containers, main services (upstream, node0, downstream), analysis container, and optional observability stack. Uses 172.28.0.0/24 subnet with static IPs, healthchecks, and WAN emulation support via NET_ADMIN - scripts/test-local.sh: Local testing script that builds images, starts stack, waits for health, runs for configurable duration, and checks analysis assertions - .github/workflows/antithesis-leios.yaml: CI workflow to build and push images to GHCR, with optional local stack testing on PRs Signed-off-by: Chris Gianelloni <[email protected]>
Python-based analysis container that monitors node logs and reports assertions to Antithesis SDK: - Dockerfile.analysis: Python 3.11 slim image with pandas, matplotlib, and antithesis SDK - analyse.py: Log parsing and metrics computation module, extracts Praos and Leios block events, computes latency statistics - entrypoint-analysis.py: Main loop that periodically analyzes logs and reports assertions (p95 latency thresholds, block propagation) Signed-off-by: Chris Gianelloni <[email protected]>
Observability infrastructure for local testing (enabled via --profile observability): - prometheus.yml: Metrics scraping configuration for cardano-nodes - loki.yml: Log aggregation configuration with TSDB storage - alloy.river: Grafana Alloy config to ship logs from /logs to Loki - grafana/provisioning/datasources: Prometheus and Loki datasources - grafana/provisioning/dashboards: Leios overview dashboard with log panels for each node and error/warning filtering Signed-off-by: Chris Gianelloni <[email protected]>