diff options
Diffstat (limited to 'ci/build-vsperf.sh')
-rwxr-xr-x | ci/build-vsperf.sh | 166 |
1 files changed, 165 insertions, 1 deletions
diff --git a/ci/build-vsperf.sh b/ci/build-vsperf.sh index 46c0d0e9..a7c44699 100755 --- a/ci/build-vsperf.sh +++ b/ci/build-vsperf.sh @@ -1,3 +1,167 @@ #!/bin/bash +# +# Copyright 2015 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. -echo "Hello world" +# VSPERF nightly build execution script + +# Usage: +# build-vsperf.sh job_type +# where job_type is one of "verify", "merge", "daily" + +# +# configuration +# + +EXIT=0 +VSPERF_BIN='./vsperf' +LOG_FILE_USER='/tmp/vsperf_user.log' +LOG_FILE_VANILLA='/tmp/vsperf_vanilla.log' +LOG_FILE_PREFIX="/tmp/vsperf_build_" +OPNFV_POD="intel-pod3" + +# CI job specific configuration +# VERIFY - run basic set of TCs with default settings +TESTCASES_VERIFY="phy2phy_tput pvp_tput" +TESTPARAM_VERIFY="" +# MERGE - run selected TCs with default settings +TESTCASES_MERGE="phy2phy_tput back2back phy2phy_cont pvp_tput pvvp_tput" +TESTPARAM_MERGE="" +# DAILY - run selected TCs for defined packet sizes +TESTCASES_DAILY='phy2phy_tput back2back phy2phy_tput_mod_vlan phy2phy_scalability pvp_tput pvp_back2back pvvp_tput pvvp_back2back' +TESTPARAM_DAILY='--test-params pkt_sizes=64,128,512,1024,1518' +# check if user config file exists if not then we will use default settings +[ -f $HOME/vsperf.conf ] && CONF_FILE="--conf-file ${HOME}/vsperf.conf" || CONF_FILE="" + +# +# functions +# + +# check and print testcase execution status +# parameters: +# $1 - directory with results +function print_results() { + for i in $TESTCASES ; do + if [[ $i == *"pvp"* ]]; then + DEPLOYMENT="pvp" + elif [[ $i == *"pvvp"* ]]; then + DEPLOYMENT="pvvp" + else + DEPLOYMENT="p2p" + fi + RES_FILE="result_${i}_${DEPLOYMENT}.csv" + + if [ -e "${1}/${RES_FILE}" ]; then + printf " %-70s %-6s\n" $RES_FILE "OK" + else + printf " %-70s %-6s\n" $RES_FILE "FAILED" + EXIT=1 + fi + done +} + +# execute tests and display results +# parameters: +# $1 - vswitch and vnf combination, one of OVS_vanilla, OVS_with_DPDK_and_vHost_Cuse, OVS_with_DPDK_and_vHost_User +# $2 - CI job type, one of verify, merge, daily +function execute_vsperf() { + # figure out log file name + LOG_FILE="${LOG_FILE_PREFIX}"`date "+%Y%m%d_%H%M%S%N"`".log" + + # figure out list of TCs and execution parameters + case $2 in + "verify") + TESTPARAM=$TESTPARAM_VERIFY + TESTCASES=$TESTCASES_VERIFY + ;; + "merge") + TESTPARAM=$TESTPARAM_MERGE + TESTCASES=$TESTCASES_MERGE + ;; + *) + # by default use daily build + TESTPARAM=$TESTPARAM_DAILY + TESTCASES=$TESTCASES_DAILY + ;; + esac + + # execute testcases + echo -e "\nExecution of VSPERF for $1" + # vsperf must be executed directly from vsperf directory + cd .. + case $1 in + "OVS_vanilla") + echo "$VSPERF_BIN --opnfvpod="$OPNFV_POD" --vswitch OvsVanilla --vnf QemuVirtioNet $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE" + $VSPERF_BIN --opnfvpod="$OPNFV_POD" --vswitch OvsVanilla --vnf QemuVirtioNet $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE + ;; + "OVS_with_DPDK_and_vHost_Cuse") + echo "$VSPERF_BIN --opnfvpod="$OPNFV_POD" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostCuse $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE" + $VSPERF_BIN --opnfvpod="$OPNFV_POD" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostCuse $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE + ;; + *) + echo "$VSPERF_BIN --opnfvpod="$OPNFV_POD" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostUser $CONF_FILE $TESTPARAM $TESTCASES > $LOG_FILE" + $VSPERF_BIN --opnfvpod="$OPNFV_POD" --vswitch OvsVanilla --vnf QemuDpdkVhostUser $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE + ;; + esac + # let's go back to CI dir + cd - + + # evaluation of results + echo -e "\nResults for $1" + RES_DIR=`grep "Creating result directory" $LOG_FILE | cut -d'/' -f2-` + if [ "x" == "x${RES_DIR}" ] ; then + echo "FAILURE: Results are not available." + else + print_results "/${RES_DIR}" + fi +} + +# +# main +# + +# execute job based on passed parameter +case $1 in + "verify") + echo "VSPERF verify job" + echo "=================" + + #execute_vsperf OVS_with_DPDK_and_vHost_User $1 + + exit $EXIT + ;; + "merge") + echo "VSPERF merge job" + echo "================" + + #execute_vsperf OVS_with_DPDK_and_vHost_User $1 + + exit $EXIT + ;; + *) + echo "VSPERF daily job" + echo "================" + + execute_vsperf OVS_with_DPDK_and_vHost_User $1 + execute_vsperf OVS_vanilla $1 + + exit $EXIT + ;; +esac + +exit $EXIT + +# +# end +# |