#!/bin/sh
# Test script for /bin/apman

# b/28915040
if [ "$(cat /etc/platform)" = "GFHD100" ]; then
  echo "Not running apman.test on GFHD100"
  exit 0
fi

mydir=$(dirname "$0")
cd "$mydir"
. ../etc/wvtest.sh
PATH=$PATH:.

. /etc/utils.sh

runnable mktemp &&
tmpdir="$(mktemp -d ipapplyXXXXXXXXXX)" ||
tmpdir="/tmp/ipapply.$$"
tmpbindir="$tmpdir/test_bin"
mkdir -p "$tmpdir" && echo "using temp dir $tmpdir"
mkdir "$tmpbindir"

hostapd_running() {
  pgrep -f '^hostapd .* /tmp/hostapd.conf.wlan.*' >/dev/null
}

binwifi_running() {
  pgrep -f '/bin/wifi' >/dev/null
}

hostapd_wait_check_running() {
  local should_be_running="$1"

  echo 'waiting for /bin/wifi to start'
  for x in $(seq 50); do
    if binwifi_running; then
      break
    fi
    echo -n "."
    sleep 0.1
  done

  echo "waiting for /bin/wifi to finish..."
  while binwifi_running; do
    echo -n "."
    sleep 0.5
  done
  if hostapd_running; then echo 'hostapd running'; fi
  if $should_be_running; then
    WVPASS hostapd_running
  else
    WVFAIL hostapd_running
  fi
}

wait_route_changed() {
  local operation="$1"
  local route="$2"
  local interface="$3"

  for x in $(seq 50); do
    if grep "$operation $route" "$ip_out" | grep "dev $interface"; then
      return 0
    fi
    sleep 0.1
  done

  return 1
}


ip_out="$tmpdir/ip.out"
cat >"$tmpbindir/ip" <<-EOF
	#!/bin/sh
	echo test_bin/ip \$@ >>$ip_out
	if [ "x\$3" = "xshow" -a -e $tmpdir/ip_route_show ]; then
	  cat $tmpdir/ip_route_show
	fi
	exit 0
EOF
chmod 777 "$tmpbindir/ip"
PATH="$tmpbindir:$PATH"


echo "Setting up"
wifi stop
pkill "apman$"
rm -f /config/conman/command*
rm -f /config/conman/access_point*
rm -f /tmp/conman/command*
rm -f /tmp/conman/access_point*
# Creating wlan0_apmantest sometimes fails if we don't reset wlan0.
wlan0mac=$(cat /sys/class/net/wlan0/address)
mac=$(mac_addr_increment $wlan0mac 100)
iw dev wlan0 del
iw dev wlan0_apmantest del
WVPASS iw phy phy0 interface add wlan0 type __ap
WVPASS ip link set dev wlan0 address "$wlan0mac"
WVPASS iw phy phy0 interface add wlan0_apmantest type __ap
WVPASS ip link set dev wlan0_apmantest address "$mac"

# Start apman.
apman&

WVSTART "access points"
WVFAIL hostapd_running

touch /config/conman/access_point.5
WVFAIL hostapd_running

echo "Enable 5 GHz access point"
echo "env\nWIFI_PSK=password\nwifi\nset\n-b\n5\n-s\nssid" > /tmp/conman/command.5
echo "Waiting to make sure hostapd doesn't start (wrong location)"
hostapd_wait_check_running false

echo "Enable 5 GHz access point"
echo "env\nWIFI_PSK=password\nwifi\nset\n-b\n5\n-s\nssid" > /config/conman/command.5
hostapd_wait_check_running true

echo "Disable 5 GHz access point"
rm /config/conman/access_point.5
touch /tmp/conman/access_point.5
hostapd_wait_check_running false

touch /tmp/conman/access_point._apmantest.2.4
echo "Waiting to make sure hostapd doesn't start"
hostapd_wait_check_running false

echo "env\nWIFI_PSK=password\nwifi\nset\n-b\n2.4\n-s\nssid" > /config/conman/command.2.4
echo "Waiting to make sure hostapd doesn't start (wrong suffix)"
hostapd_wait_check_running false

echo "env\nWIFI_PSK=password\nwifi\nset\n-b\n2.4\n-s\nssid" > /config/conman/command._apmantest.2.4
echo "Waiting to make sure hostapd doesn't start (wrong location)"
hostapd_wait_check_running false

echo "env\nWIFI_PSK=password\nwifi\nset\n-b\n2.4\n-s\nssid\n-S\n_apmantest" > /tmp/conman/command._apmantest.2.4
hostapd_wait_check_running true

rm /tmp/conman/access_point._apmantest.2.4
touch /config/conman/access_point._apmantest.2.4
echo "Waiting to make sure hostapd doesn't start (wrong location)"
hostapd_wait_check_running false

WVSTART "route management"
echo "192.168.1.1" > /tmp/conman/gateway.wlan0_apmantest
echo "192.168.1.0/24" > /tmp/conman/subnet.wlan0_apmantest
WVPASS wait_route_changed "add" "default via 192.168.1.1" "wlan0_apmantest"
WVPASS wait_route_changed "add" "192.168.1.0/24" "wlan0_apmantest"

# Make sure non-interfaces are ignored.
echo "192.168.2.1" > /tmp/conman/gateway.wlan0_apmantest.tmp
echo "192.168.2.0/16" > /tmp/conman/subnet.wlan0_apmantest.tmp
echo "192.168.3.1" > /tmp/conman/gateway.wlan0_apmantest_tmp
echo "192.168.3.0/16" > /tmp/conman/subnet.wlan0_apmantest_tmp

echo "default via 192.168.1.1 dev wlan0_apmantest" > $tmpdir/ip_route_show
echo "192.168.1.0/24 dev wlan0_apmantest" >> $tmpdir/ip_route_show

echo "192.168.1.0/16" > /tmp/conman/subnet.wlan0_apmantest
WVPASS wait_route_changed "del" "default" "wlan0_apmantest"
WVPASS wait_route_changed "add" "default via 192.168.1.1" "wlan0_apmantest"
WVPASS wait_route_changed "del" "192.168.1.0/24" "wlan0_apmantest"
WVPASS wait_route_changed "add" "192.168.1.0/16" "wlan0_apmantest"

WVPASS grep "192\.168\.1\." "$ip_out"
WVFAIL grep "192\.168\.2\." "$ip_out"
WVFAIL grep "192\.168\.3\." "$ip_out"

echo "Cleaning up"
WVPASS iw dev wlan0_apmantest del
pkill "apman$"
wifi off
rm -f /config/conman/command*
rm -f /config/conman/access_point*
rm -f /tmp/conman/command*
rm -f /tmp/conman/access_point*
rm -f /tmp/conman/gateway.br0
rm -rf $tmpdir
