2.2 KiB
2.2 KiB
Test Case: LZ4 Compressed File Read
Test ID: TC003-lz4-compressed-read
G5 fixture contract: Use G5-MANUAL-SETUP.md.
Its generated paths, source comparisons, structured corruption offsets, and
cleanup rules supersede placeholder examples in this file.
Category: Compression
Priority: Critical
Regression: None
Objective
Verify correct decompression and reading of LZ4-compressed files.
Preconditions
- EROFS image with LZ4-compressed files:
test-lz4.erofs - Known reference file:
original.txt(uncompressed source) - Compressed file in image:
/compressed/test.txt - Mount point:
/mnt/test
Test Steps
-
Mount the LZ4 test image:
mount -t erofs /dev/md0 /mnt/test -
Verify file exists:
ls -lh /mnt/test/compressed/test.txt -
Read the entire file:
cat /mnt/test/compressed/test.txt > /tmp/decompressed.txt -
Calculate checksum:
sha256 /tmp/decompressed.txt sha256 original.txt -
Compare byte-for-byte:
cmp /tmp/decompressed.txt original.txt -
Test partial read:
dd if=/mnt/test/compressed/test.txt of=/tmp/partial.txt bs=1024 count=1 -
Verify partial read matches:
cmp -n 1024 /tmp/partial.txt original.txt
Expected Results
- Step 1: Mount succeeds
- Step 2: File size matches original uncompressed size
- Step 4: SHA256 checksums are identical
- Step 5:
cmpreturns 0 (files identical) - Step 7: First 1024 bytes match
Verification Method
- Exact byte-for-byte match with original file
- No corruption in decompressed data
- File attributes (size, timestamps) preserved correctly
- Check inode compression format:
# Using custom debug tool if available erofs_inspect /dev/md0 /compressed/test.txt # Should show: z_algorithmformat[0:2] = Z_EROFS_COMPRESSION_LZ4
Cleanup
umount /mnt/test
mdconfig -d -u md0
rm /tmp/decompressed.txt /tmp/partial.txt
Notes
- LZ4 is the most common compression algorithm in EROFS
- Test should cover files of various sizes: small (<4KB), medium (4KB-1MB), large (>1MB)
- LZ4 pcluster size is typically 4KB or 64KB
- Related: TC004 (ztailpacking), TC005 (pcluster mapping)