myxce/src/controller/testsuite
Rongsong Shen f5b0ac0af3 feat: ha_should_redirect + join.c HA redirect/nomaster guard (P1-6)
Add redirect helpers to ha.c/ha.h so a standby controller never accepts
join requests as if it were the primary:

- ha_should_redirect(): returns 1 when role is STANDBY and primary_host/port
  are known — caller should send E_XCE_REDIRECT.
- ha_no_primary_known(): returns 1 when role is STANDBY but primary address
  is not yet known — caller should send E_XCE_NOMASTER (retry later).
- Add E_XCE_NOMASTER and E_XCE_REDIRECT to errnox.h.
- Wire both guards into handle_join_() in join.c (before the role switch)
  so all join types (worker, scheduler, apiserver, client) are protected.
- Full redirect response sends status=-E_XCE_REDIRECT with nodata body;
  the primary host:port are logged so operators can trace misrouted clients.
  Full Cap'n Proto RedirectInfo response body is deferred to a follow-up
  (schema union would require regenerating capnp bindings).

5 new TDD tests — 110 total, 0 failures.
2026-05-07 15:11:53 +00:00
..
controller_test.c feat: ha_should_redirect + join.c HA redirect/nomaster guard (P1-6) 2026-05-07 15:11:53 +00:00
test.c feat: rename delaymgr precision→precision_ms, replace sleep() with nanosleep() (P0-2b) 2026-05-07 09:08:03 +00:00
test_cluster_persist.c feat: wire persist_init/recover/start/stop into cluster lifecycle (P0-F) 2026-05-07 13:07:47 +00:00
test_e2e_capnp.c test: P0-G end-to-end smoke tests — WAL, checkpoint, hooks, GC, Cap'n Proto (P0-15a-e) 2026-05-07 13:25:17 +00:00
test_e2e_checkpoint.c test: P0-G end-to-end smoke tests — WAL, checkpoint, hooks, GC, Cap'n Proto (P0-15a-e) 2026-05-07 13:25:17 +00:00
test_e2e_gc.c test: P0-G end-to-end smoke tests — WAL, checkpoint, hooks, GC, Cap'n Proto (P0-15a-e) 2026-05-07 13:25:17 +00:00
test_e2e_hooks.c test: P0-G end-to-end smoke tests — WAL, checkpoint, hooks, GC, Cap'n Proto (P0-15a-e) 2026-05-07 13:25:17 +00:00
test_e2e_wal.c test: P0-G end-to-end smoke tests — WAL, checkpoint, hooks, GC, Cap'n Proto (P0-15a-e) 2026-05-07 13:25:17 +00:00
test_gc_retention.c feat: JOB_STAT_TRANSIENT, job_should_retain, worker_should_retain, dead_since (P0-5a, P0-8, P0-13) 2026-05-07 12:52:07 +00:00
test_ha_cluster.c feat: wire ha_state_t into cluster_t + HA startup/shutdown lifecycle (P1-5) 2026-05-07 14:55:48 +00:00
test_ha_redirect.c feat: ha_should_redirect + join.c HA redirect/nomaster guard (P1-6) 2026-05-07 15:11:53 +00:00
test_ha_role.c feat: ha_do_promote/demote + SIGUSR1 atomic flag handler (P1-3a) 2026-05-07 14:40:43 +00:00
test_hooks.c feat: add HOOK_DETAIL_JOB_STOP/RESUME; fix xce_reply ordering after AFTER_EVENT hooks (P0-4a) 2026-05-07 12:08:52 +00:00
test_persist_checkpoint.c feat: implement persist_checkpoint with WAL marker, snapshot, trim, rotation (P0-3) 2026-05-07 11:19:08 +00:00
test_persist_hooks.c feat: persistence hook functions wired to WAL write on AFTER_EVENT (P0-6) 2026-05-07 12:28:20 +00:00
test_persist_recovery.c feat: implement persist_recover with snapshot load and WAL replay (P0-4) 2026-05-07 11:41:33 +00:00
test_persist_schema.c feat: add PersistConfig, SnapshotHeader, ReplEnvelope Cap'n Proto schemas (P0-9) 2026-05-07 10:19:33 +00:00
test_persist_types.c feat: add persist.h — WAL types, persist_config_t, slot_key_t (P0-B) 2026-05-07 09:21:36 +00:00
test_persist_wal.c feat: persist.c WAL writer with chained CRC32 and dedicated fsync pthread (P0-1) 2026-05-07 10:00:10 +00:00