tests: factor out fs-agnostic benchmark script

"canonical-benchmarks.bash TESTDIR"
can now be used on any filesystem.
This commit is contained in:
Jakob Unterwurzacher 2016-07-16 18:08:01 +02:00
parent d3940c6263
commit 6b50f2debc
2 changed files with 56 additions and 29 deletions

View File

@ -1,42 +1,28 @@
#!/bin/bash #!/bin/bash -eu
# Run the set of "canonical" benchmarks that are shown on # Run the set of "canonical" benchmarks that are shown on
# https://nuetzlich.net/gocryptfs/comparison/ # https://nuetzlich.net/gocryptfs/comparison/
set -eu cd "$(dirname "$0")"
TIME="/usr/bin/time -f %e"
# Setup # Setup
cd /tmp CRYPT=$(mktemp -d /tmp/benchmark.bash.XXX)
wget -nv --show-progress -c https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.gz MNT=$CRYPT.mnt
DIR1=$(mktemp -d) mkdir $MNT
DIR2=$(mktemp -d)
# Mount
if [ $# -eq 1 ] && [ "$1" == "-encfs" ]; then if [ $# -eq 1 ] && [ "$1" == "-encfs" ]; then
echo "Testing EncFS" echo "Testing EncFS at $MNT"
encfs --extpass="echo test" --standard $DIR1 $DIR2 > /dev/null encfs --extpass="echo test" --standard $CRYPT $MNT > /dev/null
else else
gocryptfs -q -init -extpass="echo test" -scryptn=10 $DIR1 echo "Testing gocryptfs at $MNT"
gocryptfs -q -extpass="echo test" $DIR1 $DIR2 gocryptfs -q -init -extpass="echo test" -scryptn=10 $CRYPT
gocryptfs -q -extpass="echo test" $CRYPT $MNT
fi fi
cd $DIR2
# Cleanup trap
trap "cd /; fusermount -u -z $MNT; rm -rf $CRYPT $MNT" EXIT
# Benchmarks # Benchmarks
echo -n "WRITE: " ./tests/canonical-benchmarks.bash $MNT
dd if=/dev/zero of=zero bs=128K count=1000 2>&1 | tail -n 1
rm zero
sleep 1
echo -n "UNTAR: "
$TIME tar xzf ../linux-3.0.tar.gz
sleep 1
echo -n "LS: "
$TIME ls -lR linux-3.0 > /dev/null
sleep 1
echo -n "RM: "
$TIME rm -Rf linux-3.0
# Cleanup
cd ..
fusermount -u $DIR2 -z
rm -Rf $DIR1 $DIR2

41
tests/canonical-benchmarks.bash Executable file
View File

@ -0,0 +1,41 @@
#!/bin/bash -eu
#
# Run the set of "canonical" benchmarks that are shown on
# https://nuetzlich.net/gocryptfs/comparison/
# against the directory passed as "$1".
#
# This is called by the top-level script "benchmark.bash".
if [ $# -ne 1 ]; then
MYNAME=$(basename $0)
echo "usage: $MYNAME TESTDIR"
exit 1
fi
cd "$1"
TGZ=/tmp/linux-3.0.tar.gz
if [ "$(md5sum /tmp/linux-3.0.tar.gz | cut -f1 -d' ')" != \
"f7e6591d86a9dbe123dfd1a0be054e7f" ]; then
echo "Downloading linux-3.0.tar.gz"
wget -nv --show-progress -c -O $TGZ \
https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.gz
fi
function etime {
LC_ALL=C /usr/bin/time -f %e 2>&1 $@ > /dev/null
}
echo -n "WRITE: "
dd if=/dev/zero of=zero bs=128K count=1000 2>&1 | tail -n 1
rm zero
sleep 1
echo -n "UNTAR: "
etime tar xzf $TGZ
sleep 1
echo -n "LS: "
etime ls -lR linux-3.0
sleep 1
echo -n "RM: "
etime rm -Rf linux-3.0