#!/bin/sh

## NOTE(pim):
## This integration test, while added to the public repository, is meant as an
## internal validation / regression / integration test suite to be run on Hippo
## and Rhino, two reference installs of VPP in IPng Networks. The config files
## here should not be used although they can be a source of config inspiration :)

## Run me:
# ./intest.sh -strict 2>&1 | tee intest.out

rm -f "intest.exec"

STRICT=0
[ $# -ge 1 -a "$1" = "-strict" ] && STRICT=1

for i in hippo[0-9]*.yaml; do
  echo "Clearing: Moving to hippo-empty.yaml"
  ../vppcfg plan -s ../schema.yaml -c hippo-empty.yaml -o /tmp/vppcfg-exec-empty
  [ -s /tmp/vppcfg-exec-empty ] && {
	cat /tmp/vppcfg-exec-empty >> intest.exec
      vppctl exec /tmp/vppcfg-exec-empty
  }
  for j in hippo[0-9]*.yaml; do
    echo " - Moving to $i .. "
    ../vppcfg plan -s ../schema.yaml -c $i -o /tmp/vppcfg-exec_$i
    [ -s /tmp/vppcfg-exec_$i ] && {
	cat /tmp/vppcfg-exec_$i >> intest.exec
	vppctl exec /tmp/vppcfg-exec_$i
    }

    echo " - Moving from $i to $j"
    ../vppcfg plan -s ../schema.yaml -c $j -o /tmp/vppcfg-exec_${i}_${j}
    [ -s /tmp/vppcfg-exec_${i}_${j} ] && {
	cat /tmp/vppcfg-exec_${i}_${j} >> intest.exec
	vppctl exec /tmp/vppcfg-exec_${i}_${j}
    }

    echo " - Checking that from $j to $j is empty"
    ../vppcfg plan -s ../schema.yaml -c $j -o /tmp/vppcfg-exec_${j}_${j}_null
    [ -s /tmp/vppcfg-exec_${j}_${j}_null ] && {
      echo " - ERROR Transition is not empty"
      cat /tmp/vppcfg-exec_${j}_${j}_null
      [ $STRICT -ne 0 ] && exit 1
    }
  done
done

exit 0