mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
tests: add a test for clickhouse-client autocompletion
v2: Increase timeout for 01676_clickhouse_client_autocomplete
https://github.com/ClickHouse/ClickHouse/pull/19584#discussion_r565727175
v3: Disable 01676_clickhouse_client_autocomplete in unbundled build (arcadia)
autocomplete does not have to work fully unbundled build (since it lack
of replxx).
Similar to bd523a0aff
v4: set expect timeout back to 1 and increase total timeout to 20 sec
v4: set expect timeout back to 3 and increase total timeout to 22 (3*X+1) sec
This commit is contained in:
parent
86f80105cb
commit
585874bf46
@ -87,6 +87,11 @@ Suggest::Suggest()
|
||||
|
||||
void Suggest::loadImpl(Connection & connection, const ConnectionTimeouts & timeouts, size_t suggestion_limit)
|
||||
{
|
||||
///
|
||||
/// NOTE: Once you will update the completion list,
|
||||
/// do not forget to update 01676_clickhouse_client_autocomplete.sh
|
||||
///
|
||||
|
||||
std::stringstream query; // STYLE_CHECK_ALLOW_STD_STRING_STREAM
|
||||
query << "SELECT DISTINCT arrayJoin(extractAll(name, '[\\\\w_]{2,}')) AS res FROM ("
|
||||
"SELECT name FROM system.functions"
|
||||
|
114
tests/queries/0_stateless/01676_clickhouse_client_autocomplete.sh
Executable file
114
tests/queries/0_stateless/01676_clickhouse_client_autocomplete.sh
Executable file
@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
# shellcheck source=../shell_config.sh
|
||||
. "$CURDIR"/../shell_config.sh
|
||||
|
||||
function test_completion_word()
|
||||
{
|
||||
local w=$1 && shift
|
||||
|
||||
local w_len=${#w}
|
||||
local compword_begin=${w:0:$((w_len-3))}
|
||||
local compword_end=${w:$((w_len-3))}
|
||||
|
||||
# NOTE: here and below you should escape variables of the expect.
|
||||
timeout 22s expect << EOF
|
||||
log_user 0
|
||||
set timeout 3
|
||||
match_max 100000
|
||||
# A default timeout action is to do nothing, change it to fail
|
||||
expect_after {
|
||||
timeout {
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
spawn bash -c "$CLICKHOUSE_CLIENT_BINARY $CLICKHOUSE_CLIENT_OPT"
|
||||
expect ":) "
|
||||
|
||||
# Make a query
|
||||
send -- "SET $compword_begin"
|
||||
expect "SET $compword_begin"
|
||||
|
||||
# Wait for suggestions to load, they are loaded in background
|
||||
set is_done 0
|
||||
while {\$is_done == 0} {
|
||||
send -- "\\t"
|
||||
expect {
|
||||
"$compword_begin$compword_end" {
|
||||
set is_done 1
|
||||
}
|
||||
default {
|
||||
sleep 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
send -- "\\3\\4"
|
||||
expect eof
|
||||
EOF
|
||||
}
|
||||
|
||||
# last 3 bytes will be completed,
|
||||
# so take this in mind when you will update the list.
|
||||
compwords_positive=(
|
||||
# system.functions
|
||||
concatAssumeInjective
|
||||
# system.table_engines
|
||||
ReplacingMergeTree
|
||||
# system.formats
|
||||
JSONEachRow
|
||||
# system.table_functions
|
||||
clusterAllReplicas
|
||||
# system.data_type_families
|
||||
SimpleAggregateFunction
|
||||
# system.merge_tree_settings
|
||||
write_ahead_log_interval_ms_to_fsync
|
||||
# system.settings
|
||||
max_concurrent_queries_for_all_users
|
||||
# system.clusters
|
||||
test_shard_localhost
|
||||
# system.errors, also it is very rare to cover system_events_show_zero_values
|
||||
CONDITIONAL_TREE_PARENT_NOT_FOUND
|
||||
# system.events, also it is very rare to cover system_events_show_zero_values
|
||||
WriteBufferFromFileDescriptorWriteFailed
|
||||
# system.asynchronous_metrics, also this metric has zero value
|
||||
#
|
||||
# NOTE: that there is no ability to complete metrics like
|
||||
# jemalloc.background_thread.num_runs, due to "." is used as a word breaker
|
||||
# (and this cannot be changed -- db.table)
|
||||
ReplicasMaxAbsoluteDelay
|
||||
# system.metrics
|
||||
PartsPreCommitted
|
||||
# system.macros
|
||||
default_path_test
|
||||
# system.storage_policies, egh not uniq
|
||||
default
|
||||
# system.aggregate_function_combinators
|
||||
uniqCombined64ForEach
|
||||
|
||||
# FIXME: one may add separate case for suggestion_limit
|
||||
# system.databases
|
||||
system
|
||||
# system.tables
|
||||
aggregate_function_combinators
|
||||
# system.columns
|
||||
primary_key_bytes_in_memory_allocated
|
||||
# system.dictionaries
|
||||
# FIXME: none
|
||||
)
|
||||
for w in "${compwords_positive[@]}"; do
|
||||
test_completion_word "$w" || echo "[FAIL] $w (positive)"
|
||||
done
|
||||
|
||||
# One negative is enough
|
||||
compwords_negative=(
|
||||
# system.clusters
|
||||
test_shard_localhost_no_such_cluster
|
||||
)
|
||||
for w in "${compwords_negative[@]}"; do
|
||||
test_completion_word "$w" && echo "[FAIL] $w (negative)"
|
||||
done
|
||||
|
||||
exit 0
|
@ -198,3 +198,4 @@
|
||||
01659_test_base64Decode_mysql_compatibility
|
||||
01675_data_type_coroutine
|
||||
01671_aggregate_function_group_bitmap_data
|
||||
01676_clickhouse_client_autocomplete
|
||||
|
@ -90,6 +90,7 @@
|
||||
"01300_client_save_history_when_terminated",
|
||||
"orc_output",
|
||||
"01370_client_autocomplete_word_break_characters",
|
||||
"01676_clickhouse_client_autocomplete",
|
||||
"01193_metadata_loading",
|
||||
"01455_time_zones"
|
||||
],
|
||||
|
Loading…
Reference in New Issue
Block a user