#!/bin/sh LINECOUNT=linecount.jtot UNIXTIMEA=utimea.jtot UNIXTIMEZ=utimez.jtot DATETIMEA=ymda.jtot DATETIMEZ=ymdz.jtot ELAPSEDSEC=elapsedsec.jtot ELAPSEDHMS=elapsedhms.jtot RESPONSEAV=response.jtot OUTFILE=jtl-file-totals.txt echo "Gathering data .." echo -n "$LINECOUNT" wc -l */*/*jtl | awk '{print $2 "\t" $1}' > $LINECOUNT if [ ! -s $LINECOUNT ] ; then echo "file empty!" ; exit 1 ; fi echo -n " $UNIXTIMEA" for fl in `ls */*/*jtl`; do sed -n '2 p' $fl|cut -c -10; done > $UNIXTIMEA echo -n " $UNIXTIMEZ" for fl in `ls */*/*jtl`; do tail -1 $fl|cut -c -10; done > $UNIXTIMEZ echo -n " $DATETIMEA" for ut in `cat $UNIXTIMEA`; do utime2ymd $ut; done > $DATETIMEA echo -n " $DATETIMEZ" for ut in `cat $UNIXTIMEZ`; do utime2ymd $ut; done > $DATETIMEZ echo -n " $ELAPSEDSEC" [ -f $ELAPSEDSEC ] && { rm $ELAPSEDSEC ; } flcount=`wc -l $DATETIMEA|awk '{print $1}'` line=1 while [ $line -le $flcount ] do begin=`sed -n "$line p" $UNIXTIMEA` end=`sed -n "$line p" $UNIXTIMEZ` elapsed=`echo "$end - $begin" | bc -l` echo "$elapsed" >> $ELAPSEDSEC line=$(($line+1)) done echo -n " $ELAPSEDHMS" for sectot in `cat $ELAPSEDSEC` do blob=`utime2ymd $sectot gmt` hh=`echo $blob|cut -c10,11` mm=`echo $blob|cut -c12,13` ss=`echo $blob|cut -c14,15` echo "$hh:$mm:$ss" done > $ELAPSEDHMS echo -n " $RESPONSEAV" [ -f $RESPONSEAV ] && { rm $RESPONSEAV ; } for fl in `ls */*/*jtl` do FLWORKING=/tmp/jtlsum.$$ sed -n '2,$ p' $fl > $FLWORKING sum=`awk -F',' '{ print "a = a + " $2 "; a" }' $FLWORKING | bc -l | tail -1` n=`wc -l $FLWORKING|awk '{print $1}'` avg=`echo "$sum / $n" | bc -l | awk '{printf "%0.2f",$1}'` echo $avg >> $RESPONSEAV rm $FLWORKING done echo -e "\n\nWriting output file .." echo -e "JMeter-Output-file,total-throughput,start,end,elapsed-sec,elapsed-hms,response-av" \ > $OUTFILE paste -d ',' $LINECOUNT $DATETIMEA $DATETIMEZ $ELAPSEDSEC $ELAPSEDHMS $RESPONSEAV \ | tr "\t" "," >> $OUTFILE rm *jtot echo $OUTFILE echo "done."