Skip to content

test(coverage): run recd group in COV_RECD block (hash_rec 0->24%, qam_rec 0->46%, bt_rec 12->22% branch) - #89

Merged
gburd merged 1 commit into
masterfrom
coverage/recd-branches-final
Jul 29, 2026
Merged

test(coverage): run recd group in COV_RECD block (hash_rec 0->24%, qam_rec 0->46%, bt_rec 12->22% branch)#89
gburd merged 1 commit into
masterfrom
coverage/recd-branches-final

Conversation

@gburd

@gburd gburd commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Wires the recd recovery-record test group into a new COV_RECD block (driver-per-test, 300s timeout, orphan cleanup) — the biggest remaining recover-handler branch gap.

Branch % before → after (recd-driven, gcc --coverage -O0)

file before after
hash/hash_rec.c 0% 24.2%
qam/qam_rec.c 0% 45.5%
btree/bt_rec.c 12.3% 21.6%
db/db_rec.c 14.6% 16.4%

Biggest wins: hash + queue recover handlers were 0% (no hash/queue recd ran in the old subset).

Tests wired (26 runs, curated for coverage-per-minute)

recd002/005 × btree/hash/queue/recno; recd006/013 × btree/hash; recd004/008/009/010/014(queueext — only path to __qam_delext_recover)/016/017/018/019/020/022/023/024/025 × btree. All 26 PASS, ~10 min block. Removed recd001/002/016 from COV_TESTS (superseded by the driver-per-test block, which also dodges a kvals global-collision that broke recd006+recd010 in a shared tclsh).

Skipped (too-slow-for-marginal-gain under -O0)

recd001 (~6.5min), recd003 (~7.3min), recd015 (~4.6min), recd007 (~4.3min) — each adds ~0-1 branches over the wired set.

No bugs — all forward+backward recovery replays verified clean across every access method. Follow-up (in PR): the still-cold __bam_root/irep/rcuradj + __db_ovref/cksum handlers need a targeted C recovery driver.

The per-operation recovery handlers (__xxx_recover: redo/undo/abort/
do-nothing branches) in db/db_rec.c (3189 br), hash/hash_rec.c (2069),
btree/bt_rec.c (2366) and qam/qam_rec.c (574) were the biggest cold
BRANCH surface. The subset ran only recd001/002/016 on btree, leaving
the hash and queue handlers at 0% and most btree/db redo/undo branches
cold.

Add a COV_RECD block (default on) that drives the recd group
driver-per-test (each in its own tclsh, per-test timeout, recdscript.tcl
orphan cleanup) -- recd tests use conflicting globals (recd006 kvals
scalar vs recd010 array) so they cannot share one interpreter. The set
is curated for coverage-per-minute across every access method each test
supports; whole block ~10 min, every test PASSes well inside a 300s
timeout.

Recd-driven branch % (measured, gcc --coverage, -O0):
  db/db_rec.c    14.6 -> 16.4
  btree/bt_rec.c 12.3 -> 21.6
  hash/hash_rec.c 0   -> 24.2
  qam/qam_rec.c   0   -> 45.5

recd001/002/016 removed from COV_TESTS (superseded by the driver-per-test
block; recd001 was 6.5 min and added ~1 branch over the rest). recd003/
007/015 deliberately excluded: too slow under -O0 for the marginal
branches they add (recd003 does not unlock the still-cold __bam_root/
irep/rcuradj or __db_ovref handlers). No recovery-correctness bug
surfaced: all forward+backward replays verified clean.
@gburd
gburd merged commit 4731366 into master Jul 29, 2026
45 of 47 checks passed
@gburd
gburd deleted the coverage/recd-branches-final branch July 29, 2026 19:45
@github-actions

Copy link
Copy Markdown

Coccinelle convention checks

No new violations. ✅

Resolved since baseline (2) -- update dist/cocci/baseline.txt to lock these in.
rule_mutex_unbalanced|MUTEX_UNBALANCED|src/crypto/mersenne/mt19937db.c|return (ret);
rule_mutex_unbalanced|MUTEX_UNBALANCED|src/mp/mp_register.c|return (ret);

@github-actions

Copy link
Copy Markdown

ABI diff vs v5.3.31 (libabigail — authoritative)

Removed exported symbols (nm -D, _NNNN version suffix normalized)

None.


Advisory: libabigail/nm is the authoritative binary-ABI check; Coccinelle is complementary source-level early warning. See dist/cocci/README.md.

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