aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/bash/function/nginx.sh
diff options
context:
space:
mode:
authorxizhanx <xix.zhang@intel.com>2021-04-15 13:22:40 +0800
committerxizhanx <xix.zhang@intel.com>2021-05-20 09:53:59 +0800
commit9377c956a86e42727039d9dab8879c10c9399f4c (patch)
tree331c3e3792a25ed77058ada364d3d59308ccdfb1 /resources/libraries/bash/function/nginx.sh
parentd4f082106d3e8cfda1c0d52bcafb177b46562944 (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/function/nginx.sh')
-rwxr-xr-xresources/libraries/bash/function/nginx.sh136
1 files changed, 136 insertions, 0 deletions
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!"
+ }
+}