#!/bin/bash
set -u

#==============================================================================
declare -i ErrorCount=0
declare -i TestCount=0
declare -i PassCount=0
declare -i FailCount=0
declare TestHome="$PWD"
declare AppHome="${TestHome%/*}"
declare TestDir=

export P4CONFIG=.p4config.test_nj
export P4ENVIRO=$PWD/.p4enviro.test_nj

#==============================================================================
# Functions
function msg () { echo -e "$*"; }
function errmsg () { msg "\nError: ${1:-Uknknown Error}\n"; ErrorCount+=1; }
function bail () { errmsg "${1:-Uknknown Error}"; exit "$ErrorCount"; }
function pass () { TestCount+=1; PassCount+=1; msg "PASS $TestCount: ${1:-Uknown Test}"; }
function fail () { TestCount+=1; FailCount+=1; msg "FAIL  $TestCount: ${1:-Uknown Test}"; }

#------------------------------------------------------------------------------
function setup_test_environment () {
   local brokerCfg=

   msg "Setting up test environment."
   source /p4/common/bin/p4_vars test_nj || return 1

   p4d_test_nj_init stop
   p4broker_test_nj_init stop

   cd "$AppHome" || return 1

   msg "... Generating broker config for test_nj."

   brokerCfg="/p4/common/config/p4_test_nj.broker.cfg"

   msg "Running: ./gen_nj_broker_cfg.sh test_nj .GT. $brokerCfg"

   ./gen_nj_broker_cfg.sh test_nj > "$brokerCfg" || return 1

   p4d_test_nj_init start
   p4broker_test_nj_init start

   msg "... Testing broker on port $P4BROKERPORT"
   msg "p4 -p 9998 info"
   p4 -p 9998 info || return 1

   msg "Test environment setup OK."
}

#==============================================================================
# Command Line Processing

#==============================================================================
# Main Program

setup_test_environment ||\
   bail "Test setup was not successful. Aborting."
