From f42c8ffcfa730e730438d91e7e1f2aaa0103892b Mon Sep 17 00:00:00 2001 From: JimMoen Date: Mon, 11 Jul 2022 17:55:39 +0800 Subject: [PATCH] test(connector): redis sentinel include name --- apps/emqx/test/emqx_common_test_helpers.erl | 13 +++++ .../test/emqx_connector_redis_SUITE.erl | 52 ++++++++++++++----- 2 files changed, 51 insertions(+), 14 deletions(-) diff --git a/apps/emqx/test/emqx_common_test_helpers.erl b/apps/emqx/test/emqx_common_test_helpers.erl index f591d75bd..d0ee99d6d 100644 --- a/apps/emqx/test/emqx_common_test_helpers.erl +++ b/apps/emqx/test/emqx_common_test_helpers.erl @@ -44,6 +44,7 @@ client_ssl_twoway/1, ensure_mnesia_stopped/0, ensure_quic_listener/2, + is_all_tcp_servers_available/1, is_tcp_server_available/2, is_tcp_server_available/3, load_config/2, @@ -432,6 +433,18 @@ load_config(SchemaModule, Config, Opts) -> load_config(SchemaModule, Config) -> load_config(SchemaModule, Config, #{raw_with_default => false}). +-spec is_all_tcp_servers_available(Servers) -> Result when + Servers :: [{Host, Port}], + Host :: inet:socket_address() | inet:hostname(), + Port :: inet:port_number(), + Result :: boolean(). +is_all_tcp_servers_available(Servers) -> + Fun = + fun({Host, Port}) -> + is_tcp_server_available(Host, Port) + end, + lists:all(Fun, Servers). + -spec is_tcp_server_available( Host :: inet:socket_address() | inet:hostname(), Port :: inet:port_number() diff --git a/apps/emqx_connector/test/emqx_connector_redis_SUITE.erl b/apps/emqx_connector/test/emqx_connector_redis_SUITE.erl index 8c54b7224..4770bbeee 100644 --- a/apps/emqx_connector/test/emqx_connector_redis_SUITE.erl +++ b/apps/emqx_connector/test/emqx_connector_redis_SUITE.erl @@ -23,8 +23,10 @@ -include_lib("emqx/include/emqx.hrl"). -include_lib("stdlib/include/assert.hrl"). --define(REDIS_HOST, "redis"). --define(REDIS_PORT, 6379). +-define(REDIS_SINGLE_HOST, "redis"). +-define(REDIS_SINGLE_PORT, 6379). +-define(REDIS_SENTINEL_HOST, "redis-sentinel"). +-define(REDIS_SENTINEL_PORT, 26379). -define(REDIS_RESOURCE_MOD, emqx_connector_redis). all() -> @@ -34,7 +36,14 @@ groups() -> []. init_per_suite(Config) -> - case emqx_common_test_helpers:is_tcp_server_available(?REDIS_HOST, ?REDIS_PORT) of + case + emqx_common_test_helpers:is_all_tcp_servers_available( + [ + {?REDIS_SINGLE_HOST, ?REDIS_SINGLE_PORT}, + {?REDIS_SENTINEL_HOST, ?REDIS_SENTINEL_PORT} + ] + ) + of true -> ok = emqx_common_test_helpers:start_apps([emqx_conf]), ok = emqx_connector_test_helpers:start_apps([emqx_resource, emqx_connector]), @@ -141,20 +150,35 @@ redis_config_cluster() -> redis_config_sentinel() -> redis_config_base("sentinel", "servers"). +-define(REDIS_CONFIG_BASE(MaybeSentinel), + "" ++ + "\n" ++ + " auto_reconnect = true\n" ++ + " database = 1\n" ++ + " pool_size = 8\n" ++ + " redis_type = ~s\n" ++ + MaybeSentinel ++ + " password = public\n" ++ + " ~s = \"~s:~b\"\n" ++ + " " ++ + "" +). + redis_config_base(Type, ServerKey) -> + case Type of + "sentinel" -> + Host = ?REDIS_SENTINEL_HOST, + Port = ?REDIS_SENTINEL_PORT, + MaybeSentinel = " sentinel = mymaster\n"; + _ -> + Host = ?REDIS_SINGLE_HOST, + Port = ?REDIS_SINGLE_PORT, + MaybeSentinel = "" + end, RawConfig = list_to_binary( io_lib:format( - "" - "\n" - " auto_reconnect = true\n" - " database = 1\n" - " pool_size = 8\n" - " redis_type = ~s\n" - " password = public\n" - " ~s = \"~s:~b\"\n" - " " - "", - [Type, ServerKey, ?REDIS_HOST, ?REDIS_PORT] + ?REDIS_CONFIG_BASE(MaybeSentinel), + [Type, ServerKey, Host, Port] ) ),