This commit is contained in:
2026-08-18 09:20:44 +02:00
commit b826cd721a
522 changed files with 93730 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
# Test Case: Deterministic Random Reads
**Test ID**: TC129-random-read-pattern
**Category**: Boundary & Stress
**Priority**: Medium
**Regression**: None
## Objective
Compare every 4 KiB random read to the exact source at deterministic offsets,
and record TCG IOPS/latency without fixed performance thresholds.
## Preconditions
- Complete `G7-MANUAL-SETUP.md` and compile the exact `g7_probe.c`.
- Do not use `fio` without data verification and do not impose 1000 IOPS or
10 ms cross-machine gates.
## Manual Steps
```sh
G7=/root/repo22-g7
FIX=$G7/fixtures
SRC=$FIX/sources/workloads/random/random.bin
IMAGE=$FIX/images/workloads.erofs
MNT=/mnt/repo22-g7-tc129
E=$G7/evidence/TC129
mkdir -p "$MNT" "$E"
test "$(stat -f %z "$SRC")" -eq 67108864
unit=$(mdconfig -a -t vnode -f "$IMAGE")
mount -t erofs -o ro "/dev/$unit" "$MNT"
TARGET=$MNT/random/random.bin
source_hash=$(sha256 -q "$SRC")
target_hash=$(sha256 -q "$TARGET")
printf 'source=%s\ntarget=%s\n' "$source_hash" "$target_hash" \
| tee "$E/hashes.txt"
test "$source_hash" = "$target_hash"
cmp "$SRC" "$TARGET"
: > "$E/runs.tsv"
run=1
while [ "$run" -le 3 ]; do
"$G7/g7_probe" random "$SRC" "$TARGET" \
0x6a09e667f3bcc909 16384 4096 > "$E/run-$run.log"
rc=$?
digest=$(awk '{ for (i=1; i<=NF; i++) if ($i ~ /^digest=/) print $i }' \
"$E/run-$run.log")
printf '%s\t%s\t%s\n' "$run" "$rc" "$digest" >> "$E/runs.tsv"
cat "$E/run-$run.log"
test "$rc" -eq 0 || exit 1
run=$((run + 1))
done
cat "$E/runs.tsv"
test "$(awk '$2 != 0 { bad++ } END { print bad + 0 }' "$E/runs.tsv")" -eq 0
test "$(awk '{ print $3 }' "$E/runs.tsv" | sort -u | wc -l | tr -d ' ')" -eq 1
grep 'mismatches=0' "$E"/run-*.log
umount "$MNT"
mdconfig -d -u "${unit#md}"
test -z "$(mount -p | awk -v m="$MNT" '$2 == m { print }')"
test -z "$(mdconfig -l | tr ' ' '\n' | grep -x "$unit")"
```
## PASS Gate
- Full source/mount SHA256 and bytes match.
- Each run compares exactly 16,384 source/target 4 KiB reads, reports zero
mismatches, exits 0, and produces the same deterministic digest.
- IOPS, mean microseconds, and elapsed time are recorded only as TCG metrics.
- No fixed speed gate, panic, hang, or cleanup leak occurs.