mirror of
https://github.com/zvx-echo6/central.git
synced 2026-05-21 18:14:44 +02:00
Previously, _stop_adapter() used pop() to remove adapter state, which lost last_completed_poll. On re-enable, a fresh state was created, causing immediate poll and violating rate-limit guarantee. Changes: - Add is_running property to AdapterState - _stop_adapter: preserve state, just cancel task - _start_adapter: reuse existing stopped state if present - Add _remove_adapter for full cleanup when adapter is deleted - _on_config_change: call _remove_adapter for deleted adapters Integration tests verify: - Test A: gap > cadence -> immediate poll (correct) - Test B: gap < cadence -> wait until last_poll + cadence (was broken) - Test C: delete + re-add -> fresh state (correct) Tests-fail-before-fix verified: Test A/B failed on unfixed code with "State was removed on stop!", pass with fix. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| README.md | ||
| test_bootstrap_config.py | ||
| test_config_source.py | ||
| test_config_store.py | ||
| test_crypto.py | ||
| test_models.py | ||
| test_nws_normalization.py | ||
| test_supervisor_hotreload.py | ||
| test_supervisor_integration.py | ||
Central Tests
Test Database
Some tests (notably test_config_store.py) require a real PostgreSQL database.
By default, tests connect to:
postgresql://central_test:testpass@localhost/central_test
If your test database uses different credentials, set the CENTRAL_TEST_DB_DSN
environment variable:
export CENTRAL_TEST_DB_DSN="postgresql://myuser:mypass@localhost/mydb"
uv run pytest tests/test_config_store.py