From 66449bf56b22d2f6b6309649b4c4819217c1cee5 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 3 Oct 2020 14:21:21 +0200 Subject: [PATCH] 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 --- tests/stress_tests/fsstress-gocryptfs.bash | 28 ++++++++++--------- .../stress_tests/fsstress.collect-crashes.sh | 21 ++++++++++++++ 2 files changed, 36 insertions(+), 13 deletions(-) create mode 100755 tests/stress_tests/fsstress.collect-crashes.sh diff --git a/tests/stress_tests/fsstress-gocryptfs.bash b/tests/stress_tests/fsstress-gocryptfs.bash index 5f8c6dc..91952a1 100755 --- a/tests/stress_tests/fsstress-gocryptfs.bash +++ b/tests/stress_tests/fsstress-gocryptfs.bash @@ -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 diff --git a/tests/stress_tests/fsstress.collect-crashes.sh b/tests/stress_tests/fsstress.collect-crashes.sh new file mode 100755 index 0000000..f315e2e --- /dev/null +++ b/tests/stress_tests/fsstress.collect-crashes.sh @@ -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