source "${BASH_FUNCTION_DIR}/device.sh" || {
die "Source failed!"
}
-
device_image="$(< ${CSIT_DIR}/${IMAGE_VER_FILE})"
case_text="${NODENESS}_${FLAVOR}"
case "${case_text}" in
# We execute reservation over csit-shim-dcr (ssh) which runs sourced
# script's functions. Env variables are read from ssh output
# back to localhost for further processing.
- hostname=$(grep search /etc/resolv.conf | cut -d' ' -f3) || die
- ssh="ssh root@${hostname} -p 6022"
+ # Shim and Jenkins executor are in the same network on the same host
+ # Connect to docker's default gateway IP and shim's exposed port
+ ssh="ssh root@172.17.0.1 -p 6022"
run="activate_wrapper ${NODENESS} ${FLAVOR} ${device_image}"
# The "declare -f" output is long and boring.
set +x
env_dir="${root_path}/env"
req_path=${2-$CSIT_DIR/requirements.txt}
rm -rf "${env_dir}" || die "Failed to clean previous virtualenv."
- pip3 install --upgrade virtualenv || {
+ pip3 install virtualenv==20.0.20 || {
die "Virtualenv package install failed."
}
- virtualenv --python=$(which python3) "${env_dir}" || {
+ virtualenv --no-download --python=$(which python3) "${env_dir}" || {
die "Virtualenv creation for $(which python3) failed."
}
set +u
source "${env_dir}/bin/activate" || die "Virtualenv activation failed."
set -u
- pip3 install --upgrade -r "${req_path}" || {
+ pip3 install -r "${req_path}" || {
die "Requirements installation failed."
}
# Most CSIT Python scripts assume PYTHONPATH is set and exported.
case_text="${NODENESS}_${FLAVOR}"
case "${case_text}" in
"1n_skx" | "1n_tx2")
- hostname=$(grep search /etc/resolv.conf | cut -d' ' -f3) || die
- ssh="ssh root@${hostname} -p 6022"
+ ssh="ssh root@172.17.0.1 -p 6022"
env_vars=$(env | grep CSIT_ | tr '\n' ' ' ) || die
# The "declare -f" output is long and boring.
set +x
cmd=("grep" "-oP" '\S*'"${trigger}"'\S*\s\K.+$') || die "Unset trigger?"
# On parsing error, TEST_TAG_STRING probably stays empty.
TEST_TAG_STRING=$("${cmd[@]}" <<< "${comment}") || true
+ if [[ -n "${TEST_TAG_STRING-}" ]]; then
+ test_tag_array=(${TEST_TAG_STRING})
+ if [[ "${test_tag_array[0]}" == "icl" ]]; then
+ export GRAPH_NODE_VARIANT="icl"
+ TEST_TAG_STRING="${test_tag_array[@]:1}" || true
+ elif [[ "${test_tag_array[0]}" == "skx" ]]; then
+ export GRAPH_NODE_VARIANT="skx"
+ TEST_TAG_STRING="${test_tag_array[@]:1}" || true
+ elif [[ "${test_tag_array[0]}" == "hsw" ]]; then
+ export GRAPH_NODE_VARIANT="hsw"
+ TEST_TAG_STRING="${test_tag_array[@]:1}" || true
+ fi
+ fi
fi
}
# Variables read:
# - WORKING_TOPOLOGY - Path to topology yaml file of the reserved testbed.
# - TEST_CODE - String affecting test selection, usually jenkins job name.
+ # - DUT - CSIT test/ subdirectory, set while processing tags.
# - TEST_TAG_STRING - String selecting tags, from gerrit comment.
# Can be unset.
# - TOPOLOGIES_DIR - Path to existing directory with available tpologies.
# Select specific performance tests based on jenkins job type variable.
*"ndrpdr-weekly"* )
readarray -t test_tag_array <<< $(sed 's/ //g' \
- ${tfd}/mlr-weekly-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd}) || die
+ ${tfd}/mlr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
+ eval ${sed_nics_sub_cmd} || echo "perftest") || die
;;
*"mrr-daily"* )
readarray -t test_tag_array <<< $(sed 's/ //g' \
- ${tfd}/mrr-daily-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd}) || die
+ ${tfd}/mrr_daily/${DUT}-${NODENESS}-${FLAVOR}.md |
+ eval ${sed_nics_sub_cmd} || echo "perftest") || die
;;
*"mrr-weekly"* )
readarray -t test_tag_array <<< $(sed 's/ //g' \
- ${tfd}/mrr-weekly-${NODENESS}-${FLAVOR}.md |
- eval ${sed_nics_sub_cmd}) || die
+ ${tfd}/mrr_weekly/${DUT}-${NODENESS}-${FLAVOR}.md |
+ eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ ;;
+ *"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' \
+ ${tfd}/report_iterative/${NODENESS}-${FLAVOR}/${report_file} |
+ eval ${sed_nics_sub_cmd} || echo "perftest") || die
+ ;;
+ *"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' \
+ ${tfd}/report_coverage/${NODENESS}-${FLAVOR}/${report_file} |
+ eval ${sed_nics_sub_cmd} || echo "perftest") || die
;;
* )
if [[ -z "${TEST_TAG_STRING-}" ]]; then
warn "The following tag expression hints at bad trigger: ${tag}"
warn "Possible cause: Multiple triggers in a single comment."
die "Aborting to avoid triggering too many tests."
+ elif [[ "${tag}" == *"OR"* ]]; then
+ # If OR had higher precedence than AND, it would be useful here.
+ # Some people think it does, thus triggering way too much tests.
+ set -x
+ warn "The following tag expression hints at bad trigger: ${tag}"
+ warn "Operator OR has lower precedence than AND. Use space instead."
+ die "Aborting to avoid triggering too many tests."
elif [[ "${tag}" != "" && "${tag}" != "#"* ]]; then
# Empty and comment lines are skipped.
# Other lines are normal tags, they are to be prefixed.