mn-system-tests coordinates cross-repository validation for the core, SDK,
CLI, API, Web UI, installers, current otterdesk-blueprints catalog, live
integration flows, and deterministic benchmark fixtures.
Install the test dependencies from this repository:
.venv/bin/python -m pip install -r requirements.txtInspect the runner:
.venv/bin/python test_all.py --helpOffline gate, safe for local development and CI:
.venv/bin/python -m pytest contracts benchmarks installer -q
.venv/bin/python test_all.py --fast --skip-core --skip-nodeInjected cross-component contracts:
.venv/bin/python -m pytest contracts -q
.venv/bin/python test_all.py --contractsThese tests exercise API, CLI, and SDK code paths with FakeRuntimeClient
instead of Redis, Elixir, Docker, or gRPC.
Interface performance benchmarks:
.venv/bin/python test_all.py --performanceThis writes results/performance.txt and results/performance.json with API,
SDK/gRPC-boundary, CLI, LLM stream parser, and opt-in live probe timings. The
report records hardware, software, package, and git metadata with the numbers.
Live integration and e2e tests:
.venv/bin/python test_all.py --integration --live
.venv/bin/python test_all.py --e2e --liveLive tests are gated by RUN_MN_SYSTEM_TESTS=1; the runner sets this when
--live is present and can start isolated local Core/API services when needed.
Cluster and stress checks:
MN_BENCHMARK_WORKER_COUNT=100 .venv/bin/python -m pytest integration -k parallel_worker
MN_CLUSTER_REMOTE_HOST=192.168.4.173 .venv/bin/python test_all.py --redis-haTwo-box Docker overlay checks remain skipped unless MN_CLUSTER_REMOTE_HOST is
set and Docker/SSH are available.
--changedselects suites related to dirty sibling repositories.--blueprintsruns the currentotterdesk-blueprints/testscatalog checks.--benchmarksruns deterministic offline benchmark/report tests.--performanceruns key interface performance benchmarks and recordsresults/performance.txt.--contractsruns fast API/CLI/SDK boundary tests with injected dependencies.--redis-haruns Redis Sentinel smoke tests and accepts two-box host options.--results-dir PATHwrites runner logs and summaries outside the defaultresults/directory.
Every test_all.py run writes results/system-tests.txt,
results/system-tests.json, runner-driven pytest-*.json summaries, and
per-step logs under results/logs/.
- Installer checks expect this workspace layout.
- Live tests should use isolated
MN_GRPC_PORT,MN_API_BASE_URL, andMN_REDIS_NAMESPACEvalues when run manually. - Performance benchmarks default to injected offline probes. Set
RUN_MN_PERF_LIVE=1withMN_API_URLorMN_API_BASE_URL,MN_GRPC_TARGET,MN_LLM_BASE_URLplusMN_LLM_MODEL, orMN_WEB_UI_URLto add live endpoint measurements. - Add a repository-level license before distributing benchmark fixtures or generated reports outside the project.