docs(ha-config-bootstrap): Test 11.1 now covers config replication verification
This commit is contained in:
parent
bc2aaff089
commit
25c71adffb
1 changed files with 36 additions and 16 deletions
|
|
@ -144,26 +144,42 @@ tail -f /tmp/xce-{a,b,c}/ctrl.log | grep -E "CTRL_|election|quorum|RDHUP|ha-term
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Test 11.1 — Concurrent Startup and Config-Fresh Election
|
## Test 11.1 — Concurrent Startup, Config-Fresh Election, and Config Replication
|
||||||
|
|
||||||
**Requirements:** 1.1, 2.1, 2.7
|
**Requirements:** 1.1, 2.1, 2.7, 3.2, 3.5
|
||||||
|
|
||||||
**Scenario:** Three nodes start within 3 seconds — exactly one wins election (needs majority = 2/3 votes).
|
**Scenario:** ctrl-a has the initial config; ctrl-b and ctrl-c start with
|
||||||
|
`config_tag=0` (no config). All three start within 3s — ctrl-a wins election
|
||||||
|
(freshest config), then pushes the config to ctrl-b and ctrl-c via replication.
|
||||||
|
|
||||||
|
This test verifies election AND config bootstrap replication in a single run.
|
||||||
|
|
||||||
1. Start all 3 nodes (Terminals 1–3) within 3 seconds of each other.
|
1. Start all 3 nodes (Terminals 1–3) within 3 seconds of each other.
|
||||||
2. Wait 10 seconds.
|
2. Wait 15 seconds.
|
||||||
3. Check the logs on all three.
|
3. Check the logs on all three.
|
||||||
|
|
||||||
**Expected log patterns:**
|
**Expected log patterns — Election:**
|
||||||
- Exactly **one** node logs: `am_i_primary_quorum: won` or `CTRL_PRIMARY`
|
- ctrl-a logs: `am_i_primary_quorum: won` → `CTRL_PRIMARY`
|
||||||
- Other **two** nodes log: `CTRL_STANDBY`
|
- ctrl-b and ctrl-c log: `defer_config_fetch=1` → yield to fresher peer → `CTRL_STANDBY`
|
||||||
- No node stays in `CTRL_ELECTING` loop indefinitely
|
|
||||||
|
**Expected log patterns — Config replication:**
|
||||||
|
- ctrl-a logs: `Config committed on majority (tag=<hex>...)`
|
||||||
|
- ctrl-b and ctrl-c log: `Config fetch successful from primary (tag=<hex>...)`
|
||||||
|
- Config files appear in both standby workdirs:
|
||||||
|
```bash
|
||||||
|
ls /tmp/xce-b/ctrl-b/conf/
|
||||||
|
ls /tmp/xce-c/ctrl-c/conf/
|
||||||
|
# Expected: cluster.bin.<hex_tag> and current
|
||||||
|
```
|
||||||
|
|
||||||
**Checklist:**
|
**Checklist:**
|
||||||
- [ ] Exactly one node becomes `CTRL_PRIMARY`
|
- [ ] Exactly ctrl-a becomes `CTRL_PRIMARY`
|
||||||
- [ ] Two nodes become `CTRL_STANDBY`
|
- [ ] ctrl-b and ctrl-c become `CTRL_STANDBY`
|
||||||
- [ ] No crash or ASAN error
|
- [ ] No crash or ASAN error
|
||||||
- [ ] All three nodes started within 3s (no false self-election)
|
- [ ] All three nodes started within 3s (no false self-election)
|
||||||
|
- [ ] Config replicated to ctrl-b: `cluster.bin.*` exists in `/tmp/xce-b/ctrl-b/conf/`
|
||||||
|
- [ ] Config replicated to ctrl-c: `cluster.bin.*` exists in `/tmp/xce-c/ctrl-c/conf/`
|
||||||
|
- [ ] Config tag on standbys matches primary's tag
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -326,12 +342,16 @@ Build: /xce-build completed successfully? YES / NO
|
||||||
- controller_unit_test: PASS / FAIL
|
- controller_unit_test: PASS / FAIL
|
||||||
- xcelib_test: PASS / FAIL
|
- xcelib_test: PASS / FAIL
|
||||||
|
|
||||||
### 11.1 Concurrent Startup (3 nodes)
|
### 11.1 Concurrent Startup + Config Replication (3 nodes)
|
||||||
- Result: PASS / FAIL
|
- Election result: PASS / FAIL
|
||||||
- Primary elected: ctrl-a / ctrl-b / ctrl-c
|
- Primary elected: ctrl-a / ctrl-b / ctrl-c
|
||||||
- Time to election: ~Xs
|
- Time to election: ~Xs
|
||||||
- Two standbys confirmed: YES / NO
|
- Two standbys confirmed: YES / NO
|
||||||
- Log excerpt (primary win + both standbys):
|
- Config replication result: PASS / FAIL
|
||||||
|
- cluster.bin exists in /tmp/xce-b/ctrl-b/conf/: YES / NO
|
||||||
|
- cluster.bin exists in /tmp/xce-c/ctrl-c/conf/: YES / NO
|
||||||
|
- Config tag on standbys matches primary: YES / NO
|
||||||
|
- Log excerpt (primary win + config push + standby fetch):
|
||||||
|
|
||||||
### 11.2 Failover and WAL Durability (3 nodes)
|
### 11.2 Failover and WAL Durability (3 nodes)
|
||||||
- Scenario 1 (RDHUP failover, 1 of 2 survivors promotes): PASS / FAIL
|
- Scenario 1 (RDHUP failover, 1 of 2 survivors promotes): PASS / FAIL
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue