mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 15:42:02 +00:00
Merge pull request #67779 from ClickHouse/fix-session-log-tests
Fix test `02833_concurrent_sessions`, Fix test `02835_drop_user_during_session`
This commit is contained in:
commit
ba3099015f
@ -137,7 +137,23 @@ ${CLICKHOUSE_CLIENT} -q "SELECT count(*) FROM system.session_log WHERE user IN (
|
||||
for user in "${ALL_USERS[@]}"; do
|
||||
${CLICKHOUSE_CLIENT} -q "DROP USER ${user}"
|
||||
echo "Corresponding LoginSuccess/Logout"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT COUNT(*) FROM (SELECT ${SESSION_LOG_MATCHING_FIELDS} FROM system.session_log WHERE user = '${user}' AND type = 'LoginSuccess' INTERSECT SELECT ${SESSION_LOG_MATCHING_FIELDS} FROM system.session_log WHERE user = '${user}' AND type = 'Logout')"
|
||||
|
||||
# The client can exit sooner than the server records its disconnection and closes the session.
|
||||
# When the client disconnects, two processes happen at the same time and are in the race condition:
|
||||
# - the client application exits and returns control to the shell;
|
||||
# - the server closes the session and records the logout event to the session log.
|
||||
# We cannot expect that after the control is returned to the shell, the server records the logout event.
|
||||
while true
|
||||
do
|
||||
[[ 3 -eq $(${CLICKHOUSE_CLIENT} -q "
|
||||
SELECT COUNT(*) FROM (
|
||||
SELECT ${SESSION_LOG_MATCHING_FIELDS} FROM system.session_log WHERE user = '${user}' AND type = 'LoginSuccess'
|
||||
INTERSECT
|
||||
SELECT ${SESSION_LOG_MATCHING_FIELDS} FROM system.session_log WHERE user = '${user}' AND type = 'Logout'
|
||||
)") ]] && echo 3 && break;
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
echo "LoginFailure"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT COUNT(*) FROM system.session_log WHERE user = '${user}' AND type = 'LoginFailure'"
|
||||
done
|
||||
|
@ -24,7 +24,7 @@ function http_session()
|
||||
${CLICKHOUSE_CURL} -sS "${CLICKHOUSE_URL}&user=${user}&password=pass" -d "SELECT COUNT(*) FROM system.numbers"
|
||||
}
|
||||
|
||||
function http_with_session_id_session()
|
||||
function http_with_session_id_session()
|
||||
{
|
||||
local user=$1
|
||||
${CLICKHOUSE_CURL} -sS "${CLICKHOUSE_URL}&user=${user}&password=pass" -d "SELECT COUNT(*) FROM system.numbers"
|
||||
@ -104,11 +104,27 @@ wait
|
||||
|
||||
${CLICKHOUSE_CLIENT} -q "SYSTEM FLUSH LOGS"
|
||||
|
||||
echo "port_0_sessions:"
|
||||
echo "port_0_sessions:"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT count(*) FROM system.session_log WHERE user = '${TEST_USER}' AND client_port = 0"
|
||||
echo "address_0_sessions:"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT count(*) FROM system.session_log WHERE user = '${TEST_USER}' AND client_address = toIPv6('::')"
|
||||
echo "Corresponding LoginSuccess/Logout"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT COUNT(*) FROM (SELECT ${SESSION_LOG_MATCHING_FIELDS} FROM system.session_log WHERE user = '${TEST_USER}' AND type = 'LoginSuccess' INTERSECT SELECT ${SESSION_LOG_MATCHING_FIELDS}, FROM system.session_log WHERE user = '${TEST_USER}' AND type = 'Logout')"
|
||||
echo "Corresponding LoginSuccess/Logout"
|
||||
|
||||
# The client can exit sooner than the server records its disconnection and closes the session.
|
||||
# When the client disconnects, two processes happen at the same time and are in the race condition:
|
||||
# - the client application exits and returns control to the shell;
|
||||
# - the server closes the session and records the logout event to the session log.
|
||||
# We cannot expect that after the control is returned to the shell, the server records the logout event.
|
||||
while true
|
||||
do
|
||||
[[ 9 -eq $(${CLICKHOUSE_CLIENT} -q "
|
||||
SELECT COUNT(*) FROM (
|
||||
SELECT ${SESSION_LOG_MATCHING_FIELDS} FROM system.session_log WHERE user = '${TEST_USER}' AND type = 'LoginSuccess'
|
||||
INTERSECT
|
||||
SELECT ${SESSION_LOG_MATCHING_FIELDS}, FROM system.session_log WHERE user = '${TEST_USER}' AND type = 'Logout'
|
||||
)") ]] && echo 9 && break;
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
echo "LoginFailure"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT COUNT(*) FROM system.session_log WHERE user = '${TEST_USER}' AND type = 'LoginFailure'"
|
||||
${CLICKHOUSE_CLIENT} -q "SELECT COUNT(*) FROM system.session_log WHERE user = '${TEST_USER}' AND type = 'LoginFailure'"
|
||||
|
Loading…
Reference in New Issue
Block a user