Per patch: multiple BMRR calls
[csit.git] / resources / libraries / bash / function / common.sh
index 6b30078..69c7093 100644 (file)
@@ -47,7 +47,7 @@ function activate_virtualenv () {
     pip install --upgrade virtualenv || {
         die "Virtualenv package install failed."
     }
-    virtualenv --system-site-packages "${ENV_DIR}" || {
+    virtualenv "${ENV_DIR}" || {
         die "Virtualenv creation failed."
     }
     set +u
@@ -82,6 +82,20 @@ function check_download_dir () {
 }
 
 
+function cleanup_topo () {
+
+    set -exuo pipefail
+
+    # Variables read:
+    # - WORKING_TOPOLOGY - Path to topology yaml file of the reserved testbed.
+    # - PYTHON_SCRIPTS_DIR - Path to directory holding the reservation script.
+
+    python "${PYTHON_SCRIPTS_DIR}/topo_cleanup.py" -t "${WORKING_TOPOLOGY}"
+    # Not using "|| die" as some callers might want to ignore errors,
+    # e.g. in teardowns, such as unreserve.
+}
+
+
 function common_dirs () {
 
     set -exuo pipefail
@@ -178,7 +192,7 @@ function copy_archives () {
     # automatically archived to logs.fd.io.
     if [[ -n "${WORKSPACE-}" ]]; then
         mkdir -p "${WORKSPACE}/archives/" || die "Archives dir create failed."
-        cp -r "${ARCHIVE_DIR}"/* "${WORKSPACE}/archives" || die "Copy failed."
+        cp -rf "${ARCHIVE_DIR}"/* "${WORKSPACE}/archives" || die "Copy failed."
     fi
 }
 
@@ -310,7 +324,7 @@ function reserve_testbed () {
                     }
                     die "Trap attempt failed, unreserve succeeded. Aborting."
                 }
-                python "${PYTHON_SCRIPTS_DIR}/topo_cleanup.py" -t "${topo}" || {
+                cleanup_topo || {
                     die "Testbed cleanup failed."
                 }
                 break
@@ -391,8 +405,6 @@ function select_tags () {
     # Variables set:
     # - TAGS - Array of processed tag boolean expressions.
 
-    # TODO: Empty exclude_nics (with failing grep) is expected,
-    #       but others possible errors coule be checked explicitly.
     # NIC SELECTION
     # All topologies NICs
     available=$(grep -hoPR "model: \K.*" "${TOPOLOGIES_DIR}"/* | sort -u)
@@ -408,31 +420,103 @@ function select_tags () {
                             "ndrpdrAND78bAND1c")
             ;;
         *"mrr-daily"* | *"mrr-weekly"* )
-            test_tag_array=("mrrAND64bAND1c"
-                            "mrrAND64bAND2c"
-                            "mrrAND64bAND4c"
-                            "mrrAND78bAND1c"
-                            "mrrAND78bAND2c"
-                            "mrrAND78bAND4c"
-                            "mrrAND114bAND1c"
-                            "mrrAND114bAND2c"
-                            "mrrAND114bAND4c"
-                            "mrrANDimixAND1cANDvhost"
-                            "mrrANDimixAND2cANDvhost"
-                            "mrrANDimixAND4cANDvhost"
-                            "mrrANDimixAND1cANDmemif"
-                            "mrrANDimixAND2cANDmemif"
-                            "mrrANDimixAND4cANDmemif")
+            test_tag_array=(# vic
+                            "mrrANDnic_cisco-vic-1227AND64b"
+                            "mrrANDnic_cisco-vic-1385AND64b"
+                            # memif
+                            "mrrANDmemifANDethAND64b"
+                            "mrrANDmemifANDethANDimix"
+                            # crypto
+                            "mrrANDipsecAND64b"
+                            # ip4 base
+                            "mrrANDip4baseAND64b"
+                            # ip4 scale FIB 2M
+                            "mrrANDip4fwdANDfib_2mAND64b"
+                            # ip4 scale FIB 200k
+                            "mrrANDip4fwdANDfib_200kANDnic_intel-*710AND64b"
+                            # ip4 scale FIB 20k
+                            "mrrANDip4fwdANDfib_20kANDnic_intel-*710AND64b"
+                            # ip4 scale ACL
+                            "mrrANDip4fwdANDacl1AND10k_flowsAND64b"
+                            "mrrANDip4fwdANDacl50AND10k_flowsAND64b"
+                            # ip4 scale NAT44
+                            "mrrANDip4fwdANDnat44ANDbaseAND64b"
+                            "mrrANDip4fwdANDnat44ANDsrc_user_4000AND64b"
+                            # ip4 features
+                            "mrrANDip4fwdANDfeatureANDnic_intel-*710AND64b"
+                            # TODO: Remove when tags in
+                            # tests/vpp/perf/ip4/*-ipolicemarkbase-*.robot
+                            # are fixed
+                            "mrrANDip4fwdANDpolice_markANDnic_intel-*710AND64b"
+                            # ip4 tunnels
+                            "mrrANDip4fwdANDencapANDip6unrlayANDip4ovrlayANDnic_intel-x520-da2AND64b"
+                            "mrrANDip4fwdANDencapANDnic_intel-*710AND64b"
+                            "mrrANDl2ovrlayANDencapANDnic_intel-*710AND64b"
+                            # ip6 base
+                            "mrrANDip6baseANDethAND78b"
+                            # ip6 features
+                            "mrrANDip6fwdANDfeatureANDnic_intel-*710AND78b"
+                            # ip6 scale FIB 2M
+                            "mrrANDip6fwdANDfib_2mANDnic_intel-*710AND78b"
+                            # ip6 scale FIB 200k
+                            "mrrANDip6fwdANDfib_200kANDnic_intel-*710AND78b"
+                            # ip6 scale FIB 20k
+                            "mrrANDip6fwdANDfib_20kANDnic_intel-*710AND78b"
+                            # ip6 tunnels
+                            "mrrANDip6fwdANDencapANDnic_intel-x520-da2AND78b"
+                            # l2xc base
+                            "mrrANDl2xcfwdANDbaseAND64b"
+                            # l2xc scale ACL
+                            "mrrANDl2xcANDacl1AND10k_flowsAND64b"
+                            "mrrANDl2xcANDacl50AND10k_flowsAND64b"
+                            # l2xc scale FIB 2M
+                            "mrrANDl2xcANDfib_2mAND64b"
+                            # l2xc scale FIB 200k
+                            "mrrANDl2xcANDfib_200kANDnic_intel-*710AND64b"
+                            # l2xc scale FIB 20k
+                            "mrrANDl2xcANDfib_20kANDnic_intel-*710AND64b"
+                            # l2bd base
+                            "mrrANDl2bdmaclrnANDbaseAND64b"
+                            # l2bd scale ACL
+                            "mrrANDl2bdmaclrnANDacl1AND10k_flowsAND64b"
+                            "mrrANDl2bdmaclrnANDacl50AND10k_flowsAND64b"
+                            # l2bd scale FIB 2M
+                            "mrrANDl2bdmaclrnANDfib_1mAND64b"
+                            # l2bd scale FIB 200k
+                            "mrrANDl2bdmaclrnANDfib_100kANDnic_intel-*710AND64b"
+                            # l2bd scale FIB 20k
+                            "mrrANDl2bdmaclrnANDfib_10kANDnic_intel-*710AND64b"
+                            # l2 patch base
+                            "mrrANDl2patchAND64b"
+                            # srv6
+                            "mrrANDsrv6ANDnic_intel-x520-da2AND78b"
+                            # vts
+                            "mrrANDvtsANDnic_intel-x520-da2AND114b"
+                            # vm vhost l2xc base
+                            "mrrANDvhostANDl2xcfwdANDbaseAND64b"
+                            "mrrANDvhostANDl2xcfwdANDbaseANDimix"
+                            # vm vhost l2bd base
+                            "mrrANDvhostANDl2bdmaclrnANDbaseAND64b"
+                            "mrrANDvhostANDl2bdmaclrnANDbaseANDimix"
+                            # vm vhost ip4 base
+                            "mrrANDvhostANDip4fwdANDbaseAND64b"
+                            "mrrANDvhostANDip4fwdANDbaseANDimix"
+                            # Exclude
+                            "!mrrANDip6baseANDdot1qAND78b"
+                            "!vhost_256ANDnic_intel-x520-da2"
+                            "!vhostANDnic_intel-xl710"
+                            "!cfs_opt"
+                            "!lbond_dpdk")
             ;;
         * )
             if [[ -z "${TEST_TAG_STRING-}" ]]; then
                 # If nothing is specified, we will run pre-selected tests by
-                # following tags. Items of array will be concatenated by OR
-                # in Robot Framework.
+                # following tags.
                 test_tag_array=("mrrANDnic_intel-x710AND1cAND64bANDip4base"
                                 "mrrANDnic_intel-x710AND1cAND78bANDip6base"
-                                "mrrANDnic_intel-x710AND1cAND64bANDl2bdbaseANDbase"
-                                "mrrANDnic_intel-x710AND1cAND64bANDl2xcbase")
+                                "mrrANDnic_intel-x710AND1cAND64bANDl2bdbase"
+                                "mrrANDnic_intel-x710AND1cAND64bANDl2xcbase"
+                                "!dot1q")
             else
                 # If trigger contains tags, split them into array.
                 test_tag_array=(${TEST_TAG_STRING//:/ })
@@ -440,6 +524,23 @@ function select_tags () {
             ;;
     esac
 
+    # Blacklisting certain tags per topology.
+    case "${TEST_CODE}" in
+        *"3n-hsw"*)
+            test_tag_array+=("!drv_avf")
+            ;;
+        *"2n-skx"*)
+            test_tag_array+=("!ipsechw")
+            ;;
+        *"3n-skx"*)
+            test_tag_array+=("!ipsechw")
+            ;;
+        *)
+            # Default to 3n-hsw due to compatibility.
+            test_tag_array+=("!drv_avf")
+            ;;
+    esac
+
     # We will add excluded NICs.
     test_tag_array+=("${exclude_nics[@]/#/!NIC_}")
 
@@ -487,7 +588,7 @@ function select_topology () {
                         "${TOPOLOGIES_DIR}/lf_3n_hsw_testbed2.yaml"
                         "${TOPOLOGIES_DIR}/lf_3n_hsw_testbed3.yaml"
                        )
-            TOPOLOGIES_TAGS="3_node_*_link_topo"
+            TOPOLOGIES_TAGS="3_node_single_link_topo"
             ;;
         "2n_skx")
             TOPOLOGIES=(
@@ -543,9 +644,9 @@ function untrap_and_unreserve_testbed () {
     wt="${WORKING_TOPOLOGY}"  # Just to avoid too long lines.
     if [[ -z "${wt-}" ]]; then
         set -eu
-        echo "Testbed looks unreserved already. Trap removal failed before?"
+        warn "Testbed looks unreserved already. Trap removal failed before?"
     else
-        python "${PYTHON_SCRIPTS_DIR}/topo_cleanup.py" -t "${wt}" || true
+        cleanup_topo || true
         python "${PYTHON_SCRIPTS_DIR}/topo_reservation.py" -c -t "${wt}" || {
             die "${1:-FAILED TO UNRESERVE, FIX MANUALLY.}" 2
         }