101 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| FOLDER=$1
 | |
| SPEED=$1
 | |
| LABEL=$1
 | |
| 
 | |
| MBIT="$SPEED stream"
 | |
| T="pngcairo size 1000,600 enhanced font \"LiberationSerif,20\""
 | |
| EXT=png
 | |
| #T="pdfcairo"
 | |
| #EXT=pdf
 | |
| 
 | |
| function runplot {
 | |
|   for R in `seq -w 0 100`; do
 | |
|     FLDS=( $1 )
 | |
|     NAMS=( $2 )
 | |
| 
 | |
|     FN=`ls ${FLDS[0]}/run${R}_*.times 2> /dev/null`
 | |
|     if [ -z $FN ] ; then
 | |
|       return
 | |
|     fi
 | |
|     FILE=`basename $FN`
 | |
| 
 | |
|     FN=`ls ${FLDS[0]}/run${R}_*.times 2> /dev/null`
 | |
|     TIMES=`basename $FN`
 | |
|     VIEWERS=`echo $FILE | cut -d '_' -f 2`
 | |
|     TECH=`echo $FILE | cut -d '_' -f 3`
 | |
|     SECS=`echo $FILE | cut -d '.' -f 1 | cut -d '_' -f 4`
 | |
|     TIME=$(( $SECS / 60 ))m
 | |
| 
 | |
|     FILES=()
 | |
|     TIME_FN=()
 | |
| 
 | |
|     for i in `seq $(( ${#FLDS[@]} - 1 )) -1 0`; do
 | |
|       FN=`ls ${FLDS[$i]}/run${R}_*.times 2> /dev/null`
 | |
|       if [ -z $FN ] ; then
 | |
|         return
 | |
|       fi
 | |
|       FILES[$i]="${FLDS[$i]}/`basename $FN`"
 | |
|       FN=`ls ${FLDS[$i]}/run${R}_*.times 2> /dev/null`
 | |
|       TIME_FN[$i]="${FLDS[$i]}/`basename $FN`"
 | |
|     done
 | |
| 
 | |
|     if [ -n "$3" ] ; then
 | |
|       COMMON_DATA="${TIME}, ${MBIT}, ${VIEWERS} $3"
 | |
|       CFN="$3_${VIEWERS}_${TIME}"
 | |
|       COMMON_FILENAME=${CFN,,}
 | |
|     else
 | |
|       COMMON_DATA="${TIME}, ${MBIT}, ${VIEWERS} ${TECH}"
 | |
|       COMMON_FILENAME="${TECH}_${VIEWERS}_${TIME}"
 | |
|     fi
 | |
| 
 | |
|     PLOT5=""
 | |
|     for i in `seq $(( ${#FLDS[@]} - 1 )) -1 0`; do
 | |
|       if [ -n "${PLOT5}" ] ; then
 | |
|         PLOT5="${PLOT5}, "
 | |
|       fi
 | |
|       sort --field-separator=',' --key=4g < "${TIME_FN[$i]}" > "${TIME_FN[$i]}_sorted"
 | |
|       VC=`cut -f 4 -d ',' < "${TIME_FN[$i]}" | awk "(int(\\\$1) >= ${SECS}000-5000) {sum++} END{print sum}"`
 | |
|       SC=`cut -f 4 -d ',' < "${TIME_FN[$i]}" | awk "(int(\\\$1) >= ${SECS}000-30000) {sum++} END{print sum}"`
 | |
|       #and buffer times. Smoothing makes no sense here. Don't.
 | |
|       PLOT5="${PLOT5}'${TIME_FN[$i]}_sorted' using (\$4-${SECS}000)/1000 with linespoints lw 1 title '${NAMS[$i]} (${VC}, ${SC})'"
 | |
|     done
 | |
| 
 | |
|     gnuplot << EOF
 | |
| set terminal ${T}
 | |
| set datafile separator ","
 | |
| set key on under center
 | |
| 
 | |
| #set style fill solid 0.25 border -1
 | |
| #set style boxplot outliers pointtype 7
 | |
| #set style data boxplot
 | |
| #set boxwidth  0.5
 | |
| set pointsize 0.2
 | |
| set arrow from 0,-5 to ${VIEWERS}-1,-5 nohead
 | |
| 
 | |
| set title "Available buffer time, ${COMMON_DATA} clients"
 | |
| set output '${COMMON_FILENAME}_buffers.${EXT}'
 | |
| set format y "%gs"
 | |
| set ylabel "Buffer size (above line = success)"
 | |
| set xlabel "Each point represents a single connection"
 | |
| unset xtics
 | |
| plot ${PLOT5}
 | |
| 
 | |
| 
 | |
| EOF
 | |
| 
 | |
|     for i in `seq $(( ${#FLDS[@]} - 1 )) -1 0`; do
 | |
|       rm -f "${FLDS[$i]}/${TIMES}_sorted"
 | |
|     done
 | |
|   done
 | |
| }
 | |
| 
 | |
| #runplot "adobe_rtmp nginx_rtmp wowza_rtmp mist_rtmp flus_rtmp" "Adobe Nginx Wowza MistServer Flussonic"
 | |
| 
 | |
| runplot "$LABEL" "$FOLDER" "$SPEED"
 | |
| 
 | |
| #runplot "wowza_dash mist_dash wowza_dash_new mist_dash_new mist_dash3" "Wowza Mist WowNew MistNew MistNewer"
 | |
| #runplot "mist_dash mist_dash_new mist_dash3" "Old New Newer" "MistDash"
 | |
| #runplot "wowza_hls_new flus_hls_new mist_hls_new mist_hls5" "Wowza Flus Mist MistNew"
 | |
| #runplot "adobe_rtmp nginx_rtmp wowza_rtmp mist_rtmp flus_rtmp mist_rtmp5" "Adobe Nginx Wowza MistServer Flussonic MistNew"
 | |
| 
 | 
