#!/bin/bash
# run-test.sh -- start the chrony A/B measurement on a test guest.
# Run after each kexec into a test kernel. Idempotent.
#
# - re-applies the ENA enable_phc devlink param (lost on kexec) + reload
# - mounts debugfs if needed
# - ensures chrony logging directives are present
# - (re)starts phc_phase_log and ntp_quality_log.sh
set -e

echo "kernel: $(uname -r)"

# 1. ENA PHC (param is kernel state; gone after kexec)
if [ ! -e /dev/ptp0 ]; then
    BDF=$(sudo devlink dev | head -1)
    sudo devlink dev param set "$BDF" name enable_phc value true cmode driverinit
    sudo devlink dev reload "$BDF"
    sleep 3
fi
ls /dev/ptp0

# 2. debugfs + tk_sample
sudo mount -t debugfs none /sys/kernel/debug 2>/dev/null || true
sudo chmod 644 /sys/kernel/debug/tk_sample 2>/dev/null || true
cat /sys/kernel/debug/tk_sample || echo "WARNING: no tk_sample (wrong kernel?)"

# 3. chrony logging (idempotent)
if ! grep -q '^log ' /etc/chrony.conf; then
    echo 'log tracking measurements statistics' | sudo tee -a /etc/chrony.conf
    sudo systemctl restart chronyd
fi

# 4. loggers
pkill -f phc_phase_log 2>/dev/null || true
pkill -f ntp_quality_log 2>/dev/null || true
sleep 1
nohup ./ntp_quality_log.sh 30 ntp_quality.csv >/dev/null 2>&1 &
sudo nohup ./phc_phase_log /dev/ptp0 1 >> phc_phase.csv 2>/dev/null &
sleep 2
pgrep -af 'phc_phase_log|ntp_quality' | grep -v pgrep
echo "OK: $(uname -r) logging"
