--- /dev/null
+#!/bin/bash
+
+# This script runs through all the known tests by performing a test sweep.
+# It should claim that all tests succeeded for a new build/configuration/etc.
+# to be considered successful.
+#
+# The way to add tests to the full test set is to add full paths to the
+# "TESTKIT_TEST_SUITE" variable. This can be done in your personal
+# testkit.config file or in an exported variable set prior to running
+# this script.
+#
+# Author: Chris Koeritz
+
+export TESTKIT_DIR="$( \cd "$(\dirname "$0")" && \pwd )" # obtain the script's working directory.
+cd $TESTKIT_DIR
+
+TIME_START="$(date +"%s")"
+
+source prepare_tools.sh prepare_tools.sh
+
+# if that didn't work, complain.
+if [ -z "$TESTKIT_SENTINEL" ]; then echo Please run prepare_tools.sh before testing.; exit 3; fi
+source "$TESTKIT_ROOT/library/establish_environment.sh"
+
+verbosity="$1"; shift
+
+VERBOSE=1
+
+if [ "$verbosity" == "--help" -o "$verbosity" == "-help" -o "$verbosity" == "-h" ]; then
+ echo "$(basename $0): Runs the available suite of tests."
+ echo
+ echo " $(basename $0) {summary | [full]}"
+ echo
+ echo "By default, the report will be a 'full' listing that includes all test"
+ echo "run logging. If 'summary' is passed as the first parameter, then only"
+ echo "the test results will be displayed."
+ exit 0
+fi
+
+if [ "$verbosity" == "summary" ]; then
+ VERBOSE=0
+fi
+
+##############
+
+# clean up any conglomerated log file.
+\rm -f "$CONGLOMERATED_TESTKIT_OUTPUT"
+
+##############
+
+# define the sets of tests we'd like to run.
+
+NETBADGE_TESTS=( \
+ netbadge_integrations/basic_integrations_test.sh \
+)
+
+##############
+
+if [ ! -z "$AUTOBUILD_RUNNING" ]; then
+ # only add some tests for automated, testing, bootstrap builds based on their needs.
+
+true # placeholder
+
+fi
+
+##############
+
+# now that all tests have been defined, we build up our total list of tests.
+
+echo Full set of tests:
+for ((test_iter=0; $test_iter < ${#TESTKIT_TEST_SUITE[*]}; test_iter++)); do
+ echo "$(expr $test_iter + 1): ${TESTKIT_TEST_SUITE[$test_iter]}"
+done
+
+##############
+
+FAIL_COUNT=0
+
+REG_TEMP="$TEST_TEMP/run_$(date +"%Y_%m_%d")"
+if [ ! -d "$REG_TEMP" ]; then
+ mkdir "$REG_TEMP"
+fi
+
+# go to the top of the hierarchy.
+cd "$TESTKIT_ROOT"
+
+for ((test_iter=0; $test_iter < ${#TESTKIT_TEST_SUITE[*]}; test_iter++)); do
+ echo -e "\n======================================================================"
+ echo -n `date`": "
+ echo "Now running test $(expr $test_iter + 1): ${TESTKIT_TEST_SUITE[$test_iter]}"
+ output_file="$(mktemp $REG_TEMP/test_log.XXXXXX)"
+ echo " Test output file: $output_file"
+
+#
+#hmmm: no real way to check for errors in the general case, unless we define a
+# set of sentinels for this. not done yet.
+#-->
+# echo "==============" >"$output_file"
+# echo "Log state prior to test:" >>"$output_file"
+# check_logs_for_errors >>"$output_file"
+# echo "==============" >>"$output_file"
+
+ if [ $VERBOSE -ne 1 ]; then
+ bash "${TESTKIT_TEST_SUITE[$test_iter]}" >>"$output_file" 2>&1
+ retval=$?
+ else
+ bash "${TESTKIT_TEST_SUITE[$test_iter]}" 2>&1 | tee -a "$output_file"
+ retval=${PIPESTATUS[0]}
+ fi
+
+ if [ $retval -ne 0 ]; then
+ ((FAIL_COUNT++))
+ echo "FAILURE: exit code $retval for test ${TESTKIT_TEST_SUITE[$test_iter]}"
+ TEST_RESULTS[$test_iter]="FAIL"
+ else
+ echo "OK: successful test run for test ${TESTKIT_TEST_SUITE[$test_iter]}"
+ TEST_RESULTS[$test_iter]="OKAY"
+ fi
+
+#hmmm: same comment re error checking... define some tags to look for!
+# echo "==============" >>"$output_file"
+# echo "Log state after test:" >>"$output_file"
+# check_logs_for_errors >>"$output_file"
+# echo "==============" >>"$output_file"
+
+done
+
+# final analysis--how did the test run do?
+
+echo -e "\n\nResults table for this test run:\n"
+for ((test_iter=0; $test_iter < ${#TESTKIT_TEST_SUITE[*]}; test_iter++)); do
+ num=$(expr $test_iter + 1)
+ if [ $num -lt 10 ]; then num="0$num"; fi
+ echo "$num: ${TEST_RESULTS[$test_iter]} -- ${TESTKIT_TEST_SUITE[$test_iter]}"
+done
+echo
+
+# figure out how long things took.
+TIME_END="$(date +"%s")"
+duration="$(($TIME_END - $TIME_START))"
+# prepare to print duration in hours and minutes.
+minutes="$(($duration / 60))"
+hours="$(($minutes / 60))"
+# grab out the hours we calculated from the minutes sum.
+minutes="$(($minutes - $hours * 60))"
+if (($minutes < 10)); then minutes="0$minutes"; fi
+if (($hours < 10)); then hours="0$hours"; fi
+echo "Total testing duration: $hours:$minutes hh:mm ($duration seconds total)"
+
+if [ $FAIL_COUNT -ne 0 ]; then
+ echo "FAILURE: $FAIL_COUNT Tests Failed out of ${#TESTKIT_TEST_SUITE[*]} Tests."
+ exit 1
+else
+ echo "OK: All ${#TESTKIT_TEST_SUITE[*]} Tests Ran Successfully."
+ exit 0
+fi
+
+