Adding test setup script to run the tests inside a test container.
Adding documentation for running the tests
diff --git a/src/test/setup/cord-test.sh b/src/test/setup/cord-test.sh
new file mode 100755
index 0000000..bbaa286
--- /dev/null
+++ b/src/test/setup/cord-test.sh
@@ -0,0 +1,151 @@
+#!/usr/bin/env bash
+
+function show_help {
+ echo "Usage: ${0#*/} -h | this help -n <onos_ip> -r <radius_ip> -o <onos cnt image> -a <radius cnt image> -t <test type> -c | cleanup test containers -C <cleanup container list> -k | kill the test container -b <test cnt image> | build test container docker image"
+ exit 1
+}
+
+function cnt_ipaddr {
+ local image="${1}"
+ local cnt=`docker ps |grep "${image}" |awk '{print $1}'`
+ local ipaddr
+ ipaddr=`docker inspect -f '{{.NetworkSettings.IPAddress}}' $cnt`
+ echo $ipaddr
+}
+
+test_type=dhcp
+onos_cnt_image=onos:igmp-test
+radius_cnt_image=radius-server:dev
+onos_ip=
+radius_ip=
+OPTIND=1
+nose_cnt_image="onos:nosetest"
+cleanup=0
+kill_test_cnt=0
+build_cnt_image=
+cleanup_cnt_list=
+
+while getopts "h?n:r:o:a:t:cC:kb:" opt; do
+ case "$opt" in
+ h|\?)
+ show_help
+ exit 1
+ ;;
+ t)
+ test_type=$OPTARG
+ ;;
+ n)
+ onos_ip=$OPTARG
+ ;;
+ r)
+ radius_ip=$OPTARG
+ ;;
+ o)
+ onos_cnt_image=$OPTARG
+ ;;
+ a)
+ radius_cnt_image=$OPTARG
+ ;;
+ c)
+ cleanup=1
+ ;;
+ C)
+ cleanup=1
+ cleanup_cnt_list=$OPTARG
+ ;;
+ k)
+ kill_test_cnt=1
+ ;;
+ b)
+ build_cnt_image=$OPTARG
+ ;;
+ esac
+done
+
+shift $(($OPTIND-1))
+
+if [ $# -gt 0 ]; then
+ echo "Invalid args"
+ show_help
+fi
+
+if [ $cleanup -eq 1 ]; then
+ if [ x"$cleanup_cnt_list" != "x" ]; then
+ IFS='-' read -r -a cleanup_list <<<"${cleanup_cnt_list}"
+ for container in "${cleanup_list[@]}"; do
+ cnt_id=`docker ps | grep "${container}" | awk '{print $1}'`
+ echo "Killing container $cnt_id"
+ docker kill $cnt_id
+ done
+ exit 0
+ fi
+ for container in `docker ps | grep "${nose_cnt_image}" | awk '{print $1}'`; do
+ echo "Killing test container $container"
+ docker kill $container
+ done
+ exit 0
+fi
+
+if [ x"$onos_ip" = "x" ]; then
+ onos_ip=$(cnt_ipaddr $onos_cnt_image)
+fi
+
+if [ x"$radius_ip" = "x" ]; then
+ radius_ip=$(cnt_ipaddr $radius_cnt_image)
+fi
+
+echo "Onos IP $onos_ip, Radius IP $radius_ip, Test type $test_type"
+sed "s,%%CONTROLLER%%,$onos_ip,g" of-bridge-template.sh > $HOME/nose_exp/of-bridge.sh
+
+if [ x"$build_cnt_image" != "x" ]; then
+ echo "Building test container docker image $build_cnt_image"
+ (cd test_docker && docker build -t $build_cnt_image . )
+ sleep 2
+ echo "Done building docker image $build_cnt_image"
+ nose_cnt_image=$build_cnt_image
+fi
+echo "Starting test container $nose_cnt_image"
+
+test_cnt=`docker run -itd --privileged -v $HOME/nose_exp:/root/test -v /lib/modules:/lib/modules -e ONOS_CONTROLLER_IP=$onos_ip -e ONOS_AAA_IP=$radius_ip $nose_cnt_image /bin/bash`
+echo "Setting up test container $test_cnt"
+docker exec $test_cnt pip install monotonic
+echo "Starting up the OVS switch on the test container $test_cnt"
+docker exec $test_cnt /root/test/of-bridge.sh br0
+status=0
+while [ $status -ne 0 ]; do
+ echo "Waiting for the switch to get connected to controller"
+ docker exec $test_cnt ovs-ofctl dump-flows br0 | grep "type=0x8942"
+ status=$?
+ sleep 1
+done
+sleep 3
+
+IFS='-' read -r -a tests <<<"${test_type}"
+for t in "${tests[@]}"; do
+ test_method="${t#*:}"
+ test="${t%%:*}"
+ case "$test" in
+ tls)
+ test_file="$test"AuthTest.py
+ ;;
+ *)
+ test_file="$test"Test.py
+ ;;
+ esac
+ if [ "$test_method" != "$t" ]; then
+ test_case="$test_file":"${test_method}"
+ else
+ test_case="$test_file"
+ fi
+ echo "Running test $test, test case $test_case"
+ docker exec $test_cnt nosetests -v /root/test/git/cord-tester/src/test/$test/"${test_case}"
+ echo "Test $t exited with status $?"
+done
+
+echo "Done running tests."
+
+if [ $kill_test_cnt -eq 1 ]; then
+ echo "Killing test container $test_cnt"
+ docker kill $test_cnt
+fi
+