summaryrefslogtreecommitdiff
path: root/vendor/github.com/cilium/ebpf/run-tests.sh
diff options
context:
space:
mode:
authorKubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com>2023-09-18 10:16:43 +0800
committerGitHub <noreply@github.com>2023-09-18 10:16:43 +0800
commitdba2abeddaf64fe3ba1e2c3eaf20f8eb7d172c45 (patch)
treea3f7212d74d83483220c26ea25318eb13f5c5574 /vendor/github.com/cilium/ebpf/run-tests.sh
parentMerge pull request #5015 from zhiyingfang2022/fzy0915 (diff)
parentbump ebpf under cilium to 0.9.1 (diff)
downloadkubeedge-dba2abeddaf64fe3ba1e2c3eaf20f8eb7d172c45.tar.gz
Merge pull request #5019 from fisherxu/fix-fuzzing
bump ebpf under cilium to 0.9.1 to fix failed fuzzing test
Diffstat (limited to 'vendor/github.com/cilium/ebpf/run-tests.sh')
-rw-r--r--vendor/github.com/cilium/ebpf/run-tests.sh62
1 files changed, 41 insertions, 21 deletions
diff --git a/vendor/github.com/cilium/ebpf/run-tests.sh b/vendor/github.com/cilium/ebpf/run-tests.sh
index a079edc7e..c21cca9e5 100644
--- a/vendor/github.com/cilium/ebpf/run-tests.sh
+++ b/vendor/github.com/cilium/ebpf/run-tests.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Test the current package under a different kernel.
# Requires virtme and qemu to be installed.
# Examples:
@@ -48,21 +48,31 @@ if [[ "${1:-}" = "--exec-vm" ]]; then
rm "${output}/fake-stdin"
fi
- if ! $sudo virtme-run --kimg "${input}/bzImage" --memory 768M --pwd \
- --rwdir="${testdir}=${testdir}" \
- --rodir=/run/input="${input}" \
- --rwdir=/run/output="${output}" \
- --script-sh "PATH=\"$PATH\" \"$script\" --exec-test $cmd" \
- --kopt possible_cpus=2; then # need at least two CPUs for some tests
- exit 23
- fi
+ for ((i = 0; i < 3; i++)); do
+ if ! $sudo virtme-run --kimg "${input}/bzImage" --memory 768M --pwd \
+ --rwdir="${testdir}=${testdir}" \
+ --rodir=/run/input="${input}" \
+ --rwdir=/run/output="${output}" \
+ --script-sh "PATH=\"$PATH\" CI_MAX_KERNEL_VERSION="${CI_MAX_KERNEL_VERSION:-}" \"$script\" --exec-test $cmd" \
+ --kopt possible_cpus=2; then # need at least two CPUs for some tests
+ exit 23
+ fi
+
+ if [[ -e "${output}/status" ]]; then
+ break
+ fi
+
+ if [[ -v CI ]]; then
+ echo "Retrying test run due to qemu crash"
+ continue
+ fi
- if [[ ! -e "${output}/success" ]]; then
exit 42
- fi
+ done
+ rc=$(<"${output}/status")
$sudo rm -r "$output"
- exit 0
+ exit $rc
elif [[ "${1:-}" = "--exec-test" ]]; then
shift
@@ -73,13 +83,16 @@ elif [[ "${1:-}" = "--exec-test" ]]; then
export KERNEL_SELFTESTS="/run/input/bpf"
fi
- dmesg -C
- if ! "$@"; then
- dmesg
- exit 1 # this return code is "swallowed" by qemu
+ if [[ -f "/run/input/bpf/bpf_testmod/bpf_testmod.ko" ]]; then
+ insmod "/run/input/bpf/bpf_testmod/bpf_testmod.ko"
fi
- touch "/run/output/success"
- exit 0
+
+ dmesg --clear
+ rc=0
+ "$@" || rc=$?
+ dmesg
+ echo $rc > "/run/output/status"
+ exit $rc # this return code is "swallowed" by qemu
fi
readonly kernel_version="${1:-}"
@@ -90,22 +103,27 @@ fi
shift
readonly kernel="linux-${kernel_version}.bz"
-readonly selftests="linux-${kernel_version}-selftests-bpf.bz"
+readonly selftests="linux-${kernel_version}-selftests-bpf.tgz"
readonly input="$(mktemp -d)"
readonly tmp_dir="${TMPDIR:-/tmp}"
readonly branch="${BRANCH:-master}"
fetch() {
echo Fetching "${1}"
- wget -nv -N -P "${tmp_dir}" "https://github.com/cilium/ci-kernels/raw/${branch}/${1}"
+ pushd "${tmp_dir}" > /dev/null
+ curl -s -L -O --fail --etag-compare "${1}.etag" --etag-save "${1}.etag" "https://github.com/cilium/ci-kernels/raw/${branch}/${1}"
+ local ret=$?
+ popd > /dev/null
+ return $ret
}
fetch "${kernel}"
cp "${tmp_dir}/${kernel}" "${input}/bzImage"
if fetch "${selftests}"; then
+ echo "Decompressing selftests"
mkdir "${input}/bpf"
- tar --strip-components=4 -xjf "${tmp_dir}/${selftests}" -C "${input}/bpf"
+ tar --strip-components=4 -xf "${tmp_dir}/${selftests}" -C "${input}/bpf"
else
echo "No selftests found, disabling"
fi
@@ -117,6 +135,8 @@ fi
export GOFLAGS=-mod=readonly
export CGO_ENABLED=0
+# LINUX_VERSION_CODE test compares this to discovered value.
+export KERNEL_VERSION="${kernel_version}"
echo Testing on "${kernel_version}"
go test -exec "$script --exec-vm $input" "${args[@]}"