feat(bootstrap): Split gather.sh 45/41345/1
authorpmikus <[email protected]>
Wed, 31 Jul 2024 13:30:40 +0000 (15:30 +0200)
committerpmikus <[email protected]>
Wed, 31 Jul 2024 13:30:40 +0000 (15:30 +0200)
Signed-off-by: Peter Mikus <[email protected]>
Change-Id: I8bf1fbf49d224b89f2da4a7f08bdf932cad9fd35

resources/libraries/bash/function/gather.sh
resources/libraries/bash/function/gather_dpdk.sh [new file with mode: 0644]
resources/libraries/bash/function/gather_trex.sh [new file with mode: 0644]
resources/libraries/bash/function/gather_vpp.sh [new file with mode: 0644]

index e432777..a5820a5 100644 (file)
@@ -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 (file)
index 0000000..da3fa93
--- /dev/null
@@ -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 (file)
index 0000000..99591af
--- /dev/null
@@ -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 (file)
index 0000000..6ed4aa9
--- /dev/null
@@ -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
+}