73 lines
2.3 KiB
Markdown
73 lines
2.3 KiB
Markdown
# Test Case: LZ4 Compressed Physical Cluster Mapping (64KB)
|
|
|
|
**Test ID**: TC090-lz4-pcluster-64k
|
|
|
|
**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
|
|
**Regression**: None
|
|
|
|
## Objective
|
|
Verify correct physical cluster mapping for LZ4 compression with 64KB pcluster size.
|
|
|
|
## Preconditions
|
|
- EROFS image with LZ4, 64KB pcluster: `test-lz4-pcluster-64k.erofs`
|
|
- Test file: `/files/test-64k.dat` (1MB, highly compressible)
|
|
- Mount point: `/mnt/test`
|
|
- Generate with `mkfs.erofs -zlz4 -C65536 test-lz4-pcluster-64k.erofs source`
|
|
and confirm `compr_cfgs big_pcluster` with `dump.erofs -s`.
|
|
|
|
## Test Steps
|
|
1. Mount the image:
|
|
```
|
|
mount -t erofs /dev/md0 /mnt/test
|
|
```
|
|
|
|
2. Read first pcluster (64KB):
|
|
```
|
|
dd if=/mnt/test/files/test-64k.dat of=/tmp/out1 bs=64K count=1
|
|
```
|
|
|
|
3. Read small portion requiring full pcluster decompression:
|
|
```
|
|
dd if=/mnt/test/files/test-64k.dat of=/tmp/out2 bs=4K count=1 skip=1
|
|
```
|
|
|
|
4. Read crossing pcluster boundary:
|
|
```
|
|
dd if=/mnt/test/files/test-64k.dat of=/tmp/cross bs=1 skip=65504 count=64
|
|
dd if=/root/reference/test-64k.dat of=/tmp/cross.expected bs=1 skip=65504 count=64
|
|
cmp /tmp/cross /tmp/cross.expected
|
|
```
|
|
|
|
5. Record the physical extent layout:
|
|
```
|
|
dump.erofs --path=/files/test-64k.dat -e test-lz4-pcluster-64k.erofs
|
|
```
|
|
|
|
## Expected Results
|
|
- Step 2: Full 64KB pcluster decompressed correctly
|
|
- Step 3: Reading 4KB requires decompressing entire 64KB pcluster
|
|
- Step 4: Boundary crossing handled correctly
|
|
- Step 5: The fixture contains a real compressed big-pcluster extent
|
|
|
|
## Verification Method
|
|
- Verify large pcluster decompression works
|
|
- Confirm small reads still trigger full pcluster decompression
|
|
- Test memory usage reasonable for 64KB decompression
|
|
- Do not require a better compression ratio than 4KB for every corpus
|
|
|
|
## Cleanup
|
|
```
|
|
umount /mnt/test
|
|
mdconfig -d -u md0
|
|
rm /tmp/out* /tmp/cross /tmp/cross.expected
|
|
```
|
|
|
|
## Notes
|
|
- 64KB pcluster provides better compression at cost of random access
|
|
- Common pcluster size for read-heavy workloads
|
|
- Related tests: TC089 (4KB pcluster), TC088 (config handling)
|