#!/bin/bash

# PARAMETROS ESPECIFICOS PARA CADA CLIENTE

date=`date +%Y.%m.%d.%H.%M`
numjobs="8"
iodepth="32"
resultfolder=result.$date
results=$resultfolder/results.jobs$numjobs.iodepth$iodepth.txt
mkdir $resultfolder

echo "###### TESTES DE LEITURA ######"
echo ""
sleep 5


# READ BS 4K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --name=pure-r-4k --rw=read --numjobs=$numjobs --iodepth=$iodepth \
--bs=4k --output=$resultfolder/pure-r-4k.txt

rm -f pure-*
sleep 5

# READ BS 16K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --name=pure-r-16k --rw=read --numjobs=$numjobs --iodepth=$iodepth \
--bs=16k --output=$resultfolder/pure-r-16k.txt

rm -f pure-*
sleep 5

# READ BS 32K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --name=pure-r-32k --rw=read --numjobs=$numjobs --iodepth=$iodepth \
--bs=32k --output=$resultfolder/pure-r-32k.txt

rm -f pure-*
sleep 5

# READ BS 64K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --name=pure-r-64k --rw=read --numjobs=$numjobs --iodepth=$iodepth \
--bs=64k --output=$resultfolder/pure-r-64k.txt

rm -f pure-*
sleep 5

# READ BS 512K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --name=pure-r-512k --rw=read --numjobs=$numjobs --iodepth=$iodepth \
--bs=512k --output=$resultfolder/pure-r-512k.txt

rm -f pure-*
sleep 5

# READ BS 1024K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --name=pure-r-1024k --rw=read --numjobs=$numjobs --iodepth=$iodepth \
--bs=1024k --output=$resultfolder/pure-r-1024k.txt

rm -f pure-*
sleep 5

echo ""
echo "###### TESTES DE GRAVACAO #####"
echo ""
sleep 5


# WRITE BS 4K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --bs=4k --zero_buffers --numjobs=$numjobs --bwavgtime=1000 --iopsavgtime=1000 \
--log_avg_msec=1000 --group_reporting --name=pure-w-4k --rw=write --iodepth=$iodepth --output=$resultfolder/pure-w-4k.txt

rm -f pure-*
sleep 5

# WRITE BS 16K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --bs=16k --zero_buffers --numjobs=$numjobs --bwavgtime=1000 --iopsavgtime=1000 \
--log_avg_msec=1000 --group_reporting --name=pure-w-16k --rw=write --iodepth=$iodepth --output=$resultfolder/pure-w-16k.txt

rm -f pure-*
sleep 5


# WRITE BS 32K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --bs=32k --zero_buffers --numjobs=$numjobs --bwavgtime=1000 --iopsavgtime=1000 \
--log_avg_msec=1000 --group_reporting --name=pure-w-32k --rw=write --iodepth=$iodepth --output=$resultfolder/pure-w-32k.txt

rm -f pure-*
sleep 5

# WRITE BS 64K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --bs=64k --zero_buffers --numjobs=$numjobs --bwavgtime=1000 --iopsavgtime=1000 \
--log_avg_msec=1000 --group_reporting --name=pure-w-64k --rw=write --iodepth=$iodepth --output=$resultfolder/pure-w-64k.txt

rm -f pure-*
sleep 5

# WRITE BS 512K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --bs=512k --zero_buffers --numjobs=$numjobs --bwavgtime=1000 --iopsavgtime=1000 \
--log_avg_msec=1000 --group_reporting --name=pure-w-512k --rw=write --iodepth=$iodepth --output=$resultfolder/pure-w-512k.txt

rm -f pure-*
sleep 5

# WRITE BS 1024K
fio --time_based --size=1g --runtime=30 --ioengine=libaio \
--randrepeat=0 --direct=1 --invalidate=1 --verify=0 --verify_fatal=0 \
--ramp_time=10 --bs=1024k --zero_buffers --numjobs=$numjobs --bwavgtime=1000 --iopsavgtime=1000 \
--log_avg_msec=1000 --group_reporting --name=pure-w-1024k --rw=write --iodepth=$iodepth --output=$resultfolder/pure-w-1024k.txt

rm -f pure-*
sleep 5

echo ""
echo "###### TESTES DE GRAVACAO E LEITURA SIMULTANEA ######"
echo ""
sleep 5

# READWRITE BS 4K
fio --time_based --size=1g --runtime=30 --ioengine=libaio --randrepeat=0 \
--direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --ramp_time=10 \
--zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --rw=randrw --rwmixread=60 --rwmixwrite=40 --name=pure-rw-4k \
--numjobs=$numjobs --stonewall --iodepth=$iodepth --bs=4k --output=$resultfolder/pure-rw-4k.txt

rm -f pure-*
sleep 5

# READWRITE BS 16K
fio --time_based --size=1g --runtime=30 --ioengine=libaio --randrepeat=0 \
--direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --ramp_time=10 \
--zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --rw=randrw --rwmixread=60 --rwmixwrite=40 --name=pure-rw-16k \
--numjobs=$numjobs --stonewall --iodepth=$iodepth --bs=16k --output=$resultfolder/pure-rw-16k.txt

rm -f pure-*
sleep 5

# READWRITE BS 32K
fio --time_based --size=1g --runtime=30 --ioengine=libaio --randrepeat=0 \
--direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --ramp_time=10 \
--zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --rw=randrw --rwmixread=60 --rwmixwrite=40 --name=pure-rw-32k \
--numjobs=$numjobs --stonewall --iodepth=$iodepth --bs=32k --output=$resultfolder/pure-rw-32k.txt

rm -f pure-*
sleep 5

# READWRITE BS 64K
fio --time_based --size=1g --runtime=30 --ioengine=libaio --randrepeat=0 \
--direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --ramp_time=10 \
--zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --rw=randrw --rwmixread=60 --rwmixwrite=40 --name=pure-rw-64k \
--numjobs=$numjobs --stonewall --iodepth=$iodepth --bs=64k --output=$resultfolder/pure-rw-64k.txt

rm -f pure-*
sleep 5

# READWRITE BS 512K
fio --time_based --size=1g --runtime=30 --ioengine=libaio --randrepeat=0 \
--direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --ramp_time=10 \
--zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --rw=randrw --rwmixread=60 --rwmixwrite=40 --name=pure-rw-512k \
--numjobs=$numjobs --stonewall --iodepth=$iodepth --bs=512k --output=$resultfolder/pure-rw-512k.txt

rm -f pure-*
sleep 5

# READWRITE BS 1024K
fio --time_based --size=1g --runtime=30 --ioengine=libaio --randrepeat=0 \
--direct=1 --invalidate=1 --verify=0 --verify_fatal=0 --ramp_time=10 \
--zero_buffers --bwavgtime=500 --iopsavgtime=500 --log_avg_msec=500 \
--group_reporting --rw=randrw --rwmixread=60 --rwmixwrite=40 --name=pure-rw-1024k \
--numjobs=$numjobs --stonewall --iodepth=$iodepth --bs=1024k --output=$resultfolder/pure-rw-1024k.txt

rm -f pure-*
sleep 5

echo ""

echo "########## DADOS ############" > $results
echo "" >> $results
echo "Hostname:`hostname`" >> $results
echo "Distribuicao: `cat /etc/*-release`" >> $results
echo lsb_release -a >> $results
echo "" >> $results
echo "###########################" >> $results
echo "" >> $results
lscpu | grep "Model name:" | cut -d: -f2 | sed -e 's/^[ \t]*//' >> $results
lscpu | grep "CPU(s):" | cut -d: -f2 | sed -e 's/^[ \t]*//' | head -1 >> $results
echo "" >> $results
echo "###########################" >> $results
echo "" >> $results
echo "### LEITURAS ###" >> $results
echo "" >> $results
echo "Read Block Size 4K" >> $results
cat $resultfolder/pure-r-4k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read Block Size 16K" >> $results
cat $resultfolder/pure-r-16k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read Block Size 32K" >> $results
cat $resultfolder/pure-r-32k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read Block Size 64K" >> $results
cat $resultfolder/pure-r-64k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read Block Size 512K" >> $results
cat $resultfolder/pure-r-512k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read Block Size 1024K" >> $results
cat $resultfolder/pure-r-1024k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "### GRAVACOES ###" >> $results
echo "" >> $results
echo "Write Block Size 4K" >> $results
cat $resultfolder/pure-w-4k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Write Block Size 16K" >> $results
cat $resultfolder/pure-w-16k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Write Block Size 32K" >> $results
cat $resultfolder/pure-w-32k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Write Block Size 64K" >> $results
cat $resultfolder/pure-w-64k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Write Block Size 512K" >> $results
cat $resultfolder/pure-w-512k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Write Block Size 1024K" >> $results
cat $resultfolder/pure-w-1024k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "### LEITURAS E GRAVACOES SIMULTANEAS ###" >> $results
echo "" >> $results
echo "Read/Write Block Size 4K" >> $results
cat $resultfolder/pure-rw-4k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read/Write Block Size 16K" >> $results
cat $resultfolder/pure-rw-16k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read/Write Block Size 32K" >> $results
cat $resultfolder/pure-rw-32k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read/Write Block Size 64K" >> $results
cat $resultfolder/pure-rw-64k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read/Write Block Size 512K" >> $results
cat $resultfolder/pure-rw-512k.txt | grep "IOPS=" >> $results
echo "" >> $results
echo "Read/Write Block Size 1024K" >> $results
cat $resultfolder/pure-rw-1024k.txt | grep "IOPS=" >> $results
echo "" >> $results

echo ""
echo "##### RESULTADOS #####"
cat $results