Home | History | Annotate | Download | only in test
      1 #!/bin/bash
      2 
      3 # Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
      4 #
      5 # Use of this source code is governed by a BSD-style license
      6 # that can be found in the LICENSE file in the root of the source
      7 # tree. An additional intellectual property rights grant can be found
      8 # in the file PATENTS.  All contributing project authors may
      9 # be found in the AUTHORS file in the root of the source tree.
     10 
     11 # To set up in e.g. Eclipse, run a separate shell and pipe the output from the
     12 # test into this script.
     13 #
     14 # In Eclipse, that amounts to creating a Run Configuration which starts
     15 # "/bin/bash" with the arguments "-c [trunk_path]/out/Debug/modules_unittests
     16 # --gtest_filter=*BweTest* | [trunk_path]/webrtc/modules/
     17 # remote_bitrate_estimator/bwe_plot.
     18 
     19 # bwe_plot.sh has a single y axis and a dual y axis mode. If any line specifies
     20 # a an axis by ending with "#<axis number (1 or 2)>" two y axis will be used,
     21 # the first will be assumed to represent bitrate (in kbps) and the second will
     22 # be assumed to represent time deltas (in ms).
     23 
     24 log=$(</dev/stdin)
     25 
     26 function gen_gnuplot_input {
     27   colors=(a7001f 0a60c2 b2582b 21a66c d6604d 4393c3 f4a582 92c5de edcbb7 b1c5d0)
     28   data_sets=$(echo "$log" | grep "^PLOT" | cut -f 2 | sort | uniq)
     29   linetypes=($(echo "$data_sets" | cut -d '#' -f 2 | cut -d ' ' -f 1))
     30   echo -n "reset; "
     31   echo -n "set terminal wxt size 1440,900 font \"Arial,9\"; "
     32   echo -n "set xlabel \"Seconds\"; "
     33   if [ -n $linetypes ]; then
     34     echo -n "set ylabel 'bitrate (kbps)';"
     35     echo -n "set ytics nomirror;"
     36     echo -n "set y2label 'time delta (ms)';"
     37     echo -n "set y2tics nomirror;"
     38   fi
     39   echo -n "plot "
     40   i=0
     41   for set in $data_sets ; do
     42     (( i++ )) && echo -n ","
     43     echo -n "'-' with "
     44     echo -n "linespoints "
     45     echo -n "ps 0.5 "
     46     echo -n "lc rgbcolor \"#${colors[$(($i % 10))]}\" "
     47     if [ -n ${linetypes[$i - 1]} ]; then
     48       echo -n "axes x1y${linetypes[$i - 1]} "
     49     elif [ -n $linestypes ]; then
     50       # If no line type is specified, but line types are used, we will default
     51       # to the bitrate axis.
     52       echo -n "axes x1y1 "
     53     fi
     54     echo -n "title \"$set\" "
     55   done
     56   echo
     57   for set in $data_sets ; do
     58     echo "$log" | grep "^PLOT.$set" | cut -f 3,4
     59     echo "e"
     60   done
     61 }
     62 
     63 gen_gnuplot_input "$log" | gnuplot -persist
     64