tests: fsstress-gocryptfs.bash: add DEBUG option

Also add a wrapper script, fsstress.collect-crashes.sh, to collect
the debug output.

https://github.com/hanwen/go-fuse/issues/372
This commit is contained in:
Jakob Unterwurzacher 2020-10-03 14:21:21 +02:00
parent 3c5a80c27b
commit 66449bf56b
2 changed files with 36 additions and 13 deletions

View File

@ -12,20 +12,19 @@
#
# Nowadays it should pass an indefinite number of iterations.
if [[ -z $TMPDIR ]]; then
TMPDIR=/var/tmp
export TMPDIR
fi
set -eu
# Init variables to default values if unset or empty
export TMPDIR=${TMPDIR:-/var/tmp}
DEBUG=${DEBUG:-0}
cd "$(dirname "$0")"
MYNAME=$(basename $0)
source ../fuse-unmount.bash
# fsstress binary
FSSTRESS=$HOME/fuse-xfstests/ltp/fsstress
if [ ! -x $FSSTRESS ]
if [[ ! -x $FSSTRESS ]]
then
echo "$MYNAME: fsstress binary not found at $FSSTRESS"
echo "Please clone and compile https://github.com/rfjakob/fuse-xfstests"
@ -47,22 +46,25 @@ for i in $(mount | cut -d" " -f3 | grep $TMPDIR/$MYNAME) ; do
done
# FS-specific compile and mount
if [ $MYNAME = fsstress-loopback.bash ]; then
if [[ $MYNAME = fsstress-loopback.bash ]]; then
echo -n "Recompile go-fuse loopback: "
cd $GOPATH/src/github.com/hanwen/go-fuse/example/loopback
git describe
go build && go install
$GOPATH/bin/loopback -q $MNT $DIR &
OPTS="-q"
if [[ $DEBUG -eq 1 ]]; then
OPTS="-debug"
fi
$GOPATH/bin/loopback $OPTS "$MNT" "$DIR" &
disown
elif [ $MYNAME = fsstress-gocryptfs.bash ]; then
elif [[ $MYNAME = fsstress-gocryptfs.bash ]]; then
echo "Recompile gocryptfs"
cd $GOPATH/src/github.com/rfjakob/gocryptfs
./build.bash # also prints the version
$GOPATH/bin/gocryptfs -q -init -extpass "echo test" -scryptn=10 $DIR
$GOPATH/bin/gocryptfs -q -extpass "echo test" -nosyslog $DIR $MNT
elif [ $MYNAME = fsstress-encfs.bash ]; then
# You probably want do adjust this path to your system
/home/jakob.donotbackup/encfs/build/encfs --extpass "echo test" --standard $DIR $MNT
$GOPATH/bin/gocryptfs -q -extpass "echo test" -nosyslog -fusedebug=$DEBUG $DIR $MNT
elif [[ $MYNAME = fsstress-encfs.bash ]]; then
encfs --extpass "echo test" --standard $DIR $MNT
else
echo Unknown mode: $MYNAME
exit 1

View File

@ -0,0 +1,21 @@
#!/bin/bash
cd ~/go/src/github.com/rfjakob/gocryptfs/tests/stress_tests || exit 1
export TMPDIR=/mnt/ext4-ramdisk
# Check that TMPDIR is writeable
touch "$TMPDIR/$$" || exit 1
rm "$TMPDIR/$$"
LOGDIR=/tmp/$$
mkdir "$LOGDIR" || exit 1
echo "Logging to LOGDIR=$LOGDIR, TMPDIR=$TMPDIR"
for i in $(seq 1 1000) ; do
set -x
LOG="$LOGDIR/fsstress.log.$(date --iso).$i"
if [[ -e $LOG ]]; then
continue
fi
rm -Rf "$TMPDIR"/fsstress*
# 100000 lines ...... ~7 MB
# 1000000 lines ..... ~70 MB
# 10000000 lines .... ~700 MB
DEBUG=1 ./fsstress-loopback.bash 2>&1 | tail -1000000 > "$LOG"
done