Fix mysql84 pre-proxysql hook, basictests setup, and move flaky tests

- mysql84 pre-proxysql.bash: use docker exec for all ProxySQL admin
  commands (was using mysql -h127.0.0.1 which can't reach the container)

- basictests setup-infras.bash: use INSERT OR REPLACE when remapping
  hostgroups 1300/1301 -> 0/1 to avoid UNIQUE constraint violation
  when target hostgroups already have entries

- proxysql-tester.py: skip per-stage coverage generation when
  MULTI_GROUP=1 (was spawning 32 gcov processes on 35k .gcno files)

- Move test_cluster_sync-t and test_read_only_actions_offline_hard_servers-t
  to legacy-g5 pending investigation of cluster sync algorithm issues.
  Move reg_test_3765_ssl_pollout-t from legacy-g5 to legacy-g4.
v3.0-ci260323
Rene Cannao 2 weeks ago
parent 39840b5393
commit 1ebe4de9b7

@ -1636,7 +1636,10 @@ def main(argv):
log.debug(f"TEST_PY_TAP_SHUFFLE_LIMIT is disabled (current value: {shuffle_limit})")
# Options
coverage = int(os.environ.get('WITHGCOV', 0)) or int(os.environ.get('COVERAGE_MODE', 0))
# When MULTI_GROUP=1, coverage collection is handled centrally by
# run-multi-group.bash after all groups finish — skip it here.
multi_group = int(os.environ.get('MULTI_GROUP', 0))
coverage = (int(os.environ.get('WITHGCOV', 0)) or int(os.environ.get('COVERAGE_MODE', 0))) and not multi_group
for opt, arg in opts:
if opt in ('-h', "--help"):

@ -27,9 +27,13 @@ READER_HG=$(echo "${PAIR}" | awk '{print $2}')
echo ">>> Remapping hostgroup pair ${WRITER_HG}/${READER_HG} -> 0/1"
# Move servers: update hostgroup IDs in-place
${MYSQL_CMD} -e "UPDATE mysql_servers SET hostgroup_id = 0 WHERE hostgroup_id = ${WRITER_HG};"
${MYSQL_CMD} -e "UPDATE mysql_servers SET hostgroup_id = 1 WHERE hostgroup_id = ${READER_HG};"
# Move servers: copy into target hostgroups with INSERT OR REPLACE, then remove originals.
# Cannot UPDATE in-place because hostgroup 0/1 may already have entries with the same
# hostname:port, causing a UNIQUE constraint violation.
${MYSQL_CMD} -e "INSERT OR REPLACE INTO mysql_servers (hostgroup_id, hostname, port, gtid_port, status, weight, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment) SELECT 0, hostname, port, gtid_port, status, weight, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment FROM mysql_servers WHERE hostgroup_id = ${WRITER_HG};"
${MYSQL_CMD} -e "INSERT OR REPLACE INTO mysql_servers (hostgroup_id, hostname, port, gtid_port, status, weight, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment) SELECT 1, hostname, port, gtid_port, status, weight, compression, max_connections, max_replication_lag, use_ssl, max_latency_ms, comment FROM mysql_servers WHERE hostgroup_id = ${READER_HG};"
${MYSQL_CMD} -e "DELETE FROM mysql_servers WHERE hostgroup_id = ${WRITER_HG};"
${MYSQL_CMD} -e "DELETE FROM mysql_servers WHERE hostgroup_id = ${READER_HG};"
# Replace replication hostgroup mapping
${MYSQL_CMD} -e "DELETE FROM mysql_replication_hostgroups WHERE writer_hostgroup = ${WRITER_HG};"

@ -166,7 +166,7 @@
"reg_test_3606-mysql_warnings-t" : [ "legacy-g1","mysql84-g1","mysql-auto_increment_delay_multiplex=0-g1","mysql-multiplexing=false-g1","mysql-query_digests=0-g1","mysql-query_digests_keep_comment=1-g1" ],
"reg_test_3625-sqlite3_session_client_error_limit-t" : [ "legacy-g1","mysql84-g1","mysql-auto_increment_delay_multiplex=0-g1","mysql-multiplexing=false-g1","mysql-query_digests=0-g1","mysql-query_digests_keep_comment=1-g1" ],
"reg_test_3690-admin_large_pkts-t" : [ "legacy-g1","mysql84-g1","mysql-auto_increment_delay_multiplex=0-g1","mysql-multiplexing=false-g1","mysql-query_digests=0-g1","mysql-query_digests_keep_comment=1-g1" ],
"reg_test_3765_ssl_pollout-t" : [ "legacy-g5","mysql84-g2","mysql-auto_increment_delay_multiplex=0-g2","mysql-multiplexing=false-g2","mysql-query_digests=0-g2","mysql-query_digests_keep_comment=1-g2" ],
"reg_test_3765_ssl_pollout-t" : [ "legacy-g4","mysql84-g2","mysql-auto_increment_delay_multiplex=0-g2","mysql-multiplexing=false-g2","mysql-query_digests=0-g2","mysql-query_digests_keep_comment=1-g2" ],
"reg_test_3838-restapi_eintr-t" : [ "legacy-g2","mysql84-g2","mysql-auto_increment_delay_multiplex=0-g2","mysql-multiplexing=false-g2","mysql-query_digests=0-g2","mysql-query_digests_keep_comment=1-g2" ],
"reg_test_3847_admin_lock-t" : [ "legacy-g2","mysql84-g2","mysql-auto_increment_delay_multiplex=0-g2","mysql-multiplexing=false-g2","mysql-query_digests=0-g2","mysql-query_digests_keep_comment=1-g2" ],
"reg_test_3992_fast_forward_malformed_packet-mysqlsh-t" : [ "legacy-g2","mysql84-g2","mysql-auto_increment_delay_multiplex=0-g2","mysql-multiplexing=false-g2","mysql-query_digests=0-g2","mysql-query_digests_keep_comment=1-g2" ],
@ -229,7 +229,7 @@
"test_clickhouse_server_libmysql-t" : [ "legacy-clickhouse-g1","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ],
"test_client_limit_error-t" : [ "todo-g1" ],
"test_cluster1-t" : [ "legacy-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ],
"test_cluster_sync-t" : [ "legacy-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ],
"test_cluster_sync-t" : [ "legacy-g5","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ],
"test_cluster_sync_mysql_servers-t" : [ "legacy-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ],
"test_com_binlog_dump_enables_fast_forward-t" : [ "legacy-binlog-g1" ],
"test_com_register_slave_enables_fast_forward-t" : [ "legacy-g3","mysql84-g3","mysql-auto_increment_delay_multiplex=0-g3","mysql-multiplexing=false-g3","mysql-query_digests=0-g3","mysql-query_digests_keep_comment=1-g3" ],
@ -301,7 +301,7 @@
"test_query_rules_fast_routing_algorithm-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_query_rules_routing-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_query_timeout-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_read_only_actions_offline_hard_servers-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_read_only_actions_offline_hard_servers-t" : [ "legacy-g5","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_rw_binary_data-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_server_sess_status-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],
"test_session_status_flags-t" : [ "legacy-g4","mysql84-g4","mysql-auto_increment_delay_multiplex=0-g4","mysql-multiplexing=false-g4","mysql-query_digests=0-g4","mysql-query_digests_keep_comment=1-g4" ],

@ -3,20 +3,24 @@ set -e
set -o pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../.." && pwd)"
#
# change infra config
# inherits env from tester script
# mysql84 pre-proxysql hook
# Runs on the HOST after ProxySQL container is up, before test runner starts.
# All ProxySQL admin commands must go through docker exec.
#
export INFRA_ID="${INFRA_ID:-dev-$USER}"
PROXY_CONTAINER="proxysql.${INFRA_ID}"
MYSQL_CMD="docker exec ${PROXY_CONTAINER} mysql -uradmin -pradmin -h127.0.0.1 -P6032 -NB"
# Start ProxySQL Cluster if available
${REPO_ROOT}/test/infra/control/cluster_start.bash
${REPO_ROOT}/test/infra/control/cluster_init.bash
[[ $(mysql --skip-ssl-verify-server-cert -h 2>&1) =~ skip-ssl-verify-server-cert ]] || export SSLOPT=--skip-ssl-verify-server-cert
INFRA=infra-$(basename $(dirname "$0") | sed 's/-g[0-9]//' | sed 's/_.*//')
# cleanup
mysql ${SSLOPT} -h127.0.0.1 -P6032 -uadmin -padmin -e " \
${MYSQL_CMD} -e " \
DELETE FROM mysql_users; \
LOAD MYSQL USERS TO RUNTIME; \
SAVE MYSQL USERS TO DISK; \
@ -35,33 +39,28 @@ SAVE PGSQL USERS TO DISK; \
DELETE FROM pgsql_servers; \
LOAD PGSQL SERVERS TO RUNTIME; \
SAVE PGSQL SERVERS TO DISK; \
#DELETE FROM pgsql_query_rules; \
#LOAD PGSQL QUERY RULES TO RUNTIME; \
#SAVE PGSQL QUERY RULES TO DISK; \
" 2>&1 | grep -vP 'mysql: .?Warning'
"
# load environment for infra
source ${REPO_ROOT}/test/infra/${INFRA}/.env
# Start infra
# ${REPO_ROOT}/test/infra/control/infra-docker-hoster/docker-compose-init.bash
${REPO_ROOT}/test/infra/${INFRA}/docker-compose-init.bash
# create default users
for MYUSER in root user testuser sbtest1 sbtest2 sbtest3 sbtest4 ssluser ; do
# FIXME: using 0 as default hostgroup
mysql ${SSLOPT} -h127.0.0.1 -P6032 -uadmin -padmin -e " \
${MYSQL_CMD} -e " \
INSERT OR IGNORE INTO mysql_users (username,password,active,default_hostgroup,comment) values ('${MYUSER}','${MYUSER}',1,${WHG},'${INFRA}'); \
UPDATE mysql_users SET default_hostgroup=0,comment='${INFRA}' WHERE username='${MYUSER}'; \
" 2>&1 | grep -vP 'mysql: .?Warning'
"
done
mysql ${SSLOPT} -h127.0.0.1 -P6032 -uadmin -padmin -e " \
${MYSQL_CMD} -e " \
LOAD MYSQL USERS TO RUNTIME; \
SAVE MYSQL USERS TO DISK; \
" 2>&1 | grep -vP 'mysql: .?Warning'
"
# create default hostgroups
mysql ${SSLOPT} -h127.0.0.1 -P6032 -uadmin -padmin -e " \
${MYSQL_CMD} -e " \
DELETE FROM mysql_servers WHERE hostgroup_id IN (0,1,2,3); \
INSERT INTO mysql_servers (hostgroup_id,hostname,port,max_replication_lag,comment) VALUES (0,'mysql1.${INFRA}',3306,1,'mysql1.${INFRA}'); \
INSERT INTO mysql_servers (hostgroup_id,hostname,port,max_replication_lag,comment) VALUES (1,'mysql1.${INFRA}',3306,1,'mysql1.${INFRA}'); \
@ -69,10 +68,10 @@ INSERT INTO mysql_servers (hostgroup_id,hostname,port,max_replication_lag,commen
INSERT INTO mysql_servers (hostgroup_id,hostname,port,max_replication_lag,comment) VALUES (1,'mysql3.${INFRA}',3306,1,'mysql3.${INFRA}'); \
LOAD MYSQL SERVERS TO RUNTIME; \
SAVE MYSQL SERVERS TO DISK; \
" 2>&1 | grep -vP 'mysql: .?Warning'
"
# create default routing
mysql ${SSLOPT} -h127.0.0.1 -P6032 -uadmin -padmin -e " \
${MYSQL_CMD} -e " \
DELETE FROM mysql_query_rules WHERE destination_hostgroup IN (0,1,2,3,4); \
INSERT INTO mysql_query_rules (rule_id,active,username,match_digest,destination_hostgroup,apply) VALUES (1,1,'root','^SELECT.*FOR UPDATE',0,1); \
INSERT INTO mysql_query_rules (rule_id,active,username,match_digest,destination_hostgroup,apply) VALUES (2,1,'root','^SELECT',1,1); \
@ -80,7 +79,7 @@ INSERT INTO mysql_query_rules (rule_id,active,username,match_digest,destination_
INSERT INTO mysql_query_rules (rule_id,active,username,match_digest,destination_hostgroup,apply) VALUES (5,1,'testuser','^SELECT',1,1); \
LOAD MYSQL QUERY RULES TO RUNTIME; \
SAVE MYSQL QUERY RULES TO DISK; \
" 2>&1 | grep -vP 'mysql: .?Warning'
"
# wait for infra to stabilize
sleep 10

Loading…
Cancel
Save