X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fcommon.sh;h=54a013eeb3cdfca68c7f9e2e450568c15a51bece;hp=c0aa5f9f7d6b5828ada0873884ea3154f75d5a6f;hb=756a578af2217a94765e76b40e2ffb160c242ef3;hpb=523c6e6e24101206ff1318ca17c310dff8b3c9d2 diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh index c0aa5f9f7d..54a013eeb3 100644 --- a/resources/libraries/bash/function/common.sh +++ b/resources/libraries/bash/function/common.sh @@ -1,5 +1,5 @@ -# 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: @@ -264,6 +264,7 @@ function compose_pybot_arguments () { # - 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. @@ -290,9 +291,17 @@ function compose_pybot_arguments () { 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 } @@ -432,6 +441,14 @@ function get_test_code () { NODENESS="1n" FLAVOR="tx2" ;; + *"2n-aws"*) + NODENESS="2n" + FLAVOR="aws" + ;; + *"3n-aws"*) + NODENESS="3n" + FLAVOR="aws" + ;; *"2n-skx"*) NODENESS="2n" FLAVOR="skx" @@ -456,6 +473,10 @@ function get_test_code () { NODENESS="3n" FLAVOR="dnv" ;; + *"2n-tx2"*) + NODENESS="2n" + FLAVOR="tx2" + ;; *"3n-tsh"*) NODENESS="3n" FLAVOR="tsh" @@ -628,7 +649,7 @@ function reserve_and_cleanup_testbed () { } die "Trap attempt failed, unreserve succeeded. Aborting." } - # Cleanup + calibration checks. + # Cleanup + calibration checks set +e ansible_playbook "cleanup, calibration" result="$?" @@ -710,23 +731,23 @@ function select_arch_os () { 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 @@ -756,6 +777,7 @@ function select_tags () { # - 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 @@ -786,57 +808,72 @@ function select_tags () { *"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 @@ -851,6 +888,7 @@ function select_tags () { # If trigger contains tags, split them into array. test_tag_array=(${TEST_TAG_STRING//:/ }) fi + SELECTION_MODE="--include" ;; esac @@ -861,7 +899,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+=("!ipsec") + test_tag_array+=("!ipsechw") ;; *"3n-skx"*) test_tag_array+=("!ipsechw") @@ -869,10 +907,10 @@ function select_tags () { 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") @@ -882,6 +920,9 @@ function select_tags () { 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") @@ -901,6 +942,9 @@ function select_tags () { # 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") @@ -912,10 +956,8 @@ function select_tags () { 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 @@ -1012,6 +1054,18 @@ function select_topology () { 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. @@ -1047,6 +1101,7 @@ function select_vpp_device_tags () { # If trigger contains tags, split them into array. test_tag_array=(${TEST_TAG_STRING//:/ }) fi + SELECTION_MODE="--include" ;; esac