aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xci/build-vsperf.sh166
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
+#