summaryrefslogtreecommitdiffstats
path: root/qemu/tests/qapi-schema/command-int.out
blob: e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 (plain)

or: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
#!/bin/bash
#
# Copyright 2017 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Script for graphical representation of VSPERF results
#
# Usage:
#   ./create_graph ["test names" [filter [directory]]]
#
# where:
#       "test names" is a !!! quoted !!! string with vsperf testcase names separated
#           by spaces
#           Default value: "phy2phy_tput"
#
#       "filter" is used to select matching VSPERF results; Its value
#           will be used as PATTERN of grep command executed on selected
#           csv result files.
#           Default value: ",OvsDpdkVhost,"
#
#       "directory" is a directory name, where vsperf results (i.e. results_*
#           subdirectories) are located
#           Default value: "/tmp"
#
# Example of invocation:
#   ./create_graph "phy2phy_tput phy2phy_cont pvp_cont pvvp_cont" ",OvsVanilla,"

TESTS="phy2phy_tput"    # default set of TCs to be plotted
FILTER=",OvsDpdkVhost," # default filter to be applied on matching CSV files
NUMBER_OF_RESULTS=50    # max number of recent results to be compared in graph
CSV_RESULT_COL=2        # column number with result to be plotted, e.g. 2 for rx_throughput_fps
B2B_CSV_RESULT_COL=1    # column number with result to be plotted for back2back TCs
CSV_PKT_SIZE_COL=12     # column number with frame/packet size
B2B_CSV_PKT_SIZE_COL=4  # column number with frame/packet size for back2back TCs
NUMBER_OF_PKT_SIZES=0   # to be detected automatically
MAX_NUMBER_OF_PKT_SIZES=10
DIR="/tmp"              # directory where vsperf results are stored
PNG_PREFIX='vsperf_'
TYPE="TPUT"             # customization of graph for TPUT or B2B

function clean_data() {
    rm -rf *csv
    rm -rf *plot
    rm -rf *png
}

function prepare_data() {
    for test_name in $TESTS; do
        FIRST=1
        CSV_LIST=`grep -r ",${test_name}," ${DIR}/results_*/*csv | grep $FILTER | cut -d':' -f1 | uniq | sort | tail -n ${NUMBER_OF_RESULTS}`
        for result_file in $CSV_LIST ; do
            tmp_dir=`dirname $result_file`
            TIMESTAMP=`basename $tmp_dir | cut -d'_' -f2-`
            if [ $FIRST -eq 1 ] ; then
                NUMBER_OF_PKT_SIZES=$((`wc -l ${result_file} | cut -d' ' -f1`-1))
                if [ $NUMBER_OF_PKT_SIZES -gt $MAX_NUMBER_OF_PKT_SIZES ] ; then
                    NUMBER_OF_PKT_SIZES=$MAX_NUMBER_OF_PKT_SIZES
                fi
                if grep back2back ${result_file} &> /dev/null ; then
                    PKT_SIZE_COL=$B2B_CSV_PKT_SIZE_COL
                    RES_COL=$B2B_CSV_RESULT_COL
                    TYPE="B2B"
                else
                    PKT_SIZE_COL=$CSV_PKT_SIZE_COL
                    RES_COL=$CSV_RESULT_COL
                    TYPE="TPUT"
                fi
                RESULT_HEADER=`tail -n+2 ${result_file} | head -n ${NUMBER_OF_PKT_SIZES} | cut -d',' -f${PKT_SIZE_COL} | paste -d',' -s`
                echo "[$TYPE] Date/PKT Size [B],${RESULT_HEADER}" > "${test_name}.csv"
                FIRST=0
            fi
            RESULT_4ALL_PKT_SIZES=`tail -n+2 ${result_file} | head -n ${NUMBER_OF_PKT_SIZES} | cut -d',' -f${RES_COL} | paste -d',' -s`
            echo "${TIMESTAMP},${RESULT_4ALL_PKT_SIZES}" >> "${test_name}.csv"
        done
    done
}

function plot_data() {
    echo "Created graphs:"
    SUFFIX=`echo $FILTER | tr -d -C [:alnum:]`
    for TEST_CSV in *csv; do
        [ ! -f $TEST_CSV ] && continue
        TEST_NAME=`basename ${TEST_CSV} .csv`"_${SUFFIX}"
        OUTPUT="$TEST_NAME.plot"
        cat > $OUTPUT <<- EOM
set datafile separator ","
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set format x "%m-%d"
set xlabel "date"
set format y "%8.0f"
set term png size 1024,768
EOM

        if grep '^\[B2B\]' ${TEST_CSV} &> /dev/null ; then
            echo 'set ylabel "frames"' >> $OUTPUT
            echo 'set log y' >> $OUTPUT
            echo 'set yrange [1:]' >> $OUTPUT
        else
            echo 'set ylabel "fps"' >> $OUTPUT
            echo 'set yrange [0:]' >> $OUTPUT
        fi

        iter=0
        echo "set title \"$TEST_NAME\"" >> $OUTPUT
        echo "set output \"${PNG_PREFIX}${TEST_NAME}.png\"" >> $OUTPUT
        echo -n "plot " >> $OUTPUT
        SEP=""
        while [ $iter -lt $NUMBER_OF_PKT_SIZES ] ; do
            COL=$((2+$iter))
            echo $"$SEP '$TEST_CSV' using 1:$COL with linespoints title columnheader($COL) \\" >> $OUTPUT
            iter=$(($iter+1))
            SEP=","
        done
        echo -e "\t${PNG_PREFIX}${TEST_NAME}.png"
        gnuplot $OUTPUT
    done
}

#
# Main body
#

# override default set of TESTS if specified by 1st parameter
if [ "$1" != "" ] ; then
    TESTS="$1"
fi

# override default filter if specified by 2nd parameter
if [ "$2" != "" ] ; then
    FILTER="$2"
fi

# override default directory with results by 3rd parameter
if [ "$3" != "" ] ; then
    DIR="$3"
fi
clean_data

echo -e "Plot data input:"
echo -e "\tTESTS: $TESTS"
echo -e "\tFilter: $FILTER"
echo -e "\tResults direcotry: $DIR"

prepare_data
plot_data