diff options
author | xizhanx <xix.zhang@intel.com> | 2021-04-15 13:22:40 +0800 |
---|---|---|
committer | xizhanx <xix.zhang@intel.com> | 2021-05-20 09:53:59 +0800 |
commit | 9377c956a86e42727039d9dab8879c10c9399f4c (patch) | |
tree | 331c3e3792a25ed77058ada364d3d59308ccdfb1 /resources/libraries/bash | |
parent | d4f082106d3e8cfda1c0d52bcafb177b46562944 (diff) |
perf: add TCP Nginx+LDPRELOAD suites
1. Suite steup add download nginx
2. Add nginx-1.14.2/1.15.0 ldp test suite
3. Add NginxUtils,NginxConfigGenerator method
4. Taskset the PID of nginx to the unused cores in VPP and these cores are under NIC's NUMA ID
5. cleanup add Kill Processes - nohup
Signed-off-by: xizhanx <xix.zhang@intel.com>
Change-Id: Idbf0e4ec3bf63e88281a8e3e34f52e00a6801c85
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'resources/libraries/bash')
-rw-r--r-- | resources/libraries/bash/entry/check/tc_naming.sh | 6 | ||||
-rwxr-xr-x | resources/libraries/bash/entry/install_nginx.sh | 38 | ||||
-rwxr-xr-x | resources/libraries/bash/function/nginx.sh | 136 |
3 files changed, 177 insertions, 3 deletions
diff --git a/resources/libraries/bash/entry/check/tc_naming.sh b/resources/libraries/bash/entry/check/tc_naming.sh index e9f86fc0dd..bc2ac32671 100644 --- a/resources/libraries/bash/entry/check/tc_naming.sh +++ b/resources/libraries/bash/entry/check/tc_naming.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2020 Cisco and/or its affiliates. +# Copyright (c) 2021 Cisco 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: @@ -48,14 +48,14 @@ r_parse='(.*)\/(.*).robot.*(([0-9]{2,4}B|IMIX)-.*)' # One caveat of this solution is that we cannot proceed to check full names now # as majority of Testcases does not meet naming criteria. s_testc_rules=( - 'packet size' + 'packet size or file size' 'core combination' 'NIC driver mode' 'packet encapsulation on L2 layer' 'test type' ) r_testc_rules=( - '^([[:digit:]]{2,4}B|IMIX)-' + '^([[:digit:]]{1,4}B|IMIX)-' '([[:digit:]]+c-){0,1}' '(avf-|1lbvpplacp-|2lbvpplacp-){0,1}' '(eth|dot1q|dot1ad)' diff --git a/resources/libraries/bash/entry/install_nginx.sh b/resources/libraries/bash/entry/install_nginx.sh new file mode 100755 index 0000000000..3a2c8ef7eb --- /dev/null +++ b/resources/libraries/bash/entry/install_nginx.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021 Intel 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: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Install the NGINX framework on the DUT node. Check prerequisites. + +set -exuo pipefail + +# Assumptions: +# + There is a directory holding CSIT code to use (this script is there). +# + At least one of the following is true: +# ++ JOB_NAME environment variable is set, +# ++ or this entry script has access to arguments. +# Consequences (and specific assumptions) are multiple, +# examine tree of functions for current description. + +BASH_ENTRY_DIR="$(dirname $(readlink -e "${BASH_SOURCE[0]}"))" +BASH_FUNCTION_DIR="$(readlink -e "${BASH_ENTRY_DIR}/../function")" +source "${BASH_FUNCTION_DIR}/common.sh" || { + echo "Source failed." >&2 + exit 1 +} +source "${BASH_FUNCTION_DIR}/nginx.sh" || die "Source failed." +common_dirs ${@} || die +gather_nginx || die "Download nginx failed." +nginx_extract || die "Extract nginx failed." +nginx_compile || die "Compile nginx failed." diff --git a/resources/libraries/bash/function/nginx.sh b/resources/libraries/bash/function/nginx.sh new file mode 100755 index 0000000000..122af23852 --- /dev/null +++ b/resources/libraries/bash/function/nginx.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021 Intel 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: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -exuo pipefail + + +function gather_nginx () { + + # Ensure stable NGINX archive is downloaded. + # + # Variables read: + # - DOWNLOAD_DIR - Path to directory pybot takes the build to test from. + # - NGINX_VER - Version number of Nginx. + set -exuo pipefail + pushd "${DOWNLOAD_DIR}" || die "Pushd failed." + nginx_repo="http://nginx.org/download/" + # Use downloaded packages with specific version + echo "Downloading NGINX package of specific version from repo ..." + # Downloading NGINX version based on what VPP is using. Currently + # it is not easy way to detect from VPP version automatically. + nginx_stable_ver="${NGINX_VER}".tar.gz + + if [[ ! -f "${nginx_stable_ver}" ]]; then + wget -nv --no-check-certificate \ + "${nginx_repo}/${nginx_stable_ver}" || { + die "Failed to get NGINX package from: ${nginx_repo}." + } + fi + popd || die "Popd failed." +} + + +function common_dirs () { + + # Set global variables, create some directories (without touching content). + # This function assumes running in remote testbed. It might override other + # functions if included from common.sh. + + # Arguments: + # - ${1} - Version number of Nginx. + # Variables set: + # - BASH_FUNCTION_DIR - Path to existing directory this file is located in. + # - CSIT_DIR - Path to CSIT framework. + # - DOWNLOAD_DIR - Path to directory pybot takes the build to test from. + # - NGINX_DIR - Path to NGINX framework. + # - NGINX_VER - Version number of Nginx. + # Functions called: + # - die - Print to stderr and exit. + + set -exuo pipefail + NGINX_VER="${1}" + this_file=$(readlink -e "${BASH_SOURCE[0]}") || { + die "Some error during locating of this source file." + } + BASH_FUNCTION_DIR=$(dirname "${this_file}") || { + die "Some error during dirname call." + } + CSIT_DIR=$(readlink -e "/tmp/openvpp-testing") || { + die "Readlink failed." + } + DOWNLOAD_DIR=$(readlink -f "${CSIT_DIR}/download_dir") || { + die "Readlink failed." + } + mkdir -p "${CSIT_DIR}/${NGINX_VER}" || die "Mkdir failed." + NGINX_DIR=$(readlink -e "${CSIT_DIR}/${NGINX_VER}") || { + die "Readlink failed." + } +} + + + +function nginx_compile () { + + # Compile NGINX archive. + # + # Variables read: + # - NGINX_DIR - Path to NGINX framework. + # - CSIT_DIR - Path to CSIT framework. + # - NGINX_INS_PATH - Path to NGINX install path. + # Functions called: + # - die - Print to stderr and exit. + + set -exuo pipefail + NGINX_INS_PATH="${DOWNLOAD_DIR}/${NGINX_VER}" + pushd "${NGINX_DIR}" || die "Pushd failed." + + # Set installation prefix. + param="--prefix=${NGINX_INS_PATH} " + # Set nginx binary pathname. + param+="--sbin-path=${NGINX_INS_PATH}/sbin/nginx " + # Set nginx.conf pathname. + param+="--conf-path=${NGINX_INS_PATH}/conf/nginx.conf " + # Enable ngx_http_stub_status_module. + param+="--with-http_stub_status_module " + # Force PCRE library usage. + param+="--with-pcre " + # Enable ngx_http_realip_module. + param+="--with-http_realip_module " + params=(${param}) + ./configure "${params[@]}" || die "Failed to configure NGINX!" + make -j 16;make install || die "Failed to compile NGINX!" +} + + +function nginx_extract () { + + # Extract NGINX framework. + # + # Variables read: + # - NGINX_DIR - Path to NGINX framework. + # - CSIT_DIR - Path to CSIT framework. + # - DOWNLOAD_DIR - Path to directory pybot takes the build to test from. + # - NGINX_VER - Version number of Nginx. + # Functions called: + # - die - Print to stderr and exit. + + set -exuo pipefail + + pushd "${CSIT_DIR}" || die "Pushd failed." + tar -xvf ${DOWNLOAD_DIR}/${NGINX_VER}.tar.gz --strip=1 \ + --directory "${NGINX_DIR}" || { + die "Failed to extract NGINX!" + } +} |