2.2 KiB
2.2 KiB
Test Case: LZ4 ztailpacking Edge Cases
Test ID: TC092-ztailpacking-edge
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: 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.datis independently proven by the manifest to haveZ_EROFS_ADVISE_INLINE_PCLUSTERand nonzeroh_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
-
Mount the image:
mount -t erofs /dev/md0 /mnt/test -
Read file with exact pcluster size (no tail):
cat /mnt/test/files/exact-pcluster.dat > /tmp/out1 sha256sum /tmp/out1 -
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 -
Read file with maximum tail size:
cat /mnt/test/files/max-tail.dat > /tmp/out3 stat -f %z /tmp/out3 -
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)