Added tests for external dictionary invalidate query failover

This commit is contained in:
alesapin 2019-12-04 16:53:05 +03:00
parent a651a1e05b
commit 711fb5e667
2 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,5 @@
122
Table dictdb.dict_invalidate doesn\'t exist.
133

View File

@ -0,0 +1,80 @@
#!/usr/bin/env bash
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
. $CURDIR/../shell_config.sh
$CLICKHOUSE_CLIENT --query "DROP DATABASE IF EXISTS dictdb"
$CLICKHOUSE_CLIENT --query "CREATE DATABASE dictdb Engine = Ordinary"
$CLICKHOUSE_CLIENT --query "
CREATE TABLE dictdb.dict_invalidate
ENGINE = Memory AS
SELECT
122 as dummy,
toDateTime('2019-10-29 18:51:35') AS last_time
FROM system.one"
$CLICKHOUSE_CLIENT --query "
CREATE DICTIONARY dictdb.invalidate
(
dummy UInt64,
two UInt8 EXPRESSION dummy
)
PRIMARY KEY dummy
SOURCE(CLICKHOUSE(HOST 'localhost' PORT 9000 USER 'default' TABLE 'dict_invalidate' DB 'dictdb' INVALIDATE_QUERY 'select max(last_time) from dictdb.dict_invalidate'))
LIFETIME(MIN 0 MAX 1)
LAYOUT(FLAT())"
$CLICKHOUSE_CLIENT --query "SELECT dictGetUInt8('dictdb.invalidate', 'two', toUInt64(122))"
$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'"
$CLICKHOUSE_CLIENT --query "DROP TABLE dictdb.dict_invalidate"
function check_exception_detected()
{
query_result=`$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'" 2>&1`
while [ -z "$query_result" ]
do
query_result=`$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'" 2>&1`
sleep 0.1
done
}
export -f check_exception_detected;
timeout 10 bash -c check_exception_detected 2> /dev/null
$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'" 2>&1 | grep -Eo "Table dictdb.dict_invalidate .* exist."
$CLICKHOUSE_CLIENT --query "
CREATE TABLE dictdb.dict_invalidate
ENGINE = Memory AS
SELECT
133 as dummy,
toDateTime('2019-10-29 18:51:35') AS last_time
FROM system.one"
function check_exception_fixed()
{
query_result=`$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'" 2>&1`
while [ "$query_result" ]
do
query_result=`$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'" 2>&1`
sleep 0.1
done
}
export -f check_exception_fixed;
timeout 10 bash -c check_exception_fixed 2> /dev/null
$CLICKHOUSE_CLIENT --query "SELECT last_exception FROM system.dictionaries WHERE database = 'dictdb' AND name = 'invalidate'" 2>&1
$CLICKHOUSE_CLIENT --query "SELECT dictGetUInt8('dictdb.invalidate', 'two', toUInt64(133))"
$CLICKHOUSE_CLIENT --query "DROP DATABASE IF EXISTS dictdb"