update
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Test Case: DEFLATE Level 1 Read Correctness
|
||||
|
||||
**Test ID**: TC102-deflate-level1
|
||||
|
||||
**G5 fixture contract**: Use [G5-MANUAL-SETUP.md](G5-MANUAL-SETUP.md).
|
||||
Its generated paths, source comparisons, structured corruption offsets, and
|
||||
cleanup rules supersede placeholder examples in this file.
|
||||
**Category**: Compression
|
||||
**Priority**: High
|
||||
|
||||
## Objective
|
||||
|
||||
Verify full and offset reads from an erofs-utils 1.8.6 DEFLATE level 1 image.
|
||||
|
||||
## Fixture and Helper
|
||||
|
||||
```sh
|
||||
work=$(mktemp -d /tmp/repo22-tc102.XXXXXX)
|
||||
tests/prepare_error_fixtures.sh "$work/fixtures"
|
||||
cc -O2 -Wall -Wextra -std=c17 tests/read_probe.c -o "$work/read_probe"
|
||||
dump.erofs -s "$work/fixtures/valid-deflate-level1.erofs"
|
||||
dump.erofs --path=/compressed.bin -e \
|
||||
"$work/fixtures/valid-deflate-level1.erofs"
|
||||
```
|
||||
|
||||
The superblock and extent output must identify DEFLATE-compressed data. The
|
||||
image is generated with `-zdeflate,level=1 -C65536`.
|
||||
|
||||
## FreeBSD Procedure
|
||||
|
||||
```sh
|
||||
mkdir "$work/mnt"
|
||||
unit=$(mdconfig -a -t vnode \
|
||||
-f "$work/fixtures/valid-deflate-level1.erofs")
|
||||
mount -t erofs -o ro "/dev/$unit" "$work/mnt"
|
||||
|
||||
expected=$(sha256 -q "$work/fixtures/source/compressed.bin")
|
||||
actual=$(sha256 -q "$work/mnt/compressed.bin")
|
||||
test "$actual" = "$expected"
|
||||
"$work/read_probe" pread "$work/mnt/compressed.bin" 32768 4096 \
|
||||
"$work/guest-range.bin"
|
||||
"$work/read_probe" pread "$work/fixtures/source/compressed.bin" 32768 4096 \
|
||||
"$work/source-range.bin"
|
||||
cmp "$work/source-range.bin" "$work/guest-range.bin"
|
||||
|
||||
umount "$work/mnt"
|
||||
mdconfig -d -u "${unit#md}"
|
||||
```
|
||||
|
||||
## Expected Results
|
||||
|
||||
The complete mounted-file hash equals the source hash, and the fixed 4 KiB
|
||||
range compares byte-for-byte. The invalid former command
|
||||
`sha256 output vs original` is not used.
|
||||
Reference in New Issue
Block a user