| #!/bin/bash |
| |
| # plot.sh |
| # |
| # Copyright (C) 2016 Free Software Foundation, Inc. |
| # |
| # This file is part of DejaGnu. |
| # |
| # DejaGnu is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3 of the License, or |
| # (at your option) any later version. |
| |
| # This script executes a series of SQL calls to our testing database, |
| # and makes a data file for gnuplot. |
| |
| if test "$#" -eq 0; then |
| echo "Need to supply a graph name!" |
| name="GCC" |
| else |
| name=$1 |
| fi |
| |
| # These are required to access the database |
| user="USER" |
| passwd="PASSWD" |
| outfile="testrun.data" |
| |
| # Check the environment for the database access information |
| if test x"${CBUILD_DBUSER}" != x; then |
| user="${CBUILD_DBUSER}" |
| fi |
| if test x"${CBUILD_DBPASSWD}" != x; then |
| passwd="${CBUILD_DBPASSWD}" |
| fi |
| |
| # setup an array of colors, since the number of data files varies |
| declare -a colors=('green' 'red' 'cyan' 'blue' 'purple' 'brown' 'coral' 'yellow' 'black') |
| |
| type="with lines" |
| type= |
| |
| machines=$(mysql -u"$user" -p"$passwd" --local -e "SELECT DISTINCT(build_machine) FROM dejagnu.testruns" | sed -e 's/build_machine//' | sed -e 's:\.::' | tr '\n' ' ') |
| echo "Build machines are: ${machines}" |
| |
| tools=$(mysql -u"$user" -p"$passwd" --local -e "SELECT DISTINCT(tool) FROM dejagnu.testruns" | sed -e 's/tool//' | tr '\n' ' ') |
| |
| # Only graph if there is a data file |
| #tools="`ls *.data | cut -d '.' -f 1`" |
| echo "Tools are: ${tools}" |
| |
| datafiles="${machines}" |
| if test "$#" -gt 1; then |
| case $2 in |
| m*) datafiles="echo ${machines}" |
| echo "Separating graphs by build machine name" |
| ;; |
| t*) datafiles="${tools}" |
| echo "Separating graphs by tool name" |
| ;; |
| *) |
| datafiles="${machines}" |
| ;; |
| esac |
| fi |
| |
| outfile="gnuplot.cmd" |
| cindex=0 |
| for j in ${datafiles}; do |
| # for now we don't want aarch64 results in the chart as they distort the data |
| # heavily. |
| if test "$(echo "$j" | grep -c aarch64)" -gt 0; then |
| continue |
| fi |
| if test -f "$j".data -a -s "$j".data; then |
| if test ${cindex} -eq 0; then |
| echo "Creating gnuplot comand file: ${outfile}" |
| cat <<EOF >${outfile} |
| set boxwidth 0.9 relative |
| set style data histograms |
| set style histogram cluster |
| set style fill solid 1.0 border lt -1 |
| set autoscale x |
| set autoscale y |
| #set yrange [97:100] |
| set title "Precentage PASSes" |
| set ylabel "Precent PASS" |
| set format y "%g%%" |
| #set xlabel "Architecture" |
| |
| # Rotate the X axis labels 90 degrees, so they all fit |
| set xtics border in scale 1,0.5 nomirror rotate by -90 offset character 0, 0, 0 |
| |
| # Out the key in out of the way |
| set key right top |
| |
| set term png size 1900,1024 |
| set output "testrun.png" |
| |
| set xlabel "${name} Versions" |
| |
| set grid ytics lt 0 lw 1 lc rgb "#bbbbbb" |
| #set grid xtics lt 0 lw 1 lc rgb "#bbbbbb" |
| |
| EOF |
| # echo -n "plot \"$j.data\" using (((\$6+\$9)/\$5)/100):xtic(3) title \"$j\" lt rgb \"${colors[$cindex]}\" ${type}" >> ${outfile} |
| echo -n "plot \"$j.data\" using ((\$6/\$5) * 100):xtic(3) title \"$j\" lt rgb \"${colors[$cindex]}\" ${type}" >> ${outfile} |
| # cindex=`expr $cindex + 1` |
| # echo -n ", \"\" using (((\$7+\$8+\$10+\$11+\$12)/\$5) * 100):xtic(3) title \"FAILS\" lt rgb \"${colors[$cindex]}\" ${type}" >> ${outfile} |
| else |
| # echo -n ", \"$j.data\" using ((\$6+\$9/\$5)/100):xtic(3) title \"$j\" lt rgb \"${colors[$cindex]}\" ${type}" >> ${outfile} |
| echo -n ", \"$j.data\" using ((\$6/\$5) * 100):xtic(3) title \"$j\" lt rgb \"${colors[$cindex]}\" ${type}" >> ${outfile} |
| fi |
| cindex=$((cindex + 1)) |
| fi |
| done |
| |
| #for j in ${datafiles}; do |
| # if test -f $j.data -a -s $j.data; then |
| cat <<EOF >>${outfile} |
| |
| set term x11 persist |
| replot |
| |
| EOF |
| # fi |
| #done |
| |
| |