Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # Parse jmeter output and get various stats
- set -e # Exit immediately on error
- # set -x # Debug
- usage="jstats2 <jmeter-csv-output-file>"
- [ $1 ] || { echo "$usage" ; exit 1 ; }
- JFILE=$1
- # Show timestamp info
- UT1=$(sed -n '2p' $JFILE | cut -c -10)
- UT2=$(tail -1 $JFILE | cut -c -10)
- echo " --test run details--"
- echo " started $(date --date="@$UT1" +"%y%m%d-%H%M%S")"
- echo " stopped $(date --date="@$UT2" +"%y%m%d-%H%M%S")"
- echo "duration $(echo "$UT2 - $UT1" | bc) sec"
- # Create temporary file "ELDATA" for "elapsed" data column
- ELDATA=$(mktemp /tmp/$(basename $0).XXXXX) || exit 1
- cut -d, -f2 $JFILE | grep . | grep -v "elapsed" | sort -n > $ELDATA
- N=$(wc -l $ELDATA | awk '{print $1}')
- echo " count n $N"
- FC=$(awk -F, '$8 ~ /false/{print}' $JFILE | wc -l)
- FP=$(echo "100 * $FC / $N" | bc)
- echo "failures $FC ($FP %)"
- P50=$(dc -e "$N 2 / p")
- P90=$(dc -e "$N 9 * 10 / p")
- P95=$(dc -e "$N 95 * 100 / p")
- P99=$(dc -e "$N 99 * 100 / p")
- echo " --response stats (ms)--"
- echo " median $(awk "FNR==$P50" $ELDATA)"
- echo " p90 $(awk "FNR==$P90" $ELDATA)"
- echo " p95 $(awk "FNR==$P95" $ELDATA)"
- echo " p99 $(awk "FNR==$P99" $ELDATA)"
- echo -e " mean \u03BC $(awk '{sum+=$1}END{if (NR>0) print sum/NR}' $ELDATA)"
- echo -e "stddev \u03C3 $(awk '{x+=$0;y+=$0^2}END{print sqrt(y/NR-(x/NR)^2)}' $ELDATA)"
- echo " min $(awk "FNR==1" $ELDATA)"
- echo " max $(awk "END{print}" $ELDATA)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement