test(emqx_auth_redis): add test cases for sentinel
This commit is contained in:
parent
fe96be108c
commit
66ebcfa301
|
@ -19,7 +19,7 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ../test/emqx_auth_redis_SUITE_data/certs:/tls
|
- ../test/emqx_auth_redis_SUITE_data/certs:/tls
|
||||||
- ./redis/:/data/conf
|
- ./redis/:/data/conf
|
||||||
command: bash -c "/bin/bash /data/conf/redis.sh -t && while true; do echo 1; sleep 1; done"
|
command: bash -c "/bin/bash /data/conf/redis.sh --node cluster --tls-enabled && while true; do echo 1; sleep 1; done"
|
||||||
networks:
|
networks:
|
||||||
app_net:
|
app_net:
|
||||||
# Assign a public address. Erlang container cannot find cluster nodes by network-scoped alias (redis_cluster).
|
# Assign a public address. Erlang container cannot find cluster nodes by network-scoped alias (redis_cluster).
|
||||||
|
|
|
@ -18,7 +18,7 @@ services:
|
||||||
container_name: redis-cluster
|
container_name: redis-cluster
|
||||||
volumes:
|
volumes:
|
||||||
- ./redis/:/data/conf
|
- ./redis/:/data/conf
|
||||||
command: bash -c "/bin/bash /data/conf/redis.sh && while true; do echo 1; sleep 1; done"
|
command: bash -c "/bin/bash /data/conf/redis.sh --node cluster && while true; do echo 1; sleep 1; done"
|
||||||
networks:
|
networks:
|
||||||
app_net:
|
app_net:
|
||||||
# Assign a public address. Erlang container cannot find cluster nodes by network-scoped alias (redis_cluster).
|
# Assign a public address. Erlang container cannot find cluster nodes by network-scoped alias (redis_cluster).
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
version: '2.4'
|
||||||
|
# network configuration is limited in version 3
|
||||||
|
# https://github.com/docker/compose/issues/4958
|
||||||
|
|
||||||
|
services:
|
||||||
|
erlang:
|
||||||
|
image: erlang:22.3
|
||||||
|
volumes:
|
||||||
|
- ../:/emqx_auth_redis
|
||||||
|
networks:
|
||||||
|
- app_net
|
||||||
|
depends_on:
|
||||||
|
- redis_cluster
|
||||||
|
tty: true
|
||||||
|
|
||||||
|
redis_cluster:
|
||||||
|
image: redis:${REDIS_TAG}
|
||||||
|
container_name: redis-cluster
|
||||||
|
volumes:
|
||||||
|
- ./redis/:/data/conf
|
||||||
|
command: bash -c "/bin/bash /data/conf/redis.sh --node sentinel && while true; do echo 1; sleep 1; done"
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
# Assign a public address. Erlang container cannot find cluster nodes by network-scoped alias (redis_cluster).
|
||||||
|
ipv4_address: 172.16.239.10
|
||||||
|
ipv6_address: 2001:3200:3200::20
|
||||||
|
|
||||||
|
networks:
|
||||||
|
app_net:
|
||||||
|
driver: bridge
|
||||||
|
enable_ipv6: true
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 172.16.239.0/24
|
||||||
|
gateway: 172.16.239.1
|
||||||
|
- subnet: 2001:3200:3200::/64
|
||||||
|
gateway: 2001:3200:3200::1
|
|
@ -0,0 +1,5 @@
|
||||||
|
daemonize yes
|
||||||
|
bind 0.0.0.0 ::
|
||||||
|
tls-cert-file /tls/redis.crt
|
||||||
|
tls-key-file /tls/redis.key
|
||||||
|
tls-ca-cert-file /tls/ca.crt
|
|
@ -1,3 +1,2 @@
|
||||||
cluster-enabled yes
|
daemonize yes
|
||||||
cluster-node-timeout 10000
|
|
||||||
bind 0.0.0.0 ::
|
bind 0.0.0.0 ::
|
|
@ -1,12 +1,24 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
tls=false;
|
node=single
|
||||||
while getopts t OPT
|
tls=false
|
||||||
|
while [[ $# -gt 0 ]]
|
||||||
do
|
do
|
||||||
case $OPT in
|
key="$1"
|
||||||
t) tls=true
|
|
||||||
|
case $key in
|
||||||
|
-n|--node)
|
||||||
|
node="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
;;
|
;;
|
||||||
\?) exit
|
-t|--tls-enabled)
|
||||||
|
tls="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shift # past argument
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -19,28 +31,27 @@ rm -f \
|
||||||
/data/conf/nodes.7001.conf \
|
/data/conf/nodes.7001.conf \
|
||||||
/data/conf/nodes.7002.conf ;
|
/data/conf/nodes.7002.conf ;
|
||||||
|
|
||||||
|
if [ ${node} = "cluster" ] ; then
|
||||||
if $tls ; then
|
if $tls ; then
|
||||||
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf --daemonize yes \
|
redis-server /data/conf/redis-tls.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf \
|
||||||
--tls-port 8000 \
|
--tls-port 8000 --cluster-enabled yes ;
|
||||||
--tls-cert-file /tls/redis.crt \
|
redis-server /data/conf/redis-tls.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf \
|
||||||
--tls-key-file /tls/redis.key \
|
--tls-port 8001 --cluster-enabled yes;
|
||||||
--tls-ca-cert-file /tls/ca.crt
|
redis-server /data/conf/redis-tls.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf \
|
||||||
redis-server /data/conf/redis.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf --daemonize yes \
|
--tls-port 8002 --cluster-enabled yes;
|
||||||
--tls-port 8001 \
|
|
||||||
--tls-cert-file /tls/redis.crt \
|
|
||||||
--tls-key-file /tls/redis.key \
|
|
||||||
--tls-ca-cert-file /tls/ca.crt
|
|
||||||
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf --daemonize yes \
|
|
||||||
--tls-port 8002 \
|
|
||||||
--tls-cert-file /tls/redis.crt \
|
|
||||||
--tls-key-file /tls/redis.key \
|
|
||||||
--tls-ca-cert-file /tls/ca.crt
|
|
||||||
else
|
else
|
||||||
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf --daemonize yes ;
|
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf --cluster-enabled yes;
|
||||||
redis-server /data/conf/redis.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf --daemonize yes ;
|
redis-server /data/conf/redis.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf --cluster-enabled yes;
|
||||||
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf --daemonize yes ;
|
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf --cluster-enabled yes;
|
||||||
|
fi
|
||||||
|
elif [ ${node} = "sentinel" ] ; then
|
||||||
|
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf \
|
||||||
|
--cluster-enabled no;
|
||||||
|
redis-server /data/conf/redis.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf \
|
||||||
|
--cluster-enabled no --slaveof 172.16.239.10 7000;
|
||||||
|
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf \
|
||||||
|
--cluster-enabled no --slaveof 172.16.239.10 7000;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
REDIS_LOAD_FLG=true;
|
REDIS_LOAD_FLG=true;
|
||||||
|
|
||||||
while $REDIS_LOAD_FLG;
|
while $REDIS_LOAD_FLG;
|
||||||
|
@ -64,7 +75,12 @@ do
|
||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
fi
|
fi
|
||||||
|
if [ ${node} = "cluster" ] ; then
|
||||||
yes "yes" | redis-cli --cluster create 172.16.239.10:7000 172.16.239.10:7001 172.16.239.10:7002;
|
yes "yes" | redis-cli --cluster create 172.16.239.10:7000 172.16.239.10:7001 172.16.239.10:7002;
|
||||||
|
elif [ ${node} = "sentinel" ] ; then
|
||||||
|
cp /data/conf/sentinel.conf /_sentinel.conf
|
||||||
|
redis-server /_sentinel.conf --sentinel;
|
||||||
|
fi
|
||||||
REDIS_LOAD_FLG=false;
|
REDIS_LOAD_FLG=false;
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
port 26379
|
||||||
|
dir /tmp
|
||||||
|
sentinel monitor mymaster 172.16.239.10 7000 1
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
-module(emqx_auth_redis_SUITE).
|
-module(emqx_auth_redis_SUITE).
|
||||||
|
|
||||||
-compile(nowarn_export_all).
|
|
||||||
-compile(export_all).
|
-compile(export_all).
|
||||||
|
|
||||||
-include_lib("emqx/include/emqx.hrl").
|
-include_lib("emqx/include/emqx.hrl").
|
||||||
|
@ -183,9 +182,9 @@ reload(Config) when is_list(Config) ->
|
||||||
q(Cmd) ->
|
q(Cmd) ->
|
||||||
{ok, Server} = application:get_env(?APP, server),
|
{ok, Server} = application:get_env(?APP, server),
|
||||||
case proplists:get_value(type, Server) of
|
case proplists:get_value(type, Server) of
|
||||||
single ->
|
|
||||||
{ok, Connection} = ?POOL(?APP),
|
|
||||||
eredis:q(Connection, Cmd);
|
|
||||||
cluster ->
|
cluster ->
|
||||||
eredis_cluster:q(emqx_auth_redis, Cmd)
|
eredis_cluster:q(emqx_auth_redis, Cmd);
|
||||||
|
_ ->
|
||||||
|
{ok, Connection} = ?POOL(?APP),
|
||||||
|
eredis:q(Connection, Cmd)
|
||||||
end.
|
end.
|
Loading…
Reference in New Issue