diff --git a/test/emqttd_SUITE.erl b/test/emqttd_SUITE.erl index be60926fb..b5402830d 100644 --- a/test/emqttd_SUITE.erl +++ b/test/emqttd_SUITE.erl @@ -103,12 +103,15 @@ groups() -> cli_subscriptions, cli_bridges, cli_plugins, - cli_listeners, + {listeners, [sequence], + [cli_listeners, + conflict_listeners + ]}, cli_vm]}, {cleanSession, [sequence], [cleanSession_validate, - cleanSession_validate1, - cleanSession_validate2]}]. + cleanSession_validate1 + ]}]. init_per_suite(Config) -> application:start(lager), @@ -619,6 +622,35 @@ cli_bridges(_) -> cli_listeners(_) -> emqttd_cli:listeners([]). +conflict_listeners(_) -> + F = + fun() -> + process_flag(trap_exit, true), + emqttc:start_link([{host, "localhost"}, + {port, 1883}, + {client_id, <<"c1">>}, + {clean_sess, false}]) + end, + spawn_link(F), + + {ok, C2} = emqttc:start_link([{host, "localhost"}, + {port, 1883}, + {client_id, <<"c1">>}, + {clean_sess, false}]), + timer:sleep(100), + + Listeners = + lists:map(fun({{Protocol, ListenOn}, Pid}) -> + Key = atom_to_list(Protocol) ++ ":" ++ esockd:to_string(ListenOn), + {Key, [{acceptors, esockd:get_acceptors(Pid)}, + {max_clients, esockd:get_max_clients(Pid)}, + {current_clients, esockd:get_current_clients(Pid)}, + {shutdown_count, esockd:get_shutdown_count(Pid)}]} + end, esockd:listeners()), + ?assertEqual(1, proplists:get_value(current_clients, proplists:get_value("mqtt:tcp:1883", Listeners))), + ?assertEqual([{conflict,1}], proplists:get_value(shutdown_count, proplists:get_value("mqtt:tcp:1883", Listeners))), + emqttc:disconnect(C2). + cli_vm(_) -> emqttd_cli:vm([]), emqttd_cli:vm(["ports"]). @@ -630,7 +662,6 @@ cleanSession_validate(_) -> {clean_sess, false}]), timer:sleep(10), emqttc:subscribe(C1, <<"topic">>, qos0), - ok = emqttd_cli:sessions(["list", "persistent"]), emqttc:disconnect(C1), {ok, Pub} = emqttc:start_link([{host, "localhost"}, {port, 1883}, @@ -639,12 +670,11 @@ cleanSession_validate(_) -> emqttc:publish(Pub, <<"topic">>, <<"m1">>, [{qos, 0}]), timer:sleep(10), {ok, C11} = emqttc:start_link([{host, "localhost"}, - {port, 1883}, - {client_id, <<"c1">>}, - {clean_sess, false}]), + {port, 1883}, + {client_id, <<"c1">>}, + {clean_sess, false}]), timer:sleep(100), Metrics = emqttd_metrics:all(), - ct:log("Metrics:~p~n", [Metrics]), ?assertEqual(1, proplists:get_value('messages/qos0/sent', Metrics)), ?assertEqual(1, proplists:get_value('messages/qos0/received', Metrics)), emqttc:disconnect(Pub), @@ -657,7 +687,6 @@ cleanSession_validate1(_) -> {clean_sess, true}]), timer:sleep(10), emqttc:subscribe(C1, <<"topic">>, qos1), - ok = emqttd_cli:sessions(["list", "transient"]), emqttc:disconnect(C1), {ok, Pub} = emqttc:start_link([{host, "localhost"}, {port, 1883},