X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fcommon.sh;h=aa842017227d9d47751caefdaaab98d2b00637e6;hb=b6b7023d44c164fba9c5dbe5fa1ce4a44bf7530c;hp=8f2e88843e6233ceb43775f6ab856f3c816a63e4;hpb=42e546faaf042ef78bb8cbb9339c7fb06f6299dd;p=csit.git diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh index 8f2e88843e..aa84201722 100644 --- a/resources/libraries/bash/function/common.sh +++ b/resources/libraries/bash/function/common.sh @@ -116,16 +116,16 @@ function activate_virtualenv () { 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. @@ -461,6 +461,10 @@ function get_test_code () { NODENESS="2n" FLAVOR="skx" ;; + *"2n-zn2"*) + NODENESS="2n" + FLAVOR="zn2" + ;; *"3n-skx"*) NODENESS="3n" FLAVOR="skx" @@ -524,6 +528,19 @@ function get_test_tag_string () { 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 } @@ -710,6 +727,7 @@ function select_tags () { # 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. @@ -743,7 +761,7 @@ function select_tags () { *"3n-tsh"*) default_nic="nic_intel-x520-da2" ;; - *"3n-skx"* | *"2n-skx"* | *"2n-clx"*) + *"3n-skx"* | *"2n-skx"* | *"2n-clx"* | *"2n-zn2"*) default_nic="nic_intel-xxv710" ;; *"3n-hsw"* | *"mrr-daily-master") @@ -769,18 +787,34 @@ function select_tags () { # 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 @@ -805,7 +839,7 @@ function select_tags () { # TODO: Add missing reasons here (if general) or where used (if specific). case "${TEST_CODE}" in *"2n-skx"*) - test_tag_array+=("!ipsechw") + test_tag_array+=("!ipsec") ;; *"3n-skx"*) test_tag_array+=("!ipsechw") @@ -813,7 +847,10 @@ function select_tags () { test_tag_array+=("!3_node_double_link_topoANDnic_intel-xxv710") ;; *"2n-clx"*) - test_tag_array+=("!ipsechw") + test_tag_array+=("!ipsec") + ;; + *"2n-zn2"*) + test_tag_array+=("!ipsec") ;; *"2n-dnv"*) test_tag_array+=("!ipsechw") @@ -836,10 +873,6 @@ function select_tags () { test_tag_array+=("!ipsechw") ;; *"3n-hsw"*) - # TODO: Introduce NOIOMMU version of AVF tests. - # TODO: Make (both) AVF tests work on Haswell, - # or document why (some of) it is not possible. - # https://github.com/FDio/vpp/blob/master/src/plugins/avf/README.md test_tag_array+=("!drv_avf") # All cards have access to QAT. But only one card (xl710) # resides in same NUMA as QAT. Other cards must go over QPI @@ -881,6 +914,13 @@ function select_tags () { 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.