aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/bash
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/bash')
-rw-r--r--resources/libraries/bash/entry/check/tc_naming.sh6
-rwxr-xr-xresources/libraries/bash/entry/install_nginx.sh38
-rwxr-xr-xresources/libraries/bash/function/nginx.sh136
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!"
+ }
+}