80 lines
2.2 KiB
Markdown
80 lines
2.2 KiB
Markdown
# Test Case: LZ4 ztailpacking Edge Cases
|
|
|
|
**Test ID**: TC092-ztailpacking-edge
|
|
|
|
**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**: Medium
|
|
**Regression**: None
|
|
|
|
## Objective
|
|
Verify correct handling of edge cases in ztailpacking (compressed tail packing) feature.
|
|
|
|
## Preconditions
|
|
- Generated image: `images/lz4-ztail.erofs`
|
|
- Test files:
|
|
- `/exact-pcluster.dat` (4096-byte non-tail control)
|
|
- `/one-byte-tail.dat` (4097-byte logical boundary case)
|
|
- `/max-tail.dat` (8191-byte logical boundary case)
|
|
- `/zero-tail.dat` (empty-file control)
|
|
- `/inline.dat` is independently proven by the manifest to have
|
|
`Z_EROFS_ADVISE_INLINE_PCLUSTER` and nonzero `h_idata_size`. The four edge
|
|
controls must not be described as ztailpacked unless their own map headers
|
|
prove it.
|
|
- Mount point: `/mnt/test`
|
|
|
|
## Test Steps
|
|
1. Mount the image:
|
|
```
|
|
mount -t erofs /dev/md0 /mnt/test
|
|
```
|
|
|
|
2. Read file with exact pcluster size (no tail):
|
|
```
|
|
cat /mnt/test/files/exact-pcluster.dat > /tmp/out1
|
|
sha256sum /tmp/out1
|
|
```
|
|
|
|
3. Read file with minimal tail (1 byte):
|
|
```
|
|
cat /mnt/test/files/one-byte-tail.dat > /tmp/out2
|
|
tail -c 1 /tmp/out2 | od -A n -t x1
|
|
```
|
|
|
|
4. Read file with maximum tail size:
|
|
```
|
|
cat /mnt/test/files/max-tail.dat > /tmp/out3
|
|
stat -f %z /tmp/out3
|
|
```
|
|
|
|
5. Read file with zero-length tail:
|
|
```
|
|
cat /mnt/test/files/zero-tail.dat > /tmp/out4
|
|
```
|
|
|
|
## Expected Results
|
|
- Step 2: File without tail read correctly
|
|
- Steps 2-5: Every exact logical size, full SHA256, and byte comparison matches
|
|
its source file
|
|
|
|
## Verification Method
|
|
- Verify all tail size edge cases handled
|
|
- Confirm boundary conditions don't cause errors
|
|
- Test tail packing storage limits enforced correctly
|
|
- Verify data integrity for all edge cases
|
|
|
|
## Cleanup
|
|
```
|
|
umount /mnt/test
|
|
mdconfig -d -u "${unit#md}"
|
|
rm /tmp/out*
|
|
```
|
|
|
|
## Notes
|
|
- Tail size limits depend on inline storage capacity
|
|
- Zero-length tail is valid edge case
|
|
- Exact pcluster alignment means no tail needed
|
|
- Related tests: TC091 (basic ztailpacking)
|