-# Copyright (c) 2020 Cisco and/or its affiliates.
-# Copyright (c) 2020 PANTHEON.tech and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2021 PANTHEON.tech and/or its affiliates.
# 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:
# - TAGS - Array variable holding selected tag boolean expressions.
# - TOPOLOGIES_TAGS - Tag boolean expression filtering tests for topology.
# - TEST_CODE - The test selection string from environment or argument.
+ # - SELECTION_MODE - Selection criteria [test, suite, include, exclude].
# Variables set:
# - PYBOT_ARGS - String holding part of all arguments for pybot.
# - EXPANDED_TAGS - Array of strings pybot arguments compiled from tags.
if [[ ${tag} == "!"* ]]; then
EXPANDED_TAGS+=("--exclude" "${tag#$"!"}")
else
- EXPANDED_TAGS+=("--include" "${TOPOLOGIES_TAGS}AND${tag}")
+ if [[ ${SELECTION_MODE} == "--test" ]]; then
+ EXPANDED_TAGS+=("--test" "${tag}")
+ else
+ EXPANDED_TAGS+=("--include" "${TOPOLOGIES_TAGS}AND${tag}")
+ fi
fi
done
+
+ if [[ ${SELECTION_MODE} == "--test" ]]; then
+ EXPANDED_TAGS+=("--include" "${TOPOLOGIES_TAGS}")
+ fi
}
NODENESS="1n"
FLAVOR="tx2"
;;
+ *"2n-aws"*)
+ NODENESS="2n"
+ FLAVOR="aws"
+ ;;
+ *"3n-aws"*)
+ NODENESS="3n"
+ FLAVOR="aws"
+ ;;
*"2n-skx"*)
NODENESS="2n"
FLAVOR="skx"
NODENESS="3n"
FLAVOR="dnv"
;;
+ *"2n-tx2"*)
+ NODENESS="2n"
+ FLAVOR="tx2"
+ ;;
*"3n-tsh"*)
NODENESS="3n"
FLAVOR="tsh"
}
die "Trap attempt failed, unreserve succeeded. Aborting."
}
- # Cleanup + calibration checks.
+ # Cleanup + calibration checks
set +e
ansible_playbook "cleanup, calibration"
result="$?"
set -exuo pipefail
- os_id=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g') || {
- die "Get OS release failed."
- }
+ source /etc/os-release || die "Get OS release failed."
- case "${os_id}" in
+ case "${ID}" in
"ubuntu"*)
- IMAGE_VER_FILE="VPP_DEVICE_IMAGE_UBUNTU"
- VPP_VER_FILE="VPP_STABLE_VER_UBUNTU_BIONIC"
- PKG_SUFFIX="deb"
- ;;
- "centos"*)
- IMAGE_VER_FILE="VPP_DEVICE_IMAGE_CENTOS"
- VPP_VER_FILE="VPP_STABLE_VER_CENTOS"
- PKG_SUFFIX="rpm"
+ case "${VERSION}" in
+ *"LTS (Focal Fossa)"*)
+ IMAGE_VER_FILE="VPP_DEVICE_IMAGE_UBUNTU"
+ VPP_VER_FILE="VPP_STABLE_VER_UBUNTU_FOCAL"
+ PKG_SUFFIX="deb"
+ ;;
+ *)
+ die "Unsupported Ubuntu version!"
+ ;;
+ esac
;;
*)
- die "Unable to identify distro or os from ${os_id}"
+ die "Unsupported distro or OS!"
;;
esac
# - BASH_FUNCTION_DIR - Directory with input files to process.
# Variables set:
# - TAGS - Array of processed tag boolean expressions.
+ # - SELECTION_MODE - Selection criteria [test, suite, include, exclude].
set -exuo pipefail
*"3n-skx"* | *"2n-skx"* | *"2n-clx"* | *"2n-zn2"*)
default_nic="nic_intel-xxv710"
;;
- *"3n-hsw"* | *"mrr-daily-master")
+ *"3n-hsw"* | *"2n-tx2"* | *"mrr-daily-master")
default_nic="nic_intel-xl710"
;;
+ *"2n-aws"* | *"3n-aws"*)
+ default_nic="nic_amazon-nitro-50g"
+ ;;
*)
default_nic="nic_intel-x710"
;;
esac
sed_nic_sub_cmd="sed s/\${default_nic}/${default_nic}/"
- sed_nics_sub_cmd="sed -e s/ANDxxv710/ANDnic_intel-xxv710/"
- sed_nics_sub_cmd+=" | sed -e s/ANDx710/ANDnic_intel-x710/"
- sed_nics_sub_cmd+=" | sed -e s/ANDxl710/ANDnic_intel-xl710/"
- sed_nics_sub_cmd+=" | sed -e s/ANDx520-da2/ANDnic_intel-x520-da2/"
- sed_nics_sub_cmd+=" | sed -e s/ANDx553/ANDnic_intel-x553/"
- sed_nics_sub_cmd+=" | sed -e s/ANDcx556a/ANDnic_mellanox-cx556a/"
- sed_nics_sub_cmd+=" | sed -e s/ANDvic1227/ANDnic_cisco-vic-1227/"
- sed_nics_sub_cmd+=" | sed -e s/ANDvic1385/ANDnic_cisco-vic-1385/"
+ awk_nics_sub_cmd=""
+ awk_nics_sub_cmd+='gsub("xxv710","25ge2p1xxv710");'
+ awk_nics_sub_cmd+='gsub("x710","10ge2p1x710");'
+ awk_nics_sub_cmd+='gsub("xl710","40ge2p1xl710");'
+ awk_nics_sub_cmd+='gsub("x520-da2","10ge2p1x520");'
+ awk_nics_sub_cmd+='gsub("x553","10ge2p1x553");'
+ awk_nics_sub_cmd+='gsub("cx556a","100ge2p1cx556a");'
+ awk_nics_sub_cmd+='gsub("vic1227","10ge2p1vic1227");'
+ awk_nics_sub_cmd+='gsub("vic1385","40ge2p1vic1385");'
+ awk_nics_sub_cmd+='gsub("nitro-50g","50ge1p1ENA");'
+ awk_nics_sub_cmd+='if ($9 =="drv_avf") drv="avf-";'
+ awk_nics_sub_cmd+='else if ($9 =="drv_rdma_core") drv ="rdma-";'
+ awk_nics_sub_cmd+='else drv="";'
+ awk_nics_sub_cmd+='print "*"$7"-" drv $11"-"$5"."$3"-"$1"-" drv $11"-"$5'
+
# Tag file directory shorthand.
tfd="${JOB_SPECS_DIR}"
case "${TEST_CODE}" in
# Select specific performance tests based on jenkins job type variable.
*"ndrpdr-weekly"* )
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/mlr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"mrr-daily"* )
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/mrr_daily/${DUT}-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"mrr-weekly"* )
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/mrr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"report-iterative"* )
test_sets=(${TEST_TAG_STRING//:/ })
# Run only one test set per run
report_file=${test_sets[0]}.md
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/report_iterative/${NODENESS}-${FLAVOR}/${report_file} |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
*"report-coverage"* )
test_sets=(${TEST_TAG_STRING//:/ })
# Run only one test set per run
report_file=${test_sets[0]}.md
- readarray -t test_tag_array <<< $(sed 's/ //g' \
+ readarray -t test_tag_array <<< $(grep -v "#" \
${tfd}/report_coverage/${NODENESS}-${FLAVOR}/${report_file} |
- eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ awk {"$awk_nics_sub_cmd"} || echo "perftest") || die
+ SELECTION_MODE="--test"
;;
* )
if [[ -z "${TEST_TAG_STRING-}" ]]; then
# If trigger contains tags, split them into array.
test_tag_array=(${TEST_TAG_STRING//:/ })
fi
+ SELECTION_MODE="--include"
;;
esac
# TODO: Add missing reasons here (if general) or where used (if specific).
case "${TEST_CODE}" in
*"2n-skx"*)
- test_tag_array+=("!ipsec")
+ test_tag_array+=("!ipsechw")
;;
*"3n-skx"*)
test_tag_array+=("!ipsechw")
test_tag_array+=("!3_node_double_link_topoANDnic_intel-xxv710")
;;
*"2n-clx"*)
- test_tag_array+=("!ipsec")
+ test_tag_array+=("!ipsechw")
;;
*"2n-zn2"*)
- test_tag_array+=("!ipsec")
+ test_tag_array+=("!ipsechw")
;;
*"2n-dnv"*)
test_tag_array+=("!ipsechw")
test_tag_array+=("!vts")
test_tag_array+=("!drv_avf")
;;
+ *"2n-tx2"*)
+ test_tag_array+=("!ipsechw")
+ ;;
*"3n-dnv"*)
test_tag_array+=("!memif")
test_tag_array+=("!srv6_proxy")
# which we do not want to even run.
test_tag_array+=("!ipsechwNOTnic_intel-xl710")
;;
+ *"2n-aws"* | *"3n-aws"*)
+ test_tag_array+=("!ipsechw")
+ ;;
*)
# Default to 3n-hsw due to compatibility.
test_tag_array+=("!drv_avf")
test_tag_array+=("${exclude_nics[@]/#/!NIC_}")
TAGS=()
+ prefix=""
- # We will prefix with perftest to prevent running other tests
- # (e.g. Functional).
- prefix="perftestAND"
set +x
if [[ "${TEST_CODE}" == "vpp-"* ]]; then
# Automatic prefixing for VPP jobs to limit the NIC used and
TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3n_tsh*.yaml )
TOPOLOGIES_TAGS="3_node_single_link_topo"
;;
+ "2n_tx2")
+ TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_tx2*.yaml )
+ TOPOLOGIES_TAGS="2_node_single_link_topo"
+ ;;
+ "2n_aws")
+ TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*2n_aws*.yaml )
+ TOPOLOGIES_TAGS="2_node_single_link_topo"
+ ;;
+ "3n_aws")
+ TOPOLOGIES=( "${TOPOLOGIES_DIR}"/*3n_aws*.yaml )
+ TOPOLOGIES_TAGS="3_node_single_link_topo"
+ ;;
*)
# No falling back to 3n_hsw default, that should have been done
# by the function which has set NODENESS and FLAVOR.
# If trigger contains tags, split them into array.
test_tag_array=(${TEST_TAG_STRING//:/ })
fi
+ SELECTION_MODE="--include"
;;
esac