#!/bin/sh
set -e

export AUTOPKGTEST_TMP=${AUTOPKGTEST_TMP:-/tmp/adt-libbpfcc-smoke}
mkdir -p "$AUTOPKGTEST_TMP"

failed=0

check() {
    if [ $1 -eq 0 ]; then
        echo "  PASS: $2"
    else
        echo "  FAIL: $2 (exit $1)"
        failed=$((failed + 1))
    fi
}

echo "bpfcc autopkgtest — libbpfcc smoke test"
echo "========================================"

# 1. Shared library files exist
echo "Checking shared library files..."
lib_found=0
for lib in /usr/lib/*/libbcc.so.* /usr/lib/*/libbcc_bpf.so.*; do
    if [ -e "$lib" ] && [ -f "$lib" ]; then
        echo "  PASS: $lib exists"
        lib_found=1
    fi
done
if [ $lib_found -eq 0 ]; then
    # fallback search
    LIB=$(find /usr/lib -name "libbcc.so*" -type f 2>/dev/null | head -1)
    if [ -n "$LIB" ]; then
        echo "  PASS: libbcc.so found at $LIB"
    else
        echo "  FAIL: libbcc.so not found"
        failed=$((failed + 1))
    fi
fi

# 2. pkg-config check (best effort)
if command -v pkg-config >/dev/null 2>&1; then
    if pkg-config --exists libbcc 2>/dev/null; then
        echo "  PASS: pkg-config libbcc found"
        pkg-config --modversion libbcc >/dev/null 2>&1
        check $? "pkg-config --modversion libbcc"
    else
        echo "  SKIP: pkg-config libbcc not found (dev package may not be installed)"
    fi
else
    echo "  SKIP: pkg-config not available"
fi

# 3. ldconfig cache check
if command -v ldconfig >/dev/null 2>&1; then
    if ldconfig -p 2>/dev/null | grep -q libbcc; then
        echo "  PASS: ldconfig shows libbcc"
    else
        echo "  SKIP: ldconfig does not list libbcc (may need cache update)"
    fi
else
    echo "  SKIP: ldconfig not available"
fi

echo "========================================"
if [ $failed -gt 0 ]; then
    echo "FAILED: $failed test(s)"
    exit 1
else
    echo "ALL SMOKE TESTS PASSED"
fi

echo "libbpfcc-smoke: PASS"
