#!/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)"