#!/bin/sh
set -eu

tmpdir="$(mktemp -d)"
trap 'rm -rf "$tmpdir"' EXIT

out="$tmpdir/output.txt"
err="$tmpdir/error.txt"
trace="$tmpdir/trace.txt"

if [ "$(id -u)" -ne 0 ]; then
    echo "Test requires root; skipping"
    exit 77
fi

mkdir -p /sys/kernel/debug

if ! mountpoint -q /sys/kernel/debug; then
    if ! mount -t debugfs debugfs /sys/kernel/debug 2>"$err"; then
        cat "$err"
        echo "debugfs is not available; skipping"
        exit 77
    fi
fi

if [ ! -d /sys/kernel/debug/tracing ]; then
    echo "ftrace tracing directory is not available; skipping"
    exit 77
fi

set +e
idlestat --trace -t 1 -f "$trace" >"$out" 2>"$err"
status="$?"
set -e

cat "$out" "$err"

test "$status" -eq 0
test -s "$trace"
grep -Eq '^# tracer|cpu_idle|cpu_frequency|sched|irq' "$trace"
