Files
git.stella-ops.org/scripts/ebpf/run-multi-kernel-tests.sh
2026-01-28 02:30:48 +02:00

98 lines
2.5 KiB
Bash

#!/bin/bash
# ============================================================================
# Multi-Kernel eBPF Test Runner
# Runs eBPF tests on 3 major kernel versions: 5.4, 5.15, 6.x
#
# Usage: ./run-multi-kernel-tests.sh [--parallel]
# ============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
PARALLEL="${1:-}"
echo "=============================================="
echo "Multi-Kernel eBPF Test Suite"
echo "=============================================="
echo "Testing on kernel versions: 5.4, 5.15, 6.x"
echo "Repository: ${REPO_ROOT}"
echo ""
# Define kernel test matrix
declare -A KERNELS=(
["5.4"]="ubuntu:20.04|focal"
["5.15"]="ubuntu:22.04|jammy"
["6.x"]="ubuntu:24.04|noble"
)
FAILED_KERNELS=()
PASSED_KERNELS=()
run_kernel_test() {
local kernel_version="$1"
local config="${KERNELS[$kernel_version]}"
local base_image="${config%|*}"
local distro="${config#*|}"
echo ""
echo "=============================================="
echo "Testing Kernel ${kernel_version} (${distro})"
echo "=============================================="
if "${SCRIPT_DIR}/docker-kernel-test.sh" "${base_image}" "${kernel_version}" "${distro}"; then
PASSED_KERNELS+=("${kernel_version}")
return 0
else
FAILED_KERNELS+=("${kernel_version}")
return 1
fi
}
if [ "${PARALLEL}" == "--parallel" ]; then
echo "Running tests in parallel..."
pids=()
for kernel in "${!KERNELS[@]}"; do
run_kernel_test "$kernel" &
pids+=($!)
done
# Wait for all and collect results
for pid in "${pids[@]}"; do
wait "$pid" || true
done
else
echo "Running tests sequentially..."
for kernel in "5.4" "5.15" "6.x"; do
run_kernel_test "$kernel" || true
done
fi
echo ""
echo "=============================================="
echo "Multi-Kernel Test Summary"
echo "=============================================="
echo ""
if [ ${#PASSED_KERNELS[@]} -gt 0 ]; then
echo "PASSED kernels:"
for k in "${PASSED_KERNELS[@]}"; do
echo " - Kernel ${k}"
done
fi
if [ ${#FAILED_KERNELS[@]} -gt 0 ]; then
echo ""
echo "FAILED kernels:"
for k in "${FAILED_KERNELS[@]}"; do
echo " - Kernel ${k}"
done
echo ""
echo "ERROR: Some kernel tests failed!"
exit 1
fi
echo ""
echo "SUCCESS: All kernel versions passed!"
echo "Tested: 5.4 (focal), 5.15 (jammy), 6.x (noble)"