test fixes and new product advisories work
This commit is contained in:
137
scripts/ebpf/docker-kernel-test.sh
Normal file
137
scripts/ebpf/docker-kernel-test.sh
Normal file
@@ -0,0 +1,137 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Docker-based eBPF Kernel Compatibility Test
|
||||
# Tests eBPF code on different Ubuntu versions (targeting different kernels)
|
||||
#
|
||||
# Usage: ./docker-kernel-test.sh <base_image> <kernel_version> <distro_name>
|
||||
# Example: ./docker-kernel-test.sh ubuntu:20.04 5.4 focal
|
||||
# ============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Disable MSYS path conversion for Docker commands
|
||||
export MSYS_NO_PATHCONV=1
|
||||
export MSYS2_ARG_CONV_EXCL="*"
|
||||
|
||||
BASE_IMAGE="${1:-ubuntu:22.04}"
|
||||
KERNEL_VERSION="${2:-5.15}"
|
||||
DISTRO_NAME="${3:-jammy}"
|
||||
|
||||
# Get repo root
|
||||
if [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]] || [[ -n "${WINDIR:-}" ]]; then
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -W 2>/dev/null || pwd)"
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd -W 2>/dev/null || pwd)"
|
||||
REPO_ROOT="${REPO_ROOT//\\//}"
|
||||
else
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
|
||||
fi
|
||||
|
||||
OUTPUT_DIR="${REPO_ROOT}/out"
|
||||
|
||||
echo "=============================================="
|
||||
echo "eBPF Kernel Compatibility Test"
|
||||
echo "=============================================="
|
||||
echo "Base image: ${BASE_IMAGE}"
|
||||
echo "Target kernel: ${KERNEL_VERSION}"
|
||||
echo "Distro: ${DISTRO_NAME}"
|
||||
echo "Repo root: ${REPO_ROOT}"
|
||||
echo ""
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}" 2>/dev/null || true
|
||||
|
||||
IMAGE_TAG="stellaops-ebpf-test:${DISTRO_NAME}"
|
||||
|
||||
# Check if image already exists
|
||||
if ! docker image inspect "${IMAGE_TAG}" >/dev/null 2>&1; then
|
||||
echo "Building test container image..."
|
||||
|
||||
# Use heredoc with docker build
|
||||
docker build -t "${IMAGE_TAG}" --build-arg BASE_IMAGE="${BASE_IMAGE}" - <<'DOCKERFILE'
|
||||
ARG BASE_IMAGE=ubuntu:22.04
|
||||
FROM ${BASE_IMAGE}
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV DOTNET_NOLOGO=1
|
||||
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
|
||||
ENV TZ=UTC
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
curl wget ca-certificates apt-transport-https \
|
||||
libc6 libicu-dev libssl-dev zlib1g \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh \
|
||||
&& chmod +x dotnet-install.sh \
|
||||
&& ./dotnet-install.sh --channel 10.0 --install-dir /usr/share/dotnet \
|
||||
&& ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet \
|
||||
&& rm dotnet-install.sh
|
||||
|
||||
WORKDIR /src
|
||||
DOCKERFILE
|
||||
|
||||
echo "Image built: ${IMAGE_TAG}"
|
||||
else
|
||||
echo "Using cached image: ${IMAGE_TAG}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Running tests in container..."
|
||||
|
||||
docker run --rm \
|
||||
-v "${REPO_ROOT}:/src" \
|
||||
-v "${OUTPUT_DIR}:/out" \
|
||||
-e STELLAOPS_UPDATE_FIXTURES=false \
|
||||
"${IMAGE_TAG}" \
|
||||
/bin/bash -c "
|
||||
cd /src
|
||||
|
||||
echo '=============================================='
|
||||
echo 'Environment Info'
|
||||
echo '=============================================='
|
||||
uname -a
|
||||
cat /etc/os-release | head -3
|
||||
dotnet --version
|
||||
echo ''
|
||||
|
||||
echo '=============================================='
|
||||
echo 'Restoring packages'
|
||||
echo '=============================================='
|
||||
dotnet restore src/Signals/__Tests/StellaOps.Signals.Ebpf.Tests/StellaOps.Signals.Ebpf.Tests.csproj \
|
||||
--configfile nuget.config 2>&1 | tail -5
|
||||
echo ''
|
||||
|
||||
echo '=============================================='
|
||||
echo 'Building'
|
||||
echo '=============================================='
|
||||
dotnet build src/Signals/__Tests/StellaOps.Signals.Ebpf.Tests/StellaOps.Signals.Ebpf.Tests.csproj \
|
||||
-c Release 2>&1 | tail -8
|
||||
echo ''
|
||||
|
||||
echo '=============================================='
|
||||
echo 'Running Tests'
|
||||
echo '=============================================='
|
||||
dotnet test src/Signals/__Tests/StellaOps.Signals.Ebpf.Tests/StellaOps.Signals.Ebpf.Tests.csproj \
|
||||
-c Release --no-build \
|
||||
--logger 'trx;LogFileName=/out/ebpf-tests-${DISTRO_NAME}.trx' \
|
||||
--logger 'console;verbosity=minimal'
|
||||
|
||||
TEST_EXIT_CODE=\$?
|
||||
|
||||
echo ''
|
||||
echo '=============================================='
|
||||
echo 'Test Results'
|
||||
echo '=============================================='
|
||||
if [ \$TEST_EXIT_CODE -eq 0 ]; then
|
||||
echo 'Kernel ${KERNEL_VERSION} (${DISTRO_NAME}): ALL TESTS PASSED'
|
||||
else
|
||||
echo 'Kernel ${KERNEL_VERSION} (${DISTRO_NAME}): TESTS FAILED'
|
||||
exit \$TEST_EXIT_CODE
|
||||
fi
|
||||
"
|
||||
|
||||
echo ""
|
||||
echo "=============================================="
|
||||
echo "Test complete for kernel ${KERNEL_VERSION}"
|
||||
echo "=============================================="
|
||||
97
scripts/ebpf/run-multi-kernel-tests.sh
Normal file
97
scripts/ebpf/run-multi-kernel-tests.sh
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/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)"
|
||||
Reference in New Issue
Block a user