diff --git a/test-scripts/run-tests-on-robot.sh b/test-scripts/run-tests-on-robot.sh
new file mode 100755
index 0000000..4785dd5
--- /dev/null
+++ b/test-scripts/run-tests-on-robot.sh
@@ -0,0 +1,200 @@
+#!/usr/bin/env bash
+#*----------------------------------------------------------------------------*#
+#* Copyright (c) FIRST 2014. All Rights Reserved.							  *#
+#* Open Source Software - may be modified and shared by FRC teams. The code   *#
+#* must be accompanied by the FIRST BSD license file in the root directory of *#
+#* the project.															      *#
+#*----------------------------------------------------------------------------*#
+
+# This file is intended to be run in the DEFAULT_TEST_DIR on the roboRIO.
+# Do not attempt to run this file on your local system.
+# There is one file (delploy-and-run-test-on-robot.sh) that is designed to
+# deploy this file allong with the compiled tests for you.
+
+# Configurable variables
+source config.sh
+
+DEFAULT_TEST_DIR=${DEFAULT_DESTINATION_DIR}
+DEFAULT_PATH_TO_JRE=/usr/local/frc/JRE/bin/java
+
+usage="$(basename "$0") [-h] (java|cpp) name [-d test_dir] [-m] [-A] [arg] [arg]...
+A script designed to run the integration tests.
+This script should only be run on the roborio.
+Where:
+    -h    Show this help text
+    name  The name of the user trying to run the tests (used for driver station)
+    -d    The directory where the tests have been placed.
+          This is done to prevent overwriting an already running program
+          in the case where another user already has the driver station mutex.
+          This scrip will automatically move the test into the ${DEFAULT_TEST_DIR}
+          directory when the driver station mutex is released.
+          Default: Assumes the test is in the same directory as this scrip.
+    -m    The driver station mutex will be handled manually.
+    -A    Do not use the default arguments for the given language.
+    arg   The arguments to be passed to test."
+
+mutexTaken=false
+driverStationEnabled=false
+# This function should run even if the script exits abnormally
+function finish {
+	if [ "$driverStationEnabled" == true ]; then
+		/usr/local/frc/bin/teststand ds --name="${NAME}" disable
+		driverStationEnabled=false
+	fi
+	if [ "$mutexTaken" == true ]; then
+		/usr/local/frc/bin/teststand give --name="${NAME}"
+		mutexTaken=false
+	fi
+}
+trap finish EXIT SIGINT
+
+# This function should be run asynchronysly to enable the tests 10
+# seconds after they have been run.
+function enableIn10Seconds {
+	/usr/local/frc/bin/teststand ds --name="${NAME}" disable
+	driverStationEnabled=true
+	sleep 10
+	/usr/local/frc/bin/teststand ds --name="${NAME}" enable
+}
+
+# Are you trying to run this program on a platform other than the roboRIO?
+if [[ ! -e "${DEFAULT_TEST_DIR}" ]]; then
+	printf "Failed to find %s\nAre you trying to run this file on your local computer?\n" "${DEFAULT_TEST_DIR}"
+	printf "This script should only be run on the roboRIO.\n\n"
+	echo "$usage"
+	exit 1
+fi
+
+LANGUAGE=none
+TEST_FILE=none
+NAME=$2
+TEST_DIR="$DEFAULT_TEST_DIR"
+# Begin searching for options from the third paramater on
+PARAM_ARGS=${@:3}
+# Where the test arguments start
+TEST_RUN_ARGS=${@:3}
+RUN_WITH_DEFAULT_ARGS=true
+DEFAULT_ARGS=""
+MUTEX_OVERRIDE=false
+
+# Determine the language that we are attempting to run
+if [[ "$1" = java ]]; then
+	LANGUAGE=$1
+	TEST_FILE=$DEFAULT_JAVA_TEST_NAME
+	DEFAULT_ARGS=$DEFAULT_JAVA_TEST_ARGS
+elif [[ "$1" = cpp ]]; then
+	LANGUAGE=$1
+	TEST_FILE=$DEFAULT_CPP_TEST_NAME
+	DEFAULT_ARGS=$DEFAULT_CPP_TEST_ARGS
+elif [[ "$1" = "-h" ]]; then
+	#If the first argument is the help option
+	#Allow it to be searhced for in getopts
+	PARAM_ARGS=${@}
+else
+	printf "Invalid language selection: %s\n\n" "$1" >&2
+	echo "$usage" >&2
+	exit 1
+fi
+
+PARAM_COUNTER=2
+printf "Param Args ${PARAM_ARGS}\n"
+
+# Check for optional paramaters
+while  getopts ':hmd:A' option $PARAM_ARGS ; do
+	case "$option" in
+	h)
+		# Print the help message
+		printf "Usage:\n"
+		echo "$usage"
+		exit
+		;;
+	A)
+		# Remove the default arguments
+		RUN_WITH_DEFAULT_ARGS=false
+		PARAM_COUNTER=$[$PARAM_COUNTER +1]
+		;;
+	m)
+		MUTEX_OVERRIDE=true
+		PARAM_COUNTER=$[$PARAM_COUNTER +1]
+		;;
+	d)
+		TEST_DIR=$OPTARG
+		# Since we are selecting the directory the run args start from the 5th argument
+		PARAM_COUNTER=$[$PARAM_COUNTER +2]
+		;;
+	?)
+		# When an unknown param is found then we are done so break
+		break
+		;;
+	esac
+done
+
+TEST_RUN_ARGS=${@:$[$PARAM_COUNTER +1]}
+
+if [[ "$RUN_WITH_DEFAULT_ARGS" == true ]]; then
+	TEST_RUN_ARGS="${DEFAULT_ARGS} ${TEST_RUN_ARGS}"
+fi
+
+# Make sure at least two paramaters are passed or four if running with -d option
+if [[ $# -lt $PARAM_COUNTER ]]; then
+	printf "Invalid arg count. Should be %s, was %s.\n" "${PARAM_COUNTER}" "$#"
+	echo "$usage"
+	exit 1
+fi
+
+# If the mutex has been retrived a higher level in the tree
+if [ "$MUTEX_OVERRIDE" == false ]; then
+	# Attempt to take the mutex for the driver station
+	mutexTaken=true
+	/usr/local/frc/bin/teststand take --name="${NAME}"
+else
+	printf "Override driver station control enabled.\n"
+fi
+
+# Kill all running robot programs
+killall java FRCUserProgram
+
+# Once we have the mutex no other tests are running
+# If we are running with the -d argument move the test to the DEFAULT_TEST_DIR
+if [[ ! -e "${TEST_DIR}/${TEST_FILE}" ]]; then
+	printf "Failed to find %s.\nDid you copy the test file correctly?\n" "${TEST_DIR}/${TEST_FILE}"
+	echo "$usage"
+	exit 1
+elif [[ $TEST_DIR != "$DEFAULT_TEST_DIR" ]]; then
+	mv "${TEST_DIR}/${TEST_FILE}" "${DEFAULT_TEST_DIR}"
+fi
+
+# Make sure the excecutable file has permission to run
+
+# Setup the driver station to enable automatically in 10 seconds without waiting for the function to excecute.
+enableIn10Seconds&
+
+# Get the serial number and FPGADeviceCode for this rio
+export serialnum=`/sbin/fw_printenv -n serial#`
+export eval `/sbin/fw_printenv DeviceCode FPGADeviceCode DeviceDesc TargetClass`
+
+# Store the run command for the language
+RUN_COMMAND=none
+if [[ ${LANGUAGE} = java ]]; then
+	chmod a+x ${DEFAULT_JAVA_TEST_NAME}
+	RUN_COMMAND="env LD_LIBRARY_PATH=/opt/GenICam_v3_0_NI/bin/Linux32_ARM/:/usr/local/frc/lib ${DEFAULT_PATH_TO_JRE} -ea -jar ${DEFAULT_JAVA_TEST_NAME} ${TEST_RUN_ARGS}"
+elif [[ ${LANGUAGE} = cpp ]]; then
+	chmod a+x ${DEFAULT_CPP_TEST_NAME}
+	RUN_COMMAND="./${DEFAULT_CPP_TEST_NAME} ${TEST_RUN_ARGS}"
+fi
+
+printf "Running: %s\n\n" "${RUN_COMMAND}"
+COREDUMP_DIR=${DEFAULT_DESTINATION_TEST_RESULTS_DIR}/coredump
+mkdir -p ${COREDUMP_DIR}
+CORE_LOCATION=${COREDUMP_DIR}/core
+echo ${CORE_LOCATION} > /proc/sys/kernel/core_pattern
+ulimit -c unlimited
+eval ${RUN_COMMAND}
+if [[ $? -gt 127 && -e ${CORE_LOCATION} ]]; then
+	mv ${CORE_LOCATION} ${COREDUMP_DIR}/core.${LANGUAGE}
+	if [[ ${LANGUAGE} = java ]]; then
+		cp -p ${DEFAULT_JAVA_TEST_NAME} ${COREDUMP_DIR}/
+	elif [[ ${LANGUAGE} = cpp ]]; then
+		cp -p ${DEFAULT_CPP_TEST_NAME} ${COREDUMP_DIR}/
+	fi
+fi
