-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
set -exuo pipefail
+ # Update virtualenv pip package, delete and create virtualenv directory,
+ # activate the virtualenv, install requirements, set PYTHONPATH.
+
# Arguments:
- # - ${1} - Non-empty path to existing directory for creating virtualenv in.
+ # - ${1} - Path to existing directory for creating virtualenv in.
+ # If missing or empty, ${CSIT_DIR} is used.
+ # - ${2} - Path to requirements file, ${CSIT_DIR}/requirements.txt if empty.
# Variables read:
# - CSIT_DIR - Path to existing root of local CSIT git repository.
- # Variables set:
- # - ENV_DIR - Path to the created virtualenv subdirectory.
# Variables exported:
# - PYTHONPATH - CSIT_DIR, as CSIT Python scripts usually need this.
# Functions called:
# - die - Print to stderr and exit.
- # TODO: Do we really need to have ENV_DIR available as a global variable?
-
- if [[ "${1-}" == "" ]]; then
- die "Root location of virtualenv to create is not specified."
- fi
- ENV_DIR="${1}/env"
- rm -rf "${ENV_DIR}" || die "Failed to clean previous virtualenv."
+ # TODO: Do we want the callers to be able to set the env dir name?
+ # TODO: + In that case, do we want to support env switching?
+ # TODO: + In that case we want to make env_dir global.
+ # TODO: Do we want the callers to override PYTHONPATH loaction?
+ root_path="${1-$CSIT_DIR}"
+ env_dir="${root_path}/env"
+ req_path=${2-$CSIT_DIR/requirements.txt}
+ rm -rf "${env_dir}" || die "Failed to clean previous virtualenv."
pip install --upgrade virtualenv || {
die "Virtualenv package install failed."
}
- virtualenv "${ENV_DIR}" || {
+ virtualenv "${env_dir}" || {
die "Virtualenv creation failed."
}
set +u
- source "${ENV_DIR}/bin/activate" || die "Virtualenv activation failed."
+ source "${env_dir}/bin/activate" || die "Virtualenv activation failed."
set -u
- pip install -r "${CSIT_DIR}/requirements.txt" || {
- die "CSIT requirements installation failed."
+ pip install --upgrade -r "${req_path}" || {
+ die "Requirements installation failed."
}
-
# Most CSIT Python scripts assume PYTHONPATH is set and exported.
export PYTHONPATH="${CSIT_DIR}" || die "Export failed."
}
NODENESS="3n"
FLAVOR="skx"
;;
+ *"3n-tsh"*)
+ NODENESS="3n"
+ FLAVOR="tsh"
+ ;;
*)
# Fallback to 3-node Haswell by default (backward compatibility)
NODENESS="3n"
;;
*"perf"*)
# On parsing error, ${trigger} stays empty.
- trigger="$(echo "${GERRIT_EVENT_COMMENT_TEXT}" \
- | grep -oE '(perftest$|perftest[[:space:]].+$)')" \
- || true
+ comment="${GERRIT_EVENT_COMMENT_TEXT}"
+ # As "perftest" can be followed by something, we substitute it.
+ comment="${comment/perftest-2n/perftest}"
+ comment="${comment/perftest-3n/perftest}"
+ comment="${comment/perftest-hsw/perftest}"
+ comment="${comment/perftest-skx/perftest}"
+ comment="${comment/perftest-tsh/perftest}"
+ tag_string="$(echo "${comment}" \
+ | grep -oE '(perftest$|perftest[[:space:]].+$)' || true)"
# Set test tags as string.
- TEST_TAG_STRING="${trigger#$"perftest"}"
+ TEST_TAG_STRING="${tag_string#$"perftest"}"
;;
*)
die "Unknown specification: ${TEST_CODE}"
# All topologies NICs - Selected topology NICs
exclude_nics=($(comm -13 <(echo "${reserved}") <(echo "${available}")))
+ # Select default NIC
+ case "${TEST_CODE}" in
+ *"3n-tsh"*)
+ DEFAULT_NIC='nic_intel-82599es'
+ ;;
+ *)
+ DEFAULT_NIC='nic_intel-x710'
+ ;;
+ esac
+
case "${TEST_CODE}" in
# Select specific performance tests based on jenkins job type variable.
*"ndrpdr-weekly"* )
test_tag_array=("ndrpdrAND64bAND1c"
"ndrpdrAND78bAND1c")
;;
- *"mrr-daily"* | *"mrr-weekly"* )
+ *"mrr-daily"* )
test_tag_array=(# vic
"mrrANDnic_cisco-vic-1227AND64b"
"mrrANDnic_cisco-vic-1385AND64b"
"!vhost_256ANDnic_intel-x520-da2"
"!vhostANDnic_intel-xl710"
"!cfs_opt"
- "!lbond_dpdk")
+ "!lbond_dpdk"
+ "!nf_density")
+ ;;
+ *"mrr-weekly"* )
+ test_tag_array=(# NF Density tests
+ "mrrANDnf_densityAND64b"
+ "mrrANDnf_densityANDimix"
+ # DPDK
+ "mrrANDdpdkAND64b")
;;
* )
if [[ -z "${TEST_TAG_STRING-}" ]]; then
# If nothing is specified, we will run pre-selected tests by
# following tags.
- test_tag_array=("mrrANDnic_intel-x710AND1cAND64bANDip4base"
- "mrrANDnic_intel-x710AND1cAND78bANDip6base"
- "mrrANDnic_intel-x710AND1cAND64bANDl2bdbase"
- "mrrANDnic_intel-x710AND1cAND64bANDl2xcbase"
+ test_tag_array=("mrrAND${DEFAULT_NIC}AND1cAND64bANDip4base"
+ "mrrAND${DEFAULT_NIC}AND1cAND78bANDip6base"
+ "mrrAND${DEFAULT_NIC}AND1cAND64bANDl2bdbase"
+ "mrrAND${DEFAULT_NIC}AND1cAND64bANDl2xcbase"
"!dot1q")
else
# If trigger contains tags, split them into array.
*"3n-skx"*)
test_tag_array+=("!ipsechw")
;;
+ *"3n-tsh"*)
+ test_tag_array+=("!ipsechw")
+ ;;
*)
# Default to 3n-hsw due to compatibility.
test_tag_array+=("!drv_avf")
if [[ "${TEST_CODE}" == "vpp-"* ]]; then
# Automatic prefixing for VPP jobs to limit the NIC used and
# traffic evaluation to MRR.
- prefix="${prefix}mrrANDnic_intel-x710AND"
+ prefix="${prefix}mrrAND${DEFAULT_NIC}AND"
fi
for tag in "${test_tag_array[@]}"; do
if [[ ${tag} == "!"* ]]; then
TOPOLOGIES=(
"${TOPOLOGIES_DIR}/lf_2n_skx_testbed21.yaml"
#"${TOPOLOGIES_DIR}/lf_2n_skx_testbed22.yaml"
- #"${TOPOLOGIES_DIR}/lf_2n_skx_testbed23.yaml"
+ "${TOPOLOGIES_DIR}/lf_2n_skx_testbed23.yaml"
"${TOPOLOGIES_DIR}/lf_2n_skx_testbed24.yaml"
)
TOPOLOGIES_TAGS="2_node_*_link_topo"
)
TOPOLOGIES_TAGS="3_node_single_link_topo"
;;
+ "3n_tsh")
+ TOPOLOGIES=(
+ "${TOPOLOGIES_DIR}/lf_3n_tsh_testbed33.yaml"
+ )
+ TOPOLOGIES_TAGS="3_node_*_link_topo"
+ ;;
*)
# No falling back to 3n_hsw default, that should have been done
# by the function which has set NODENESS and FLAVOR.