Files

EPOD acceptance tests (for the EPOD server developer)

Small test set for the two server changes that the harness work asked for (details: docs/epod-syntax-hint.md, docs/epod-lock-leak.md) and for the parallel-call behavior (harness/loadtest.py numbers). Standard library only, Python 3.9+, no harness code needed. It uses probe objects ZEPODT_* in $TMP on a test system.

cd epod_tests
export MCP_URL=http://127.0.0.1:3000/mcp MCP_TOKEN=...           # the MCP server
export A4H_URL=http://localhost:50000 A4H_USER=... A4H_PASSWORD=...   # only for the cleanup (ADT deletion); without it the tests list the probe objects
python3 run_tests.py                 # all; --only T1 T3 for some
test passes when state of the server on 2026-10-06
T1 syntax_hint a rejected write (TYPE c LENGTH 4 in a method signature) returns syntax messages with a line, not only "save operation failed" FAIL expected (not implemented; the harness proxy adds abaplint messages)
T2 no_lock_after_kill a client killed with SIGKILL during a write (4 delays) leaves no lock: the next write works PASS (not reproducible on A4H)
T3 parallel_reads 6 clients search + syntax check in parallel without Concurrent call detected PASS
T4 parallel_writes 3 clients create + write in parallel without Concurrent call detected FAIL expected (the shared connection; 15 to 50 lock hits per 45 s in the harness load test)
T5 lock_error_text informational PASS

A change in the server is done when T1 and T4 pass and T2 and T3 stay green. T1 accepts any answer that carries a line number or a syntaxCheck object with messages (the proxy format is in docs/epod-syntax-hint.md).