From 97a4e8cc300b43b36070024d81ae2d15197ebfd9 Mon Sep 17 00:00:00 2001 From: Marcin Pawlowski Date: Thu, 30 Jul 2026 18:51:15 +0200 Subject: [PATCH] Importing tsi-sim v1 --- tools/simulators/tsi/tsi-sim/.gitignore | 18 ++ tools/simulators/tsi/tsi-sim/Makefile | 41 +++ tools/simulators/tsi/tsi-sim/README.md | 58 +++++ .../tsi/tsi-sim/configs/default.yaml | 16 ++ .../tsi/tsi-sim/configs/fullscale.yaml | 16 ++ .../simulators/tsi/tsi-sim/configs/smoke.yaml | 14 + tools/simulators/tsi/tsi-sim/pyproject.toml | 44 ++++ .../tsi/tsi-sim/requirements-dev.txt | 5 + tools/simulators/tsi/tsi-sim/requirements.txt | 8 + .../tsi/tsi-sim/scripts/make_figures.py | 14 + .../tsi/tsi-sim/scripts/run_sweep.py | 14 + .../simulators/tsi/tsi-sim/scripts/verify.py | 95 +++++++ .../tsi/tsi-sim/src/tsi_sim/__init__.py | 3 + .../tsi/tsi-sim/src/tsi_sim/blocktree.py | 127 +++++++++ .../tsi/tsi-sim/src/tsi_sim/config.py | 116 +++++++++ .../tsi/tsi-sim/src/tsi_sim/constants.py | 39 +++ .../tsi/tsi-sim/src/tsi_sim/engine.py | 34 +++ .../tsi/tsi-sim/src/tsi_sim/epoch.py | 62 +++++ .../tsi/tsi-sim/src/tsi_sim/latency.py | 54 ++++ .../tsi/tsi-sim/src/tsi_sim/lottery.py | 63 +++++ .../tsi/tsi-sim/src/tsi_sim/metrics.py | 70 +++++ .../tsi-sim/src/tsi_sim/plotting/__init__.py | 1 + .../tsi-sim/src/tsi_sim/plotting/figures.py | 241 ++++++++++++++++++ .../src/tsi_sim/plotting/make_figures.py | 69 +++++ .../tsi/tsi-sim/src/tsi_sim/plotting/style.py | 95 +++++++ .../simulators/tsi/tsi-sim/src/tsi_sim/rng.py | 26 ++ .../tsi/tsi-sim/src/tsi_sim/stake.py | 32 +++ .../tsi/tsi-sim/src/tsi_sim/sweep.py | 85 ++++++ .../tsi/tsi-sim/src/tsi_sim/theory.py | 42 +++ .../simulators/tsi/tsi-sim/src/tsi_sim/tsi.py | 77 ++++++ .../tsi/tsi-sim/src/tsi_sim/uncles.py | 80 ++++++ .../tsi/tsi-sim/tests/test_blocktree.py | 54 ++++ .../tsi/tsi-sim/tests/test_lottery.py | 41 +++ .../tsi-sim/tests/test_theory_convergence.py | 49 ++++ .../tsi/tsi-sim/tests/test_tsi_counting.py | 74 ++++++ .../tsi/tsi-sim/tests/test_uncles.py | 68 +++++ 36 files changed, 1945 insertions(+) create mode 100644 tools/simulators/tsi/tsi-sim/.gitignore create mode 100644 tools/simulators/tsi/tsi-sim/Makefile create mode 100644 tools/simulators/tsi/tsi-sim/README.md create mode 100644 tools/simulators/tsi/tsi-sim/configs/default.yaml create mode 100644 tools/simulators/tsi/tsi-sim/configs/fullscale.yaml create mode 100644 tools/simulators/tsi/tsi-sim/configs/smoke.yaml create mode 100644 tools/simulators/tsi/tsi-sim/pyproject.toml create mode 100644 tools/simulators/tsi/tsi-sim/requirements-dev.txt create mode 100644 tools/simulators/tsi/tsi-sim/requirements.txt create mode 100644 tools/simulators/tsi/tsi-sim/scripts/make_figures.py create mode 100644 tools/simulators/tsi/tsi-sim/scripts/run_sweep.py create mode 100644 tools/simulators/tsi/tsi-sim/scripts/verify.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/__init__.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/blocktree.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/config.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/constants.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/engine.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/epoch.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/latency.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/lottery.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/metrics.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/plotting/__init__.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/plotting/figures.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/plotting/make_figures.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/plotting/style.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/rng.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/stake.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/sweep.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/theory.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/tsi.py create mode 100644 tools/simulators/tsi/tsi-sim/src/tsi_sim/uncles.py create mode 100644 tools/simulators/tsi/tsi-sim/tests/test_blocktree.py create mode 100644 tools/simulators/tsi/tsi-sim/tests/test_lottery.py create mode 100644 tools/simulators/tsi/tsi-sim/tests/test_theory_convergence.py create mode 100644 tools/simulators/tsi/tsi-sim/tests/test_tsi_counting.py create mode 100644 tools/simulators/tsi/tsi-sim/tests/test_uncles.py diff --git a/tools/simulators/tsi/tsi-sim/.gitignore b/tools/simulators/tsi/tsi-sim/.gitignore new file mode 100644 index 0000000..c4ee506 --- /dev/null +++ b/tools/simulators/tsi/tsi-sim/.gitignore @@ -0,0 +1,18 @@ +# Generated artifacts +runs/ +results/ +figures/ +!results/.gitkeep +!figures/.gitkeep + +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +.venv/ +venv/ +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +*.parquet +*.csv diff --git a/tools/simulators/tsi/tsi-sim/Makefile b/tools/simulators/tsi/tsi-sim/Makefile new file mode 100644 index 0000000..a1b8ae6 --- /dev/null +++ b/tools/simulators/tsi/tsi-sim/Makefile @@ -0,0 +1,41 @@ +.PHONY: install smoke sweep figures verify test lint clean + +VENV ?= .venv +PY := $(VENV)/bin/python +PIP := $(VENV)/bin/pip + +$(VENV): + python3 -m venv $(VENV) + $(PIP) install --upgrade pip + +install: $(VENV) + $(PIP) install -e ".[dev]" + +# Every sweep writes results + figures into a fresh dated folder under runs/ so new runs +# never overwrite old ones (runs/_