ClickHouse/dbms/tests/clickhouse-test
2014-03-23 07:40:09 +04:00

75 lines
2.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Скрипт для тестирования запросов к ClickHouse.
# Из файлов *.sql в заданной директории, в алфавитном порядке, отправляются все запросы.
# Результат сравнивается с эталоном.
QUERIES_DIR="./queries"
CLIENT_PROGRAM="clickhouse-client"
COLOR_RESET="\033[0m"
COLOR_WHITE="\033[1;37m"
COLOR_FAIL="\033[1;31m"
COLOR_UNKNOWN="\033[1;30m"
COLOR_OK="\033[1;32m"
MSG_FAIL="${COLOR_WHITE}[ ${COLOR_FAIL}FAIL${COLOR_WHITE} ]${COLOR_RESET}"
MSG_UNKNOWN="${COLOR_WHITE}[ ${COLOR_UNKNOWN}UNKNOWN${COLOR_WHITE} ]${COLOR_RESET}"
MSG_OK="${COLOR_WHITE}[ ${COLOR_OK}OK${COLOR_WHITE} ]${COLOR_RESET}"
MSG_GENERATED="${COLOR_WHITE}[ ${COLOR_UNKNOWN}GENERATED${COLOR_WHITE} ]${COLOR_RESET}"
HAS_ERROR=0
for query_file in $(ls $QUERIES_DIR/*.sql)
do
test_name=$(basename -s .sql $query_file)
result_file=$QUERIES_DIR/$test_name.result
error_file=$QUERIES_DIR/$test_name.error
reference_file=$QUERIES_DIR/$test_name.reference
diff_file=$QUERIES_DIR/$test_name.diff
printf "%-30s" "$test_name: "
$CLIENT_PROGRAM < $query_file > $result_file 2> $error_file
ret_code=$?
if [ $ret_code -ne 0 ]; then
HAS_ERROR=1
echo -e "$MSG_FAIL - return code $ret_code"
if [ -s "$error_file" ]; then
cat $error_file
fi
# разорвано соединение с сервером
if grep -q -E "Connection refused|Attempt to read after eof" $error_file; then
exit 1;
fi
elif [ -s "$error_file" ]; then
HAS_ERROR=1
echo -e "$MSG_FAIL - having stderror:"
cat $error_file
elif [ ! -e "$reference_file" ]; then
# надо сгенерировать эталонный результат
if [ "$1" == "--generate" ]; then
cp $result_file $reference_file
echo -e "$MSG_GENERATED - no reference file"
else
echo -e "$MSG_UNKNOWN - no reference file (use --generate to create)"
fi
else
diff $reference_file $result_file > $diff_file
if [ -s "$diff_file" ]; then
HAS_ERROR=1
echo -e "$MSG_FAIL - result differs with reference:"
cat $diff_file
else
echo -e "$MSG_OK"
rm $error_file $result_file $diff_file
fi
fi
done
exit $HAS_ERROR