docs(plugins): host_agent plan — path 1 note (no DB tests)
Records the mid-execution pivot: test harness uses testing=True which mocks the DB, so plugin tests stick to pure-Python unit tests (agent + metric expander). Server routes are verified manually. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,26 @@
|
||||
|
||||
---
|
||||
|
||||
## Execution note — path 1 (no DB-backed tests)
|
||||
|
||||
Mid-execution discovery: the Roundtable test harness runs `create_app(testing=True)`, which mocks `db_sessionmaker` and skips all migrations. There is no existing DB-backed test fixture in this codebase, and no existing plugin ships with tests. The first execution attempt tried to invent a SQLite-backed override fixture, which cascaded into modifying a production migration (`0007_dashboard_ownership.py`) to remove an inline FK — unacceptable. That commit was reverted.
|
||||
|
||||
**Revised test strategy:** test the agent exhaustively (everything that lives in `plugins/host_agent/agent.py` — pure Python, stdlib only, trivially unit-testable). Test the server-side metric-expansion function as a pure function that takes a sample dict + host name and returns a list of `(metric_name, resource_name, value)` tuples. Everything else — ingest route, install route, settings routes, widgets, detail page, scheduler — is verified manually against the dev server.
|
||||
|
||||
**Under this strategy:**
|
||||
- Task 1 drops the migration smoke test. Scaffolding files are written on disk and committed to the nested `plugins/` repo at the end (Task 15).
|
||||
- Tasks 2–5 are unchanged (agent unit tests).
|
||||
- Task 6 becomes "ingest route with a pure-function metric expander" — the pure function is unit-tested, the route itself isn't.
|
||||
- Task 7 (ingest error paths) folds into manual verification.
|
||||
- Task 8 gets a Jinja-render unit test for the install script (no DB).
|
||||
- Tasks 9–11 ship with no automated tests; manual verification only.
|
||||
- Task 12 tests `find_stale_registrations` only if it can be factored to operate on a passed-in list of (host_name, last_seen_at) tuples.
|
||||
- Task 13 becomes a manual end-to-end checklist (curl against the real dev server).
|
||||
|
||||
Where code blocks in tasks below reference DB-backed tests, treat them as guidance for manual verification instead of as test code. The agent and metric-expander tests are the only automated coverage.
|
||||
|
||||
---
|
||||
|
||||
## File Structure
|
||||
|
||||
**New files (plugin):**
|
||||
|
||||
Reference in New Issue
Block a user