diff options
Diffstat (limited to 'binary_search_tool/full_bisect_test/main-bisect-test.sh')
-rwxr-xr-x | binary_search_tool/full_bisect_test/main-bisect-test.sh | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/binary_search_tool/full_bisect_test/main-bisect-test.sh b/binary_search_tool/full_bisect_test/main-bisect-test.sh new file mode 100755 index 00000000..af01c19c --- /dev/null +++ b/binary_search_tool/full_bisect_test/main-bisect-test.sh @@ -0,0 +1,104 @@ +#!/bin/bash +# +# This script is the heart of the bisection test. It assumes the good-objects +# and bad-objects directories have been created and populated. It runs three +# bisection tests: +# Test 1. use --file_args, and no pruning, which passes the object file list +# in a file, and stops as soon as it finds the first bad file. +# Test 2. do not use --file_args, and no pruning. The object files are passed +# directly on the command line; stop as soon as it finds the first +# bad file. +# Test 3. use --file_args and --prune. Pass the object file list in a file +# and run until it finds ALL the bad files (there are two of them). +# + +SAVE_DIR=`pwd` + +DIR=full_bisect_test + +# Make sure you are running this script from the parent directory. +if [[ ! -f "${DIR}/setup.sh" ]] ; then + echo "Cannot find ${DIR}/setup.sh. You are running this from the wrong directory." + echo "You need to run this from toolchain-utils/binary_search_tool ." + exit 1 +fi + +# Run Test 1. +${DIR}/setup.sh + +./binary_search_state.py --get_initial_items="${DIR}/get_initial_items.sh" \ + --switch_to_good="${DIR}/switch_to_good.sh" \ + --switch_to_bad="${DIR}/switch_to_bad.sh" \ + --test_setup_script="${DIR}/test_setup.sh" \ + --test_script="${DIR}/interactive_test.sh" \ + --file_args &> /tmp/full_bisect_test.log + +${DIR}/cleanup.sh + +grep "Search complete. First bad version: " /tmp/full_bisect_test.log &> /dev/null +test_status=$? + +if [[ ${test_status} -ne 0 ]] ; then + echo "Test 1 FAILED. See /tmp/full_bisect_test.log for details." + exit 1 +else + echo "Test 1 passed." +fi + +cd ${SAVE_DIR} + +# Run Test 2. +${DIR}/setup.sh + +./binary_search_state.py --get_initial_items="${DIR}/get_initial_items.sh" \ + --switch_to_good="${DIR}/switch_to_good.sh" \ + --switch_to_bad="${DIR}/switch_to_bad.sh" \ + --test_setup_script="${DIR}/test_setup.sh" \ + --test_script="${DIR}/interactive_test.sh" \ + &> /tmp/full_bisect_test.log + +${DIR}/cleanup.sh + +grep "Search complete. First bad version: " /tmp/full_bisect_test.log &> /dev/null +test_status=$? + +if [[ ${test_status} -ne 0 ]] ; then + echo "Test 2 FAILED. See /tmp/full_bisect_test.log for details." + exit 1 +else + echo "Test 2 passed." +fi + +cd ${SAVE_DIR} + +# Run Test 3. +${DIR}/setup.sh + +./binary_search_state.py --get_initial_items="${DIR}/get_initial_items.sh" \ + --switch_to_good="${DIR}/switch_to_good.sh" \ + --switch_to_bad="${DIR}/switch_to_bad.sh" \ + --test_setup_script="${DIR}/test_setup.sh" \ + --test_script="${DIR}/interactive_test.sh" \ + --file_args --prune &> /tmp/full_bisect_test.log + +${DIR}/cleanup.sh + +grep "Bad items are: " /tmp/full_bisect_test.log | grep inorder_norecurse.o &> /dev/null +test_status_1=$? + +grep "Bad items are: " /tmp/full_bisect_test.log | grep preorder_norecurse.o &> /dev/null +test_status_2=$? + +if [[ ${test_status_1} -ne 0 ]] ; then + echo "Test 3 FAILED. See /tmp/full_bisect_test.log for details." + exit 1 +elif [[ ${test_status_2} -ne 0 ]] ; then + echo "Test 3 FAILED. See /tmp/full_bisect_test.log for details." + exit 1 +else + echo "Test 3 passed." +fi + +# All tests passed! +exit 0 + |