mirror of
https://github.com/vgough/encfs.git
synced 2024-11-21 23:43:26 +01:00
tests: add fsstress-encfs.sh stress test
Mount an EncFS filesystem in /tmp and run fsstress against it
in an infinite loop, only exiting on errors.
Ported over from gocryptfs
( ccf1a84e41/tests/stress_tests/fsstress-gocryptfs.bash
)
This commit is contained in:
parent
3bfaf792e6
commit
30000d8e2c
74
tests/stress_tests/fsstress-encfs.sh
Executable file
74
tests/stress_tests/fsstress-encfs.sh
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/bash -eu
|
||||||
|
#
|
||||||
|
# Mount an EncFS filesystem in /tmp and run fsstress against it
|
||||||
|
# in an infinite loop, only exiting on errors.
|
||||||
|
#
|
||||||
|
# You need to have https://github.com/rfjakob/fuse-xfstests or
|
||||||
|
# https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git
|
||||||
|
# (which fsstress) downloaded and compiled at $HOME/fuse-xfststs .
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
MYNAME=$(basename $0)
|
||||||
|
|
||||||
|
# fsstress binary
|
||||||
|
FSSTRESS=$HOME/fuse-xfstests/ltp/fsstress
|
||||||
|
if [ ! -x $FSSTRESS ]
|
||||||
|
then
|
||||||
|
echo "$MYNAME: fsstress binary not found at $FSSTRESS"
|
||||||
|
echo "Please clone and compile https://github.com/rfjakob/fuse-xfstests"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Backing directory
|
||||||
|
DIR=$(mktemp -d /tmp/fsstress-encfs.XXX)
|
||||||
|
# Mountpoint
|
||||||
|
MNT="$DIR.mnt"
|
||||||
|
mkdir $MNT
|
||||||
|
|
||||||
|
# Mount
|
||||||
|
../../build/encfs -f --extpass "echo test" --standard $DIR $MNT &
|
||||||
|
disown
|
||||||
|
|
||||||
|
sleep 0.5
|
||||||
|
echo -n "Waiting for mount: "
|
||||||
|
while ! grep "$MNT fuse" /proc/self/mounts > /dev/null
|
||||||
|
do
|
||||||
|
sleep 1
|
||||||
|
echo -n x
|
||||||
|
done
|
||||||
|
echo " ok"
|
||||||
|
|
||||||
|
# Cleanup trap
|
||||||
|
trap "kill %1 ; cd / ; fusermount -u -z $MNT ; rm -rf $DIR $MNT" EXIT
|
||||||
|
|
||||||
|
echo "Starting fsstress loop"
|
||||||
|
N=1
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
# Note: EncFS does not seem to support the FS_IOC_GETFLAGS ioctl that
|
||||||
|
# fsstress is using. To get rid of the error messages we set "-f getattr=0"
|
||||||
|
# in all fsstress calls.
|
||||||
|
echo $N
|
||||||
|
mkdir $MNT/fsstress.1
|
||||||
|
echo -n " fsstress.1 "
|
||||||
|
$FSSTRESS -r -m 8 -n 1000 -d $MNT/fsstress.1 -f getattr=0 &
|
||||||
|
wait
|
||||||
|
|
||||||
|
mkdir $MNT/fsstress.2
|
||||||
|
echo -n " fsstress.2 "
|
||||||
|
$FSSTRESS -p 20 -r -m 8 -n 1000 -d $MNT/fsstress.2 -f getattr=0 &
|
||||||
|
wait
|
||||||
|
|
||||||
|
mkdir $MNT/fsstress.3
|
||||||
|
echo -n " fsstress.3 "
|
||||||
|
$FSSTRESS -p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 \
|
||||||
|
-f rename=30 -f stat=30 -f unlink=30 -f truncate=20 -m 8 \
|
||||||
|
-n 1000 -d $MNT/fsstress.3 -f getattr=0 &
|
||||||
|
wait
|
||||||
|
|
||||||
|
echo " rm"
|
||||||
|
rm -R $MNT/*
|
||||||
|
|
||||||
|
let N=$N+1
|
||||||
|
done
|
||||||
|
|
Loading…
Reference in New Issue
Block a user