test(ha-single-leader-role): sweep all COMMITTING fixtures to direct-PRIMARY contract (task 5.1)
This commit is contained in:
parent
71ce41f486
commit
7f974e766b
11 changed files with 138 additions and 169 deletions
|
|
@ -8,7 +8,7 @@
|
|||
* shortcircuit delegates to raft_start_election, which fires on_become_leader
|
||||
* synchronously → raft_cb_become_leader (ha-single-leader-role task 2.2),
|
||||
* so the role lands DIRECTLY in CTRL_PRIMARY — there is no transitional
|
||||
* CTRL_PRIMARY_COMMITTING and no committing-timeout watchdog (Req 1.1, 1.5).
|
||||
* leader sub-state and no wall-clock promotion watchdog (Req 1.1, 1.5).
|
||||
* - Function returns in < 5ms (observable via clock_gettime).
|
||||
* - n_peers=1 shortcircuit stores n_peers in ha->n_peers.
|
||||
*
|
||||
|
|
@ -50,7 +50,6 @@ static ha_config_t g_async_cfg = {
|
|||
.max_promotion_retries = 5,
|
||||
.election_jitter_max_ms = 0,
|
||||
.election_priority_step_ms = 500,
|
||||
.committing_timeout_ms = 10000,
|
||||
};
|
||||
|
||||
/* ── Helper: elapsed ms since a timespec ───────────────────────────────── */
|
||||
|
|
@ -116,14 +115,14 @@ static void test_single_node_shortcircuit_evaluates_immediately(void)
|
|||
/* n_peers=1: the shortcircuit fires raft_start_election → on_become_leader
|
||||
* (raft_cb_become_leader) synchronously. ha-single-leader-role (Req 1.1):
|
||||
* a winning node lands DIRECTLY in CTRL_PRIMARY — there is no transitional
|
||||
* CTRL_PRIMARY_COMMITTING. New-leader safety comes from the own-term
|
||||
* leader sub-state. New-leader safety comes from the own-term
|
||||
* WAL_NOOP + writable_lsn gate, not from a fourth role value. */
|
||||
ha_start_election_async(&ha, NULL, 1, NULL, 100ULL, 50ULL, "ctrl-a");
|
||||
|
||||
ctrl_role_t role = (ctrl_role_t)atomic_load_explicit(&ha.role, memory_order_acquire);
|
||||
TEST_ASSERT_EQUAL_INT_MESSAGE((int)CTRL_PRIMARY, (int)role,
|
||||
"single-node shortcircuit must enter CTRL_PRIMARY directly (Req 1.1) — "
|
||||
"no transitional CTRL_PRIMARY_COMMITTING");
|
||||
"no transitional leader sub-state");
|
||||
|
||||
ha_fini(&ha);
|
||||
printf("test_single_node_shortcircuit_evaluates_immediately: PASS (role=%d == CTRL_PRIMARY)\n",
|
||||
|
|
@ -140,13 +139,13 @@ static void test_single_node_not_primary_directly(void)
|
|||
ha_start_election_async(&ha, NULL, 1, NULL, 0ULL, 0ULL, "ctrl-a");
|
||||
|
||||
/* ha-single-leader-role (Req 1.1): the winning node lands in CTRL_PRIMARY
|
||||
* immediately — the old "must go through COMMITTING first" contract is gone.
|
||||
* Promotion arms NO committing-timeout watchdog (Req 1.5); the own-term gate
|
||||
* (WAL_NOOP + writable_lsn) provides new-leader safety instead. */
|
||||
* immediately — the old "must go through a transitional state first"
|
||||
* contract is gone. Promotion arms NO wall-clock watchdog (Req 1.5); the
|
||||
* own-term gate (WAL_NOOP + writable_lsn) provides new-leader safety. */
|
||||
ctrl_role_t role = (ctrl_role_t)atomic_load_explicit(&ha.role, memory_order_acquire);
|
||||
TEST_ASSERT_EQUAL_INT_MESSAGE((int)CTRL_PRIMARY, (int)role,
|
||||
"single-node shortcircuit must land DIRECTLY in CTRL_PRIMARY (Req 1.1) — "
|
||||
"no transitional CTRL_PRIMARY_COMMITTING, no committing watchdog (Req 1.5)");
|
||||
"no transitional leader sub-state, no wall-clock watchdog (Req 1.5)");
|
||||
|
||||
ha_fini(&ha);
|
||||
printf("test_single_node_not_primary_directly: PASS (role=%d == CTRL_PRIMARY)\n", (int)role);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue