Squashfs-compression-test.sh (file size: 4 KB, MIME type: application/x-bash)
Warning: This file type may contain malicious code. By executing it, your system may be compromised.
- !/bin/bash
- We need rpmdev-vercmp
rpm -q rpmdevtools > /dev/null 2>&1 || (echo 'rpmdev-vercmp from rpmdevtools is needed to run this script, aborting.'; exit 1)
- Define block sizes
blocks=(4K 1M)
- Define fill files
fill=(/dev/zero /dev/urandom)
- Define number of iterations
iter=5
- Define fragment sizes
frags=(0 1 2047 4095)
- Define test directory
testdir=./test-squashfs
- Define mount point
mp=${testdir}/mnt
- Define data directory
datadir=${testdir}/data
- Check for squashfs-tools version and set compression types to test
sqfsver=rpm -q --qf '%{EVR}' squashfs-tools
if rpmdev-vercmp 4.1 ${sqfsver} > /dev/null; [ $? == '11' ]; then
ucomp=('gzip')
elif rpmdev-vercmp 4.2 ${sqfsver} > /dev/null; [ $? == '11' ]; then
ucomp=(gzip lzo lzma)
else
ucomp=(gzip lzo lzma xz)
fi
- Check for kernel verion and set mount test compression types
kernel=uname -r
if rpmdev-vercmp 2.6.36 ${kernel} > /dev/null; [ $? == '11' ]; then
mcomp=('gzip')
elif rpmdev-vercmp 2.6.38 ${kernel} > /dev/null; [ $? == '11' ]; then
mcomp=(gzip lzo)
else
mcomp=(gzip lzo xz)
fi
- Check for uid 0 and print a warning if not
[ ${UID} -ne 0 ] && echo 'Mount tests will not be performed when not running as root'
- Check if test directory exists and make if not
[ -d ${testdir} ] || mkdir ${testdir} [ -d ${testdir} ] || (echo "Unable to make '${testdir}', aborting."; exit 1)
- Check if mount point directory exists and make if not
[ -d ${mp} ] || mkdir ${mp} [ -d ${mp} ] || (echo "Unable to make '${mp}', aborting."; exit 1)
- Check if data directory exists and make if not
if [ -d ${datadir} ]; then
echo "Using existing data directory."
else
echo "Building data directory." mkdir ${datadir} [ -d ${datadir} ] || (echo "Unable to make '${datadir}', aborting."; exit 1) for size in ${frags[*]}; do for file in ${fill[*]}; do dd if=${file} of=${datadir}/frag-basename ${file}
-${size} bs=1 count=${size} > /dev/null 2>&1 done done for size in ${blocks[*]}; do for ((count=1;${count}<=${iter};count++)); do for file in ${fill[*]}; do dd if=${file} of=${datadir}/file-basename ${file}
-${size}-${count} bs=${size} count=${count} > /dev/null 2>&1 done done done for size1 in ${frags[*]}; do for file1 in ${fill[*]}; do for size2 in ${blocks[*]}; do for ((count=1;${count}<=${iter};count++)); do for file2 in ${fill[*]}; do cat ${datadir}/file-basename ${file2}
-${size2}-${count} ${datadir}/frag-basename ${file1}
-${size1} > ${datadir}/combined-basename ${file2}
-${size2}-${count}-basename ${file1}
-${size1} done done done done done
fi
- Run unmounted tests
for comp in ${ucomp[*]}; do
echo "Building squashfs image using ${comp} compression." if [ "${comp}" == gzip ]; then mksquashfs ${datadir} ${testdir}/sq.img || (echo "mksquashfs failed for ${comp} compression."; continue) else mksquashfs ${datadir} ${testdir}/sq.img -comp ${comp} || (echo "mksquashfs failed for ${comp} compression."; continue) fi echo "Testing unmounted extract using ${comp} compression." unsquashfs -d ${testdir}/sq ${testdir}/sq.img || echo "unsquashfs failed for ${comp} compression." diff -r -q ${testdir}/sq ${datadir} || echo "Extract test failed for ${comp} compression." rm -rf ${testdir}/sq if [ ${UID} == 0 ]; then for kern in ${mcomp[*]}; do if [ ${kern} == ${comp} ]; then echo "Testing mounted image using ${comp} compression." mount -r -o loop ${testdir}/sq.img ${mp} || echo "Mount failed."; diff -r -q ${mp} ${datadir} || echo "Mounted test failed for ${comp} compression." umount ${mp} break fi done fi rm -f ${testdir}/sq ${testdir}/sq.img
done
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Dimensions | User | Comment | |
---|---|---|---|---|
current | 11:27, 23 May 2019 | (4 KB) | Bruno (talk | contribs) | Include zstd testing |
03:39, 15 December 2014 | (4 KB) | Bruno (talk | contribs) | Test mounting archives using lz4 compression with 3.19+ kernels. | |
07:05, 13 May 2014 | (4 KB) | Bruno (talk | contribs) | ||
18:35, 5 January 2011 | (4 KB) | Bruno (talk | contribs) | Compression test script for squashfs-tools. |
You cannot overwrite this file.
File usage
There are no pages that use this file.