Add script which runs all VPP lite tests
[one.git] / tests / data_plane / vpp_lite_topo / run.sh
diff --git a/tests/data_plane/vpp_lite_topo/run.sh b/tests/data_plane/vpp_lite_topo/run.sh
new file mode 100755 (executable)
index 0000000..59bae1c
--- /dev/null
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+
+TESTS_DIR=tests
+
+function help
+{
+  echo "Run all ONE tests"
+  echo
+  echo This must be run with superuser privileges.
+  echo "Usage:"
+  echo " ./run.sh [vh]"
+  echo
+  echo "  -v : verbose output"
+  echo "  -h : show help"
+}
+
+verbose=0
+
+while [ $# -gt 0 ] ; do
+  arg=$1
+  shift
+
+  if [ $arg == "-v" ]; then
+    verbose=1
+  elif [ $arg == "-h" ] ; then
+    help
+    exit 0
+  fi
+done
+
+### begin script
+
+failed_tcs=()
+count=0
+failed_num=0
+passed_num=0
+
+start_time=`date +%s`
+
+# count tests
+test_num=`ls -l $TESTS_DIR/test_* | wc -l`
+
+echo
+echo "Running VPP lite test suite."
+echo
+
+for test_case in $TESTS_DIR/test_*
+do
+  let "count=$count + 1"
+
+  # run the test case
+  base_name=`basename -a $test_case`
+  printf "*** %d/%d : %-45s" $count $test_num $base_name
+
+  if [ $verbose -ne 0 ] ; then
+    $test_case
+  else
+    $test_case &> /dev/null
+  fi
+  rc=$?
+
+  if [ $rc -ne 0 ] ; then
+    printf "failed!\n"
+    failed_tcs+=("$test_case")
+    let "failed_num=$failed_num + 1"
+  else
+    printf "passed.\n"
+    let "passed_num=$passed_num + 1"
+  fi
+  sleep 1
+done
+
+end_time=`date +%s`
+runtime=$((end_time-start_time))
+
+echo
+echo "------------------------------------------------------"
+echo "Runtime: " `date -u -d @${runtime} +"%M min %S sec"`
+echo
+
+if [ $failed_num -eq 0 ]; then
+  echo "All tests have passed."
+else
+  echo "List of failed test cases:"
+  for tc in "${failed_tcs[@]}"
+  do
+    echo "$tc"
+  done
+fi
+
+echo "------------------------------------------------------"
+
+### end script