summaryrefslogtreecommitdiffstats
path: root/jjb/scripts/vpp
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2023-07-05 22:26:37 -0400
committerDave Wallace <dwallacelf@gmail.com>2023-07-06 18:15:28 +0000
commit81406ff40a0f9e28de6df3a96006a93a446f75c6 (patch)
tree7dde2702464501573c5a44c8fcdea149d92e283e /jjb/scripts/vpp
parent022be5a66140db5d9d0ef17e3c6f010ea156d70c (diff)
Replace vpp-gcc job with vpp-cov job per-patch
- the original gcc job was intended to ensure that gcc builds worked to generate test coverage reports. The vpp-cov-verify job produces test coverage reports per patch and stores them in the S3 7-day docs retention bucket. Change-Id: I28c7c323ea8d673cdee66b85189e20029e63336d Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
Diffstat (limited to 'jjb/scripts/vpp')
-rw-r--r--jjb/scripts/vpp/cov-build.sh106
-rw-r--r--jjb/scripts/vpp/gcc-build.sh78
2 files changed, 106 insertions, 78 deletions
diff --git a/jjb/scripts/vpp/cov-build.sh b/jjb/scripts/vpp/cov-build.sh
new file mode 100644
index 000000000..b5fdeb597
--- /dev/null
+++ b/jjb/scripts/vpp/cov-build.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# Copyright (c) 2023 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:
+#
+# 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.
+
+echo "---> jjb/scripts/vpp/cov-build.sh"
+
+set -euxo pipefail
+
+line="*************************************************************************"
+# Don't build anything if this is a merge job.
+if [[ ${JOB_NAME} == *merge* ]] ; then
+ echo -e "\n$line\nSkipping build."
+ exit 0
+fi
+
+OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
+OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
+OS_ARCH=$(uname -m)
+DRYRUN="${DRYRUN:-}"
+IS_CSIT_VPP_JOB="${IS_CSIT_VPP_JOB:-}"
+MAKE_PARALLEL_FLAGS="${MAKE_PARALLEL_FLAGS:-}"
+MAKE_PARALLEL_JOBS="${MAKE_PARALLEL_JOBS:-}"
+MAKE_TEST_OS="${MAKE_TEST_OS:-ubuntu-22.04}"
+MAKE_TEST_MULTIWORKER_OS="${MAKE_TEST_MULTIWORKER_OS:-debian-11}"
+VPPAPIGEN_TEST_OS="${VPPAPIGEN_TEST_OS:-${MAKE_TEST_OS}}"
+BUILD_RESULT="SUCCESSFULLY COMPLETED"
+BUILD_ERROR=""
+RETVAL="0"
+
+if [ -n "${MAKE_PARALLEL_FLAGS}" ] ; then
+ echo "Building VPP. Number of cores for build set with" \
+ "MAKE_PARALLEL_FLAGS='${MAKE_PARALLEL_FLAGS}'."
+elif [ -n "${MAKE_PARALLEL_JOBS}" ] ; then
+ echo "Building VPP. Number of cores for build set with" \
+ "MAKE_PARALLEL_JOBS='${MAKE_PARALLEL_JOBS}'."
+else
+ echo "Building VPP. Number of cores not set," \
+ "using build default ($(grep -c ^processor /proc/cpuinfo))."
+fi
+
+make_test_coverage_report() {
+ if ! make UNATTENDED=yes install-dep ; then
+ BUILD_ERROR="FAILED 'make install-dep'"
+ return
+ fi
+ if ! make UNATTENDED=yes install-ext-deps ; then
+ BUILD_ERROR="FAILED 'make install-ext-deps'"
+ return
+ fi
+ if ! make UNATTENDED=yes test-dep ; then
+ BUILD_ERROR="FAILED 'make test-dep'"
+ return
+ fi
+ if ! make UNATTENDED=yes pkg-verify ; then
+ BUILD_ERROR="FAILED 'make pkg-verify'"
+ return
+ fi
+ if [ "${IS_CSIT_VPP_JOB,,}" == "true" ] ; then
+ # CSIT jobs don't need to run make test
+ return
+ fi
+ if [ -n "${MAKE_PARALLEL_JOBS}" ] ; then
+ TEST_JOBS="${MAKE_PARALLEL_JOBS}"
+ echo "Testing VPP with ${TEST_JOBS} cores."
+ else
+ TEST_JOBS="auto"
+ echo "Testing VPP with automatically calculated number of cores. " \
+ "See test logs for the exact number."
+ fi
+ if grep -q "${OS_ID}-${OS_VERSION_ID}" <<< "${VPPAPIGEN_TEST_OS}"; then
+ if ! src/tools/vppapigen/test_vppapigen.py ; then
+ BUILD_ERROR="FAILED src/tools/vppapigen/test_vppapigen.py"
+ return
+ fi
+ fi
+ if grep -q "${OS_ID}-${OS_VERSION_ID}" <<< "${MAKE_TEST_OS}"; then
+ if ! make COMPRESS_FAILED_TEST_LOGS=yes TEST_JOBS="$TEST_JOBS" RETRIES=3 test-cov ; then
+ BUILD_ERROR="FAILED 'make test-cov'"
+ return
+ fi
+ else
+ echo "Skip running 'make test-cov' on ${OS_ID}-${OS_VERSION_ID}"
+ fi
+}
+
+if [ "${DRYRUN,,}" != "true" ] ; then
+ make_test_coverage_report
+fi
+if [ -n "$BUILD_ERROR" ] ; then
+ BUILD_RESULT="$BUILD_ERROR"
+ RETVAL="1"
+fi
+echo -e "\n$line\n* VPP ${OS_ID^^}-${OS_VERSION_ID}-${OS_ARCH^^}" \
+ "TEST COVERAGE REPORT $BUILD_RESULT\n$line\n"
+exit $RETVAL
diff --git a/jjb/scripts/vpp/gcc-build.sh b/jjb/scripts/vpp/gcc-build.sh
deleted file mode 100644
index 1d8160047..000000000
--- a/jjb/scripts/vpp/gcc-build.sh
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/bash
-
-# Copyright (c) 2022 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:
-#
-# 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.
-
-echo "---> jjb/scripts/vpp/gcc-build.sh"
-
-set -euxo pipefail
-
-line="*************************************************************************"
-OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
-OS_VERSION_ID=$(grep '^VERSION_ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
-OS_ARCH=$(uname -m)
-DRYRUN="${DRYRUN:-}"
-BUILD_RESULT="SUCCESSFULLY COMPLETED"
-BUILD_ERROR=""
-RETVAL="0"
-export CC=gcc
-
-make_build_release_build_test_gcov_sanity() {
- if ! make UNATTENDED=yes install-dep ; then
- BUILD_ERROR="FAILED 'make install-dep'"
- return
- fi
- if ! make UNATTENDED=yes install-ext-deps ; then
- BUILD_ERROR="FAILED 'make install-ext-deps'"
- return
- fi
- if ! make UNATTENDED=yes build-release ; then
- BUILD_ERROR="FAILED 'make build'"
- return
- fi
- if ! make UNATTENDED=yes build ; then
- BUILD_ERROR="FAILED 'make build'"
- return
- fi
- if [ -n "${MAKE_PARALLEL_JOBS}" ] ; then
- TEST_JOBS="${MAKE_PARALLEL_JOBS}"
- echo "Testing VPP with ${TEST_JOBS} cores."
- else
- TEST_JOBS="auto"
- echo "Testing VPP with automatically calculated number of cores. " \
- "See test logs for the exact number."
- fi
- # TODO: Add 'smoke test' env var to select smoke test cases
- # then update this accordingly. For now pick a few basic suites...
- MAKE_TEST_SUITES="vlib vppinfra vpe_api vapi cli bihash"
- for suite in $MAKE_TEST_SUITES ; do
- if ! make UNATTENDED=yes TESTS_GCOV=1 TEST_JOBS="$TEST_JOBS" TEST=$suite test ; then
- BUILD_ERROR="FAILED 'make TESTS_GCOV=1 TEST_JOBS=$TEST_JOBS TEST=$suite test'!"
- return
- fi
- if ! make UNATTENDED=yes TESTS_GCOV=1 TEST_JOBS="$TEST_JOBS" TEST=$suite test-debug ; then
- BUILD_ERROR="FAILED 'make TESTS_GCOV=1 TEST_JOBS=$TEST_JOBS TEST=$suite test-debug'!"
- return
- fi
- done
-}
-
-if [ "${DRYRUN,,}" != "true" ] ; then
- make_build_release_build_test_gcov_sanity
-fi
-if [ -n "$BUILD_ERROR" ] ; then
- BUILD_RESULT="$BUILD_ERROR"
- RETVAL="1"
-fi
-echo -e "\n$line\n* VPP ${OS_ID^^}-${OS_VERSION_ID}-${OS_ARCH^^} GCC BUILD $BUILD_RESULT\n$line\n"
-exit $RETVAL