Spaces:
Running
Running
File size: 6,389 Bytes
b110593 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
#!/bin/bash
set -eou pipefail
function main() {
# This script runs all non-benchmark tests if no CMD switch is given and the respective tests otherwise.
run_all_tests=true
run_acceptance_tests=false
run_module_tests=false
run_unit_and_integration_tests=false
run_unit_tests=false
run_integration_tests=false
run_benchmark=false
run_module_only_backup_tests=false
run_module_except_backup_tests=false
while [[ "$#" -gt 0 ]]; do
case $1 in
--unit-only|-u) run_all_tests=false; run_unit_tests=true;;
--unit-and-integration-only|-ui) run_all_tests=false; run_unit_and_integration_tests=true;;
--integration-only|-i) run_all_tests=false; run_integration_tests=true;;
--acceptance-only|--e2e-only|-a) run_all_tests=false; run_acceptance_tests=true ;;
--acceptance-module-tests-only|--modules-only|-m) run_all_tests=false; run_module_tests=true; run_module_only_backup_tests=true; run_module_except_backup_tests=true;;
--acceptance-module-tests-only-backup|--modules-backup-only|-mob) run_all_tests=false; run_module_tests=true; run_module_only_backup_tests=true;;
--acceptance-module-tests-except-backup|--modules-except-backup|-meb) run_all_tests=false; run_module_tests=true; run_module_except_backup_tests=true; echo $run_module_except_backup_tests ;;
--benchmark-only|-b) run_all_tests=false; run_benchmark=true;;
--help|-h) printf '%s\n' \
"Options:"\
"--unit-only | -u"\
"--unit-and-integration-only | -ui"\
"--integration-only | -i"\
"--acceptance-only | -a"\
"--acceptance-module-tests-only | --modules-only | -m"\
"--acceptance-module-tests-only-backup | --modules-backup-only | -mob"\
"--acceptance-module-tests-except-backup | --modules-except-backup | -meb"\
"--benchmark-only | -b" \
"--help | -h"; exit 1;;
*) echo "Unknown parameter passed: $1"; exit 1 ;;
esac
shift
done
# Jump to root directory
cd "$( dirname "${BASH_SOURCE[0]}" )"/..
echo "INFO: In directory $PWD"
echo "INFO: This script will suppress most output, unless a command ultimately fails"
echo " Then it will print the output of the failed command."
echo_green "Prepare workspace..."
# Remove data directory in case of previous runs
rm -rf data
echo "Done!"
if $run_unit_and_integration_tests || $run_unit_tests || $run_all_tests
then
echo_green "Run all unit tests..."
run_unit_tests "$@"
echo_green "Unit tests successful"
fi
if $run_unit_and_integration_tests || $run_integration_tests || $run_all_tests
then
echo_green "Run integration tests..."
run_integration_tests "$@"
echo_green "Integration tests successful"
fi
if $run_acceptance_tests || $run_all_tests || $run_benchmark
then
echo "Start docker container needed for acceptance and/or benchmark test"
echo_green "Stop any running docker-compose containers..."
suppress_on_success docker compose -f docker-compose-test.yml down --remove-orphans
echo_green "Start up weaviate and backing dbs in docker-compose..."
echo "This could take some time..."
tools/test/run_ci_server.sh
# echo_green "Import required schema and test fixtures..."
# # Note: It's not best practice to do this as part of the test script
# # It would be better if each test independently prepared (and also
# # cleaned up) the test fixtures it needs, but one step at a time ;)
# suppress_on_success import_test_fixtures
if $run_benchmark
then
echo_green "Run performance tracker..."
./test/benchmark/run_performance_tracker.sh
fi
if $run_acceptance_tests || $run_all_tests
then
echo_green "Run acceptance tests..."
run_acceptance_tests "$@"
fi
fi
if $run_module_tests; then
local module_test_image=weaviate:module-tests
echo_green "Running module acceptance tests..."
echo_green "Stop any running docker-compose containers..."
suppress_on_success docker compose -f docker-compose-test.yml down --remove-orphans
echo_green "Building weaviate image for module acceptance tests..."
echo "This could take some time..."
GIT_HASH=$(git rev-parse --short HEAD)
docker build --build-arg GITHASH="$GIT_HASH" -t $module_test_image .
export "TEST_WEAVIATE_IMAGE"=$module_test_image
echo_green "Weaviate image successfully built, run module tests..."
run_module_tests "$@"
echo_green "Module acceptance tests successful"
fi
echo "Done!"
}
function run_unit_tests() {
if [[ "$*" == *--acceptance-only* ]]; then
echo "Skipping unit test"
return
fi
go test -race -coverprofile=coverage-unit.txt -covermode=atomic -count 1 $(go list ./... | grep -v 'test/acceptance' | grep -v 'test/modules') | grep -v '\[no test files\]'
}
function run_integration_tests() {
if [[ "$*" == *--acceptance-only* ]]; then
echo "Skipping integration test"
return
fi
./test/integration/run.sh --include-slow
}
function run_acceptance_tests() {
./test/acceptance/run.sh --include-slow
}
function run_module_only_backup_tests() {
for pkg in $(go list ./... | grep 'test/modules' | grep 'test/modules/backup'); do
if ! go test -count 1 -race "$pkg"; then
echo "Test for $pkg failed" >&2
return 1
fi
done
}
function run_module_except_backup_tests() {
for pkg in $(go list ./... | grep 'test/modules' | grep -v 'test/modules/backup'); do
if ! go test -count 1 -race "$pkg"; then
echo "Test for $pkg failed" >&2
return 1
fi
done
}
function run_module_tests() {
if $run_module_only_backup_tests; then
run_module_only_backup_tests "$@"
fi
if $run_module_except_backup_tests; then
run_module_except_backup_tests "$@"
fi
}
suppress_on_success() {
out="$("${@}" 2>&1)" || { echo_red "FAILED!"; echo "$out"; return 1; }
echo "Done!"
}
function echo_green() {
green='\033[0;32m'
nc='\033[0m'
echo -e "${green}${*}${nc}"
}
function echo_red() {
red='\033[0;31m'
nc='\033[0m'
echo -e "${red}${*}${nc}"
}
main "$@"
|