X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fcommon.sh;h=2445a5deae9f8e097fd97925f0ee4ffeedd2e976;hp=5982af9427635684f749f03a40c5bd29434a6d45;hb=6e96fee163eb9622bf39ed48743db86f7bcf743a;hpb=de778ee617ed29443bdd8dfa393a2ec4b811b1b9 diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh index 5982af9427..2445a5deae 100644 --- a/resources/libraries/bash/function/common.sh +++ b/resources/libraries/bash/function/common.sh @@ -1,4 +1,5 @@ -# 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: @@ -90,38 +91,41 @@ function activate_virtualenv () { 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." } @@ -379,6 +383,10 @@ function get_test_code () { NODENESS="3n" FLAVOR="skx" ;; + *"3n-tsh"*) + NODENESS="3n" + FLAVOR="tsh" + ;; *) # Fallback to 3-node Haswell by default (backward compatibility) NODENESS="3n" @@ -415,11 +423,17 @@ function get_test_tag_string () { ;; *"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}" @@ -542,13 +556,29 @@ function select_tags () { # - TAGS - Array of processed tag boolean expressions. # NIC SELECTION - # All topologies NICs - available=$(grep -hoPR "model: \K.*" "${TOPOLOGIES_DIR}"/* | sort -u) - # Selected topology NICs - reserved=$(grep -hoPR "model: \K.*" "${WORKING_TOPOLOGY}" | sort -u) - # All topologies NICs - Selected topology NICs + start_pattern='^ TG:' + end_pattern='^ \? \?[A-Za-z0-9]\+:' + # Remove the TG section from topology file + sed_command="/${start_pattern}/,/${end_pattern}/d" + # All topologies DUT NICs + available=$(sed "${sed_command}" "${TOPOLOGIES_DIR}"/* \ + | grep -hoP "model: \K.*" | sort -u) + # Selected topology DUT NICs + reserved=$(sed "${sed_command}" "${WORKING_TOPOLOGY}" \ + | grep -hoP "model: \K.*" | sort -u) + # All topologies DUT NICs - Selected topology DUT NICs exclude_nics=($(comm -13 <(echo "${reserved}") <(echo "${available}"))) + # Select default NIC + case "${TEST_CODE}" in + *"3n-tsh"*) + DEFAULT_NIC='nic_intel-x520-da2' + ;; + *) + DEFAULT_NIC='nic_intel-x710' + ;; + esac + case "${TEST_CODE}" in # Select specific performance tests based on jenkins job type variable. *"ndrpdr-weekly"* ) @@ -658,10 +688,10 @@ function select_tags () { 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. @@ -681,6 +711,13 @@ function select_tags () { *"3n-skx"*) test_tag_array+=("!ipsechw") ;; + *"3n-tsh"*) + test_tag_array+=("!ipsechw") + test_tag_array+=("!memif") + test_tag_array+=("!srv6_proxy") + test_tag_array+=("!vhost") + test_tag_array+=("!vts") + ;; *) # Default to 3n-hsw due to compatibility. test_tag_array+=("!drv_avf") @@ -698,7 +735,7 @@ function select_tags () { 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 @@ -810,6 +847,12 @@ function select_topology () { ) 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.