# Test Case: LZ4 Compressed File Read **Test ID**: TC003-lz4-compressed-read **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**: 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 1. Mount the LZ4 test image: ``` mount -t erofs /dev/md0 /mnt/test ``` 2. Verify file exists: ``` ls -lh /mnt/test/compressed/test.txt ``` 3. Read the entire file: ``` cat /mnt/test/compressed/test.txt > /tmp/decompressed.txt ``` 4. Calculate checksum: ``` sha256 /tmp/decompressed.txt sha256 original.txt ``` 5. Compare byte-for-byte: ``` cmp /tmp/decompressed.txt original.txt ``` 6. Test partial read: ``` dd if=/mnt/test/compressed/test.txt of=/tmp/partial.txt bs=1024 count=1 ``` 7. 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: `cmp` returns 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)