#!/bin/bash -e

testdir="$PWD/debian/tests/linuxptp-testsuite"
clknetsim_ver=0a11a35
clknetsim_src=https://github.com/mlichvar/clknetsim/archive/"$clknetsim_ver"/clknetsim-"$clknetsim_ver".tar.gz
clknetsim_archive=$(basename "$clknetsim_src")

inject_local_aa() {
  app="$1"
  apparmor_profile=/etc/apparmor.d/usr.sbin.${app}
  echo "-- Injecting complementary AppArmor rules for $app"

  sudo -E bash -c "
    if [ -f '$apparmor_profile' ]; then
      if aa-status --enabled 2>/dev/null; then
        cat <<EOF >>/etc/apparmor.d/local/usr.sbin.'${app}'
/tmp/autopkgtest*/** rwm,
/proc/[0-9]*/comm r,
EOF
        apparmor_parser -r -W -T '${apparmor_profile}' || {
          echo 'Failed to reload the ${apparmor_profile} AppArmor profile, continuing anyway.'
        }
      fi
    else
      echo 'AppArmor profile for $app does not exist, skipping.'
    fi
  "
}

# Always use the same seed to get deterministic results
export CLKNETSIM_RANDOM_SEED=24508

# By default linuxptp-testsuite will look for clknetsim in a linuxptp-testsuite/clknetsim subdirectory
echo ""
cd "$testdir"
mkdir clknetsim
cd clknetsim

echo "-- Downloading clknetsim"
wget "$clknetsim_src"

echo "-- Extracting clknetsim"
tar -xzvf "$clknetsim_archive" --strip-components=1
echo ""

echo "-- Building clknetsim"
make
echo ""

inject_local_aa "ptp4l"
inject_local_aa "phc2sys"

echo "-- Running test-suite"
cd "$testdir"
./run
