#!/bin/bash
#you need to apt-get install: 
# btrfs-tools jfsutils xfsprogs e2fsprogs nilfs2-tools bonnie++ reiserfsprogs

#      setup

PARTITIONTODESTROY=/dev/mmcblk0p6 #avoid spaces in file name
FSTYPES="btrfs nilfs2 ext2 ext3 ext4 reiserfs jfs xfs"
MOUNTPATH=/tmp/fstest
LOG=/tmp/fstest.log
RESULT=/tmp/fstest.result.log

# ^^^^ setup end       ^^^^

# vvvv do not touch ;) vvvv
TGT=$PARTITIONTODESTROY

MKFSbtrfs="mkfs.btrfs $TGT"
MKFSnilfs2="mkfs.nilfs2 $TGT"
MKFSext2="mkfs.ext2 -F $TGT"
MKFSext3="mkfs.ext3 -F $TGT"
MKFSext4="mkfs.ext4 -F $TGT"
MKFSreiserfs="mkfs.reiserfs -fq $TGT"
MKFSjfs="mkfs.jfs -q $TGT"
MKFSxfs="mkfs.xfs -f $TGT"

#MOUNTbtrfs="mount -o noatime -t btrfs $TGT $MOUNTPATH"
#MOUNTnilfs2=
#MOUNText2="mkfs.ext2 -F $TGT"
#MOUNText3="mkfs.ext3 -F $TGT"
#MOUNText4="mkfs.ext4 -F $TGT"
#MOUNTjfs="mkfs.jfs -q $TGT"
#MOUNTxfs="mkfs.xfs $TGT"

drop_caches() {
  echo 3 > /proc/sys/vm/drop_caches
}

echo Running this script will destory all data on $PARTITIONTODESTROY
echo Edit header of script to choose different file/device to clean
echo Are you sure [type yes]?

read answer;

if [ "$answer" != "yes" ]; then
    echo Aborted
    exit
fi;

if [ -e $MOUNTPATH ]; then
    echo $MOUNTPATH already exist, remove it manually to proceed
    exit;
    rm -r $MOUNTPATH
fi;

mkdir -p $MOUNTPATH

for a in $FSTYPES; do
    drop_caches
    echo "----> Testing $a" 
    echo "$a" >>$RESULT
    echo "-->mkfs" 
    eval \$MKFS${a} || continue
    echo "-->mount" 
    mount -o noatime $TGT $MOUNTPATH || mount $TGT $MOUNTPATH
    echo "-->boonie"
    bonnie++ -u 0 -d $MOUNTPATH | tee -a $RESULT
    umount $TGT
done | tee $LOG