aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpmikus <peter.mikus@protonmail.ch>2024-07-31 15:30:40 +0200
committerpmikus <peter.mikus@protonmail.ch>2024-07-31 15:30:40 +0200
commitcac0e1ee4248bbe22f3a8acdd52539f2d861bb0f (patch)
treec7b55a4f588d9e49b7475cceb89f25a70eced591
parentecf7bf7fde0ec1af9db3b884cae5ecfcd7a8b5bf (diff)
feat(bootstrap): Split gather.sh
Signed-off-by: Peter Mikus <peter.mikus@protonmail.ch> Change-Id: I8bf1fbf49d224b89f2da4a7f08bdf932cad9fd35
-rw-r--r--resources/libraries/bash/function/gather.sh136
-rw-r--r--resources/libraries/bash/function/gather_dpdk.sh66
-rw-r--r--resources/libraries/bash/function/gather_trex.sh30
-rw-r--r--resources/libraries/bash/function/gather_vpp.sh80
4 files changed, 182 insertions, 130 deletions
diff --git a/resources/libraries/bash/function/gather.sh b/resources/libraries/bash/function/gather.sh
index e432777e32..a5820a5a61 100644
--- a/resources/libraries/bash/function/gather.sh
+++ b/resources/libraries/bash/function/gather.sh
@@ -1,5 +1,5 @@
-# Copyright (c) 2023 Cisco and/or its affiliates.
-# Copyright (c) 2023 PANTHEON.tech and/or its affiliates.
+# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
@@ -19,14 +19,12 @@ set -exuo pipefail
# Keep functions ordered alphabetically, please.
-# TODO: Add a link to bash style guide.
-
-
function gather_build () {
# Variables read:
# - TEST_CODE - String affecting test selection, usually jenkins job name.
# - DOWNLOAD_DIR - Path to directory robot takes the build to test from.
+ # - BASH_FUNCTION_DIR = Path to Bash script directory.
# Variables set:
# - DUT - CSIT test/ subdirectory containing suites to execute.
# Directories updated:
@@ -38,27 +36,23 @@ function gather_build () {
# Multiple other side effects are possible,
# see functions called from here for their current description.
- # TODO: Separate DUT-from-TEST_CODE from gather-for-DUT,
- # when the first one becomes relevant for per_patch.
-
set -exuo pipefail
pushd "${DOWNLOAD_DIR}" || die "Pushd failed."
case "${TEST_CODE}" in
- *"hc2vpp"*)
- DUT="hc2vpp"
- # FIXME: Avoid failing on empty ${DOWNLOAD_DIR}.
- ;;
*"vpp"*)
DUT="vpp"
+ source "${BASH_FUNCTION_DIR}/gather_${DUT}.sh" || die "Source fail."
gather_vpp || die "The function should have died on error."
;;
*"dpdk"*)
DUT="dpdk"
+ source "${BASH_FUNCTION_DIR}/gather_${DUT}.sh" || die "Source fail."
gather_dpdk || die "The function should have died on error."
;;
*"trex"*)
DUT="trex"
+ source "${BASH_FUNCTION_DIR}/gather_${DUT}.sh" || die "Source fail."
gather_trex || die "The function should have died on error."
;;
*)
@@ -67,121 +61,3 @@ function gather_build () {
esac
popd || die "Popd failed."
}
-
-
-function gather_dpdk () {
-
- # Ensure latest DPDK archive is downloaded.
- #
- # Variables read:
- # - TEST_CODE - The test selection string from environment or argument.
- # Hardcoded:
- # - dpdk archive name to download if TEST_CODE is not time based.
- # Directories updated:
- # - ./ - Assumed ${DOWNLOAD_DIR}, dpdk-*.tar.xz is downloaded if not there.
- # Functions called:
- # - die - Print to stderr and exit, defined in common.sh
-
- set -exuo pipefail
-
- dpdk_repo="https://fast.dpdk.org/rel"
- # Use downloaded packages with specific version
- if [[ "${TEST_CODE}" == *"daily"* ]] || \
- [[ "${TEST_CODE}" == *"weekly"* ]] || \
- [[ "${TEST_CODE}" == *"timed"* ]];
- then
- echo "Downloading latest DPDK packages from repo..."
- # URL is not in quotes, calling command from variable keeps them.
- wget_command=("wget" "--no-check-certificate" "--compression=auto")
- wget_command+=("-nv" "-O" "-")
- wget_command+=("${dpdk_repo}")
- dpdk_stable_ver="$("${wget_command[@]}" | grep -v "2015"\
- | grep -Eo 'dpdk-[^\"]+xz' | tail -1)" || {
- die "Composite piped command failed."
- }
- else
- echo "Downloading DPDK package of specific version from repo ..."
- # Downloading DPDK version based on what VPP is using. Currently
- # it is not easy way to detect from VPP version automatically.
- dpdk_stable_ver="$(< "${CSIT_DIR}/DPDK_VPP_VER")".tar.xz || {
- die "Failed to read DPDK VPP version!"
- }
- fi
- # TODO: Use "wget -N" instead checking for file presence?
- if [[ ! -f "${dpdk_stable_ver}" ]]; then
- wget -nv --no-check-certificate "${dpdk_repo}/${dpdk_stable_ver}" || {
- die "Failed to get DPDK package from: ${dpdk_repo}"
- }
- fi
-}
-
-function gather_trex () {
-
- # This function is required to bypass download dir check.
- # Currently it creates empty file in download dir.
- # TODO: Add required packages
-
- set -exuo pipefail
-
- touch trex-download-to-be-added.txt
-}
-
-function gather_vpp () {
-
- # Variables read:
- # - BASH_FUNCTION_DIR - Bash directory with functions.
- # - TEST_CODE - The test selection string from environment or argument.
- # - DOWNLOAD_DIR - Path to directory robot takes the build to test from.
- # - CSIT_DIR - Path to existing root of local CSIT git repository.
- # Variables set:
- # - VPP_VERSION - VPP stable version under test.
- # Files read:
- # - ${CSIT_DIR}/DPDK_STABLE_VER - DPDK version to use
- # by csit-vpp not-timed jobs.
- # - ${CSIT_DIR}/${VPP_VER_FILE} - Ubuntu VPP version to use.
- # - ../*vpp*.deb|rpm - Relative to ${DOWNLOAD_DIR},
- # copied for vpp-csit jobs.
- # Directories updated:
- # - ${DOWNLOAD_DIR}, vpp-*.deb files are copied here for vpp-csit jobs.
- # - ./ - Assumed ${DOWNLOAD_DIR}, *vpp*.deb|rpm files
- # are downloaded here for csit-vpp.
- # Functions called:
- # - die - Print to stderr and exit, defined in common_functions.sh
- # Bash scripts executed:
- # - ${CSIT_DIR}/resources/tools/scripts/download_install_vpp_pkgs.sh
- # - Should download and extract requested files to ./.
-
- set -exuo pipefail
-
- case "${TEST_CODE}" in
- "csit-"*)
- # Use downloaded packages with specific version.
- if [[ "${TEST_CODE}" == *"daily"* ]] || \
- { [[ "${TEST_CODE}" == *"weekly"* ]] && \
- [[ "${TEST_CODE}" != *"device"* ]]; } || \
- [[ "${TEST_CODE}" == *"semiweekly"* ]] || \
- [[ "${TEST_CODE}" == *"hourly"* ]];
- then
- warn "Downloading latest VPP packages from Packagecloud."
- else
- warn "Downloading stable VPP packages from Packagecloud."
- VPP_VERSION="$(<"${CSIT_DIR}/${VPP_VER_FILE}")" || {
- die "Read VPP stable version failed."
- }
- fi
- source "${BASH_FUNCTION_DIR}/artifacts.sh" || die "Source failed."
- download_artifacts || die
- ;;
- "vpp-csit-"*)
- # Shorten line.
- pkgs="${PKG_SUFFIX}"
- # Use locally built packages.
- mv "${DOWNLOAD_DIR}"/../*vpp*."${pkgs}" "${DOWNLOAD_DIR}"/ || {
- die "Move command failed."
- }
- ;;
- *)
- die "Unable to identify job type from: ${TEST_CODE}"
- ;;
- esac
-}
diff --git a/resources/libraries/bash/function/gather_dpdk.sh b/resources/libraries/bash/function/gather_dpdk.sh
new file mode 100644
index 0000000000..da3fa930e6
--- /dev/null
+++ b/resources/libraries/bash/function/gather_dpdk.sh
@@ -0,0 +1,66 @@
+# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
+#
+# 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
+
+# This library defines functions used mainly by "bootstrap" entry scripts.
+# Generally, the functions assume "common.sh" library has been sourced already.
+
+# Keep functions ordered alphabetically, please.
+
+function gather_dpdk () {
+
+ # Ensure latest DPDK archive is downloaded.
+ #
+ # Variables read:
+ # - TEST_CODE - The test selection string from environment or argument.
+ # Hardcoded:
+ # - dpdk archive name to download if TEST_CODE is not time based.
+ # Directories updated:
+ # - ./ - Assumed ${DOWNLOAD_DIR}, dpdk-*.tar.xz is downloaded if not there.
+ # Functions called:
+ # - die - Print to stderr and exit, defined in common.sh
+
+ set -exuo pipefail
+
+ dpdk_repo="https://fast.dpdk.org/rel"
+ # Use downloaded packages with specific version
+ if [[ "${TEST_CODE}" == *"daily"* ]] || \
+ [[ "${TEST_CODE}" == *"weekly"* ]] || \
+ [[ "${TEST_CODE}" == *"timed"* ]];
+ then
+ echo "Downloading latest DPDK packages from repo..."
+ # URL is not in quotes, calling command from variable keeps them.
+ wget_command=("wget" "--no-check-certificate" "--compression=auto")
+ wget_command+=("-nv" "-O" "-")
+ wget_command+=("${dpdk_repo}")
+ dpdk_stable_ver="$("${wget_command[@]}" | grep -v "2015"\
+ | grep -Eo 'dpdk-[^\"]+xz' | tail -1)" || {
+ die "Composite piped command failed."
+ }
+ else
+ echo "Downloading DPDK package of specific version from repo ..."
+ # Downloading DPDK version based on what VPP is using. Currently
+ # it is not easy way to detect from VPP version automatically.
+ dpdk_stable_ver="$(< "${CSIT_DIR}/DPDK_VPP_VER")".tar.xz || {
+ die "Failed to read DPDK VPP version!"
+ }
+ fi
+ # TODO: Use "wget -N" instead checking for file presence?
+ if [[ ! -f "${dpdk_stable_ver}" ]]; then
+ wget -nv --no-check-certificate "${dpdk_repo}/${dpdk_stable_ver}" || {
+ die "Failed to get DPDK package from: ${dpdk_repo}"
+ }
+ fi
+}
diff --git a/resources/libraries/bash/function/gather_trex.sh b/resources/libraries/bash/function/gather_trex.sh
new file mode 100644
index 0000000000..99591affc3
--- /dev/null
+++ b/resources/libraries/bash/function/gather_trex.sh
@@ -0,0 +1,30 @@
+# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
+#
+# 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
+
+# This library defines functions used mainly by "bootstrap" entry scripts.
+# Generally, the functions assume "common.sh" library has been sourced already.
+
+# Keep functions ordered alphabetically, please.
+
+function gather_trex () {
+
+ # This function is required to bypass download dir check.
+ # Currently it creates empty file in download dir.
+
+ set -exuo pipefail
+
+ touch trex-download-to-be-added.txt
+}
diff --git a/resources/libraries/bash/function/gather_vpp.sh b/resources/libraries/bash/function/gather_vpp.sh
new file mode 100644
index 0000000000..6ed4aa981c
--- /dev/null
+++ b/resources/libraries/bash/function/gather_vpp.sh
@@ -0,0 +1,80 @@
+# Copyright (c) 2024 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
+#
+# 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
+
+# This library defines functions used mainly by "bootstrap" entry scripts.
+# Generally, the functions assume "common.sh" library has been sourced already.
+
+# Keep functions ordered alphabetically, please.
+
+function gather_vpp () {
+
+ # Variables read:
+ # - BASH_FUNCTION_DIR - Bash directory with functions.
+ # - TEST_CODE - The test selection string from environment or argument.
+ # - DOWNLOAD_DIR - Path to directory robot takes the build to test from.
+ # - CSIT_DIR - Path to existing root of local CSIT git repository.
+ # Variables set:
+ # - VPP_VERSION - VPP stable version under test.
+ # Files read:
+ # - ${CSIT_DIR}/DPDK_STABLE_VER - DPDK version to use
+ # by csit-vpp not-timed jobs.
+ # - ${CSIT_DIR}/${VPP_VER_FILE} - Ubuntu VPP version to use.
+ # - ../*vpp*.deb|rpm - Relative to ${DOWNLOAD_DIR},
+ # copied for vpp-csit jobs.
+ # Directories updated:
+ # - ${DOWNLOAD_DIR}, vpp-*.deb files are copied here for vpp-csit jobs.
+ # - ./ - Assumed ${DOWNLOAD_DIR}, *vpp*.deb|rpm files
+ # are downloaded here for csit-vpp.
+ # Functions called:
+ # - die - Print to stderr and exit, defined in common_functions.sh
+ # Bash scripts executed:
+ # - ${CSIT_DIR}/resources/tools/scripts/download_install_vpp_pkgs.sh
+ # - Should download and extract requested files to ./.
+
+ set -exuo pipefail
+
+ case "${TEST_CODE}" in
+ "csit-"*)
+ # Use downloaded packages with specific version.
+ if [[ "${TEST_CODE}" == *"daily"* ]] || \
+ { [[ "${TEST_CODE}" == *"weekly"* ]] && \
+ [[ "${TEST_CODE}" != *"device"* ]]; } || \
+ [[ "${TEST_CODE}" == *"semiweekly"* ]] || \
+ [[ "${TEST_CODE}" == *"hourly"* ]];
+ then
+ warn "Downloading latest VPP packages from Packagecloud."
+ else
+ warn "Downloading stable VPP packages from Packagecloud."
+ VPP_VERSION="$(<"${CSIT_DIR}/${VPP_VER_FILE}")" || {
+ die "Read VPP stable version failed."
+ }
+ fi
+ source "${BASH_FUNCTION_DIR}/artifacts.sh" || die "Source failed."
+ download_artifacts || die
+ ;;
+ "vpp-csit-"*)
+ # Shorten line.
+ pkgs="${PKG_SUFFIX}"
+ # Use locally built packages.
+ mv "${DOWNLOAD_DIR}"/../*vpp*."${pkgs}" "${DOWNLOAD_DIR}"/ || {
+ die "Move command failed."
+ }
+ ;;
+ *)
+ die "Unable to identify job type from: ${TEST_CODE}"
+ ;;
+ esac
+}