From a6c26ce9925ade9a6b1d9bec87111a02b4647056 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Tue, 19 Dec 2023 23:36:52 +0100 Subject: [PATCH] test(listen): stabilize flaky testcase --- apps/emqx/include/asserts.hrl | 22 ++++++++++++++++++++++ apps/emqx/test/emqx_listeners_SUITE.erl | 6 ++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/apps/emqx/include/asserts.hrl b/apps/emqx/include/asserts.hrl index 489c47862..63dad42aa 100644 --- a/apps/emqx/include/asserts.hrl +++ b/apps/emqx/include/asserts.hrl @@ -83,6 +83,28 @@ end)() ). +-define(assertExceptionOneOf(CT1, CT2, EXPR), + (fun() -> + X__Attrs = [ + {module, ?MODULE}, + {line, ?LINE}, + {expression, (??EXPR)}, + {pattern, "[ " ++ (??CT1) ++ ", " ++ (??CT2) ++ " ]"} + ], + X__Exc = + try (EXPR) of + X__V -> erlang:error({assertException, [{unexpected_success, X__V} | X__Attrs]}) + catch + X__C:X__T:X__S -> {X__C, X__T, X__S} + end, + case {element(1, X__Exc), element(2, X__Exc)} of + CT1 -> ok; + CT2 -> ok; + _ -> erlang:error({assertException, [{unexpected_exception, X__Exc} | X__Attrs]}) + end + end)() +). + -define(retrying(CONFIG, NUM_RETRIES, TEST_BODY_FN), begin __TEST_CASE = ?FUNCTION_NAME, (fun diff --git a/apps/emqx/test/emqx_listeners_SUITE.erl b/apps/emqx/test/emqx_listeners_SUITE.erl index 1dab8f4c4..476f02eb3 100644 --- a/apps/emqx/test/emqx_listeners_SUITE.erl +++ b/apps/emqx/test/emqx_listeners_SUITE.erl @@ -21,6 +21,7 @@ -include_lib("emqx/include/emqx.hrl"). -include_lib("emqx/include/emqx_schema.hrl"). +-include_lib("emqx/include/asserts.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("common_test/include/ct.hrl"). @@ -247,8 +248,9 @@ t_ssl_update_opts(Config) -> ), %% Unable to connect with old SSL options, certificate is now required. - ?assertError( - {ssl_error, _Socket, {tls_alert, {certificate_required, _}}}, + ?assertExceptionOneOf( + {error, {ssl_error, _Socket, {tls_alert, {certificate_required, _}}}}, + {error, closed}, emqtt_connect_ssl(Host, Port, [ {cacertfile, filename:join(PrivDir, "ca-next.pem")} | ClientSSLOpts ])