From 07442ec8fa86a8279e9e49a0829ec5b7916931d2 Mon Sep 17 00:00:00 2001 From: pmikus Date: Wed, 31 Jul 2024 15:30:40 +0200 Subject: feat(bootstrap): Split gather.sh Signed-off-by: Peter Mikus Change-Id: I8bf1fbf49d224b89f2da4a7f08bdf932cad9fd35 (cherry picked from commit cac0e1ee4248bbe22f3a8acdd52539f2d861bb0f) --- resources/libraries/bash/function/gather.sh | 136 +---------------------- resources/libraries/bash/function/gather_dpdk.sh | 66 +++++++++++ resources/libraries/bash/function/gather_trex.sh | 30 +++++ resources/libraries/bash/function/gather_vpp.sh | 80 +++++++++++++ 4 files changed, 182 insertions(+), 130 deletions(-) create mode 100644 resources/libraries/bash/function/gather_dpdk.sh create mode 100644 resources/libraries/bash/function/gather_trex.sh create mode 100644 resources/libraries/bash/function/gather_vpp.sh 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 +} -- cgit 1.2.3-korg