test(emqx_auth_redis): add test cases for sentinel
This commit is contained in:
parent
fe96be108c
commit
66ebcfa301
|
@ -19,7 +19,7 @@ services:
|
|||
volumes:
|
||||
- ../test/emqx_auth_redis_SUITE_data/certs:/tls
|
||||
- ./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:
|
||||
app_net:
|
||||
# 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
|
||||
volumes:
|
||||
- ./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:
|
||||
app_net:
|
||||
# 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
|
||||
cluster-node-timeout 10000
|
||||
bind 0.0.0.0 ::
|
||||
daemonize yes
|
||||
bind 0.0.0.0 ::
|
|
@ -1,14 +1,26 @@
|
|||
#!/bin/bash
|
||||
|
||||
tls=false;
|
||||
while getopts t OPT
|
||||
node=single
|
||||
tls=false
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case $OPT in
|
||||
t) tls=true
|
||||
;;
|
||||
\?) exit
|
||||
;;
|
||||
esac
|
||||
key="$1"
|
||||
|
||||
case $key in
|
||||
-n|--node)
|
||||
node="$2"
|
||||
shift # past argument
|
||||
shift # past value
|
||||
;;
|
||||
-t|--tls-enabled)
|
||||
tls="$2"
|
||||
shift # past argument
|
||||
shift # past value
|
||||
;;
|
||||
*)
|
||||
shift # past argument
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
rm -f \
|
||||
|
@ -19,28 +31,27 @@ rm -f \
|
|||
/data/conf/nodes.7001.conf \
|
||||
/data/conf/nodes.7002.conf ;
|
||||
|
||||
if $tls ; then
|
||||
redis-server /data/conf/redis.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf --daemonize yes \
|
||||
--tls-port 8000 \
|
||||
--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 7001 --cluster-config-file /data/conf/nodes.7001.conf --daemonize 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
|
||||
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 7001 --cluster-config-file /data/conf/nodes.7001.conf --daemonize yes ;
|
||||
redis-server /data/conf/redis.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf --daemonize yes ;
|
||||
if [ ${node} = "cluster" ] ; then
|
||||
if $tls ; then
|
||||
redis-server /data/conf/redis-tls.conf --port 7000 --cluster-config-file /data/conf/nodes.7000.conf \
|
||||
--tls-port 8000 --cluster-enabled yes ;
|
||||
redis-server /data/conf/redis-tls.conf --port 7001 --cluster-config-file /data/conf/nodes.7001.conf \
|
||||
--tls-port 8001 --cluster-enabled yes;
|
||||
redis-server /data/conf/redis-tls.conf --port 7002 --cluster-config-file /data/conf/nodes.7002.conf \
|
||||
--tls-port 8002 --cluster-enabled yes;
|
||||
else
|
||||
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 --cluster-enabled 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
|
||||
|
||||
REDIS_LOAD_FLG=true;
|
||||
|
||||
while $REDIS_LOAD_FLG;
|
||||
|
@ -64,7 +75,12 @@ do
|
|||
else
|
||||
continue;
|
||||
fi
|
||||
yes "yes" | redis-cli --cluster create 172.16.239.10:7000 172.16.239.10:7001 172.16.239.10:7002;
|
||||
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;
|
||||
elif [ ${node} = "sentinel" ] ; then
|
||||
cp /data/conf/sentinel.conf /_sentinel.conf
|
||||
redis-server /_sentinel.conf --sentinel;
|
||||
fi
|
||||
REDIS_LOAD_FLG=false;
|
||||
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).
|
||||
|
||||
-compile(nowarn_export_all).
|
||||
-compile(export_all).
|
||||
|
||||
-include_lib("emqx/include/emqx.hrl").
|
||||
|
@ -183,9 +182,9 @@ reload(Config) when is_list(Config) ->
|
|||
q(Cmd) ->
|
||||
{ok, Server} = application:get_env(?APP, server),
|
||||
case proplists:get_value(type, Server) of
|
||||
single ->
|
||||
{ok, Connection} = ?POOL(?APP),
|
||||
eredis:q(Connection, Cmd);
|
||||
cluster ->
|
||||
eredis_cluster:q(emqx_auth_redis, Cmd)
|
||||
eredis_cluster:q(emqx_auth_redis, Cmd);
|
||||
_ ->
|
||||
{ok, Connection} = ?POOL(?APP),
|
||||
eredis:q(Connection, Cmd)
|
||||
end.
|
Loading…
Reference in New Issue