Skip to content

fix: e2e and post leave nothing behind - #223

Merged
catinspace-au merged 1 commit into
mainfrom
fix/e2e-cleanup
Oct 11, 2026
Merged

catinspace-au merged 1 commit into
mainfrom
fix/e2e-cleanup

Conversation

@catinspace-au

Copy link
Copy Markdown
Contributor

Three things the e2e harness and the self test left behind, found running the suite on the docker GA target.

  • The console TLS precheck failed open. Run as a user who cannot enter the certificate directory, proxy_tls.py precheck died on a PermissionError with nothing on stdout, and the Makefile read that as no problem. It now says which directory it cannot open. The Makefile also turns ANY non-zero exit from the precheck into the refusal, so a crash refuses the start instead of passing it.
  • post.py's routing claim left a postroute<8 hex> table on every run, because the engine's source delete takes the topics, fetcher instance and receiver rule but not the table. The claim now drops that table once the source delete has gone through, and only a name of that exact shape. The delete gets 90 s, enough for the engine to remove two topics from a broker that does not answer, and a delete with no answer is reported instead of raised.
  • The search-to-rule test made the e2e organisation and the e2e-analyst account and never deleted them. It now deletes whichever of the two it made, after the hunt and the rule.

Heads up: the schema guard (test_engine_only_schema_control.py) holds ClickHouse DDL to dfe-engine. This lets exactly ONE statement through: post.py's DROP TABLE IF EXISTS {database}.{name} SYNC for its own throwaway table, plus the test line that asserts it. That is the same footing test_e2e.py already has for its own database. The engine offers no way to drop a source's table, so the alternative is an engine change that drops it on source delete.

Also in here: the concurrent-send test from #222 asserted a time ceiling that a busy host broke. It now asserts how many requests the stand-in receiver held at once.

Done when CI is green and the GA target shows no post.py table, organisation or account left behind after make post and the detection tests.

The console TLS precheck fails closed. Run as a user who cannot enter the certificate directory, proxy_tls.py died on a PermissionError with nothing on stdout, and make read the empty answer as no problem. It now names the directory it cannot open, and the Makefile turns any non-zero exit from the precheck into the refusal.

post.py's routing claim drops the `postroute<8 hex>` table its own source deployed, once the source delete has gone through. The engine's source delete takes the topics, the fetcher instance and the receiver rule and leaves the table, so every self test left one behind. The delete gets 90 s, enough for the engine to remove two topics from a broker that does not answer. A delete with no answer is reported instead of raised. The schema guard lets that one statement through.

The search-to-rule test deletes the `e2e` organisation and the `e2e-analyst` account when this run made them, after the hunt and the rule. One that already existed stays.

The concurrent-send test asserts how many requests the stand-in receiver held at once instead of a time ceiling, which a busy host broke.
@catinspace-au
catinspace-au merged commit c03fd4e into main Oct 11, 2026
7 checks passed
@catinspace-au
catinspace-au deleted the fix/e2e-cleanup branch October 11, 2026 03:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant