diff options
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!" + } +} |