@ -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