426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
126 lines
3.9 KiB
Python
126 lines
3.9 KiB
Python
"""Tests for `scripts/eval_checkpoint.py` results-store integration.
|
|
|
|
Exercises only the `record_to_results_store` write path — we don't
|
|
spin up the full native tool-call benchmark subprocess here. The shared W0-X5
|
|
SQLite results store is exercised against a tmp-path SQLite file.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
HERE = Path(__file__).resolve().parent
|
|
sys.path.insert(0, str(HERE))
|
|
|
|
import eval_checkpoint # noqa: E402
|
|
|
|
|
|
def _load_results_store():
|
|
"""Load ResultsStore directly by file path to avoid shadowing the
|
|
training package's local ``lib`` namespace with the benchmarks one.
|
|
|
|
``scripts/lib/`` and ``packages/benchmarks/lib/`` collide on package
|
|
name; pytest's collection of training tests already imports the
|
|
former. Direct file-path loading keeps the two isolated.
|
|
"""
|
|
module_name = "_eliza_test_results_store"
|
|
if module_name in sys.modules:
|
|
return sys.modules[module_name].ResultsStore
|
|
rs_path = HERE.parent.parent / "benchmarks" / "lib" / "results_store.py"
|
|
spec = importlib.util.spec_from_file_location(module_name, rs_path)
|
|
assert spec is not None and spec.loader is not None
|
|
module = importlib.util.module_from_spec(spec)
|
|
sys.modules[module_name] = module
|
|
spec.loader.exec_module(module)
|
|
return module.ResultsStore
|
|
|
|
|
|
ResultsStore = _load_results_store()
|
|
|
|
|
|
def _fake_result(step: int = 250) -> dict:
|
|
return {
|
|
"step": step,
|
|
"checkpoint_dir": "/tmp/checkpoint-250",
|
|
"format_ok": 0.82,
|
|
"content_ok": 0.74,
|
|
"tokens_per_sec": 95.0,
|
|
"peak_vram_mb": 18432,
|
|
"evaluated_at": "2026-05-11T00:00:00Z",
|
|
"registry_key": "gemma4-e2b",
|
|
}
|
|
|
|
|
|
def test_record_to_results_store_inserts_row(tmp_path: Path) -> None:
|
|
db_path = tmp_path / "results.db"
|
|
result = _fake_result()
|
|
|
|
row_id = eval_checkpoint.record_to_results_store(
|
|
result,
|
|
db_path=db_path,
|
|
dataset_version="eliza-native-v1@2026-05-11",
|
|
code_commit="deadbeef",
|
|
)
|
|
assert row_id > 0
|
|
|
|
store = ResultsStore(db_path=db_path)
|
|
try:
|
|
history = store.get_history(
|
|
model_id="gemma4-e2b",
|
|
benchmark=eval_checkpoint.CHECKPOINT_EVAL_BENCHMARK_ID,
|
|
limit=10,
|
|
)
|
|
finally:
|
|
store.close()
|
|
|
|
assert len(history) == 1
|
|
run = history[0]
|
|
assert run.benchmark == eval_checkpoint.CHECKPOINT_EVAL_BENCHMARK_ID
|
|
assert run.model_id == "gemma4-e2b"
|
|
assert run.dataset_version == "eliza-native-v1@2026-05-11"
|
|
assert run.code_commit == "deadbeef"
|
|
# Macro-average of 0.82 and 0.74.
|
|
assert abs(run.score - 0.78) < 1e-9
|
|
raw = run.raw()
|
|
assert raw["step"] == 250
|
|
assert raw["format_ok"] == 0.82
|
|
assert raw["content_ok"] == 0.74
|
|
assert raw["registry_key"] == "gemma4-e2b"
|
|
|
|
|
|
def test_record_to_results_store_emits_distinct_rows_per_step(tmp_path: Path) -> None:
|
|
db_path = tmp_path / "results.db"
|
|
|
|
eval_checkpoint.record_to_results_store(
|
|
_fake_result(step=100),
|
|
db_path=db_path,
|
|
dataset_version="v1",
|
|
code_commit="aaa",
|
|
)
|
|
eval_checkpoint.record_to_results_store(
|
|
_fake_result(step=200),
|
|
db_path=db_path,
|
|
dataset_version="v1",
|
|
code_commit="bbb",
|
|
)
|
|
|
|
store = ResultsStore(db_path=db_path)
|
|
try:
|
|
history = store.get_history(
|
|
model_id="gemma4-e2b",
|
|
benchmark=eval_checkpoint.CHECKPOINT_EVAL_BENCHMARK_ID,
|
|
limit=10,
|
|
)
|
|
finally:
|
|
store.close()
|
|
steps = sorted(int(run.raw()["step"]) for run in history)
|
|
assert steps == [100, 200]
|
|
|
|
|
|
def test_record_to_results_store_uses_benchmark_id_constant() -> None:
|
|
# The constant is the contract — any change cascades to dashboards
|
|
# that filter rows by benchmark id. Lock it down here.
|
|
assert eval_checkpoint.CHECKPOINT_EVAL_BENCHMARK_ID == "eliza_checkpoint_eval"
|