diff --git a/src/emqx_ctl.erl b/src/emqx_ctl.erl index c00556eb7..1d2fb13a3 100644 --- a/src/emqx_ctl.erl +++ b/src/emqx_ctl.erl @@ -54,15 +54,6 @@ run_command([Cmd | Args]) -> run_command(list_to_atom(Cmd), Args). -spec(run_command(cmd(), [string()]) -> ok | {error, term()}). -% run_command(set, []) -> -% emqx_mgmt_cli_cfg:set_usage(), ok; - -% run_command(set, Args) -> -% emqx_mgmt_cli_cfg:run(["config" | Args]), ok; - -% run_command(show, Args) -> -% emqx_mgmt_cli_cfg:run(["config" | Args]), ok; - run_command(help, []) -> usage(); run_command(Cmd, Args) when is_atom(Cmd) -> @@ -160,4 +151,3 @@ register_command_test_() -> }. -endif. - diff --git a/test/emqx_client_SUITE.erl b/test/emqx_client_SUITE.erl index 021109606..13303bfdc 100644 --- a/test/emqx_client_SUITE.erl +++ b/test/emqx_client_SUITE.erl @@ -32,9 +32,8 @@ <<"+/+">>, <<"TopicA/#">>]). all() -> - [ {group, mqttv4}, - {group, mqttv5} - ]. + [{group, mqttv4}, + {group, mqttv5}]. groups() -> [{mqttv4, [non_parallel_tests], @@ -48,8 +47,7 @@ groups() -> dollar_topics_test]}, {mqttv5, [non_parallel_tests], [request_response, - share_sub_request_topic]} -]. + share_sub_request_topic]}]. init_per_suite(Config) -> emqx_ct_broker_helpers:run_setup_steps(), diff --git a/test/emqx_cm_SUITE.erl b/test/emqx_cm_SUITE.erl index b720849f6..08a773d40 100644 --- a/test/emqx_cm_SUITE.erl +++ b/test/emqx_cm_SUITE.erl @@ -1,3 +1,4 @@ + %% Copyright (c) 2018 EMQ Technologies Co., Ltd. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,23 +18,54 @@ -compile(export_all). -compile(nowarn_export_all). +-include("emqx.hrl"). +-include_lib("eunit/include/eunit.hrl"). + -include("emqx_mqtt.hrl"). -all() -> [t_register_unregister_connection]. +all() -> [{group, cm}]. -t_register_unregister_connection(_) -> - {ok, _} = emqx_cm_sup:start_link(), - Pid = self(), - ok = emqx_cm:register_connection(<<"conn1">>), - ok emqx_cm:register_connection(<<"conn2">>, Pid), - true = emqx_cm:set_conn_attrs(<<"conn1">>, [{port, 8080}, {ip, "192.168.0.1"}]), - true = emqx_cm:set_conn_attrs(<<"conn2">>, Pid, [{port, 8080}, {ip, "192.168.0.1"}]), - timer:sleep(2000), - ?assertEqual(Pid, emqx_cm:lookup_conn_pid(<<"conn1">>)), - ?assertEqual(Pid, emqx_cm:lookup_conn_pid(<<"conn2">>)), - ok = emqx_cm:unregister_connection(<<"conn1">>), - ?assertEqual(undefined, emqx_cm:lookup_conn_pid(<<"conn1">>)), - ?assertEqual([{port, 8080}, {ip, "192.168.0.1"}], emqx_cm:get_conn_attrs({<<"conn2">>, Pid})), - true = emqx_cm:set_conn_stats(<<"conn2">>, [{count, 1}, {max, 2}]), - ?assertEqual([{count, 1}, {max, 2}], emqx_cm:get_conn_stats({<<"conn2">>, Pid})). +groups() -> + [{cm, [non_parallel_tests], + [t_get_set_conn_attrs, + t_get_set_conn_stats, + t_lookup_conn_pid]}]. +init_per_suite(Config) -> + emqx_ct_broker_helpers:run_setup_steps(), + Config. + +end_per_suite(_Config) -> + emqx_ct_broker_helpers:run_teardown_steps(). + +init_per_testcase(_TestCase, Config) -> + register_connection(), + Config. + +end_per_testcase(_TestCase, _Config) -> + unregister_connection(), + ok. + +t_get_set_conn_attrs(_) -> + ?assert(emqx_cm:set_conn_attrs(<<"conn1">>, [{port, 8080}, {ip, "192.168.0.1"}])), + ?assert(emqx_cm:set_conn_attrs(<<"conn2">>, self(), [{port, 8080}, {ip, "192.168.0.2"}])), + ?assertEqual([{port, 8080}, {ip, "192.168.0.1"}], emqx_cm:get_conn_attrs(<<"conn1">>)), + ?assertEqual([{port, 8080}, {ip, "192.168.0.2"}], emqx_cm:get_conn_attrs(<<"conn2">>, self())). + +t_get_set_conn_stats(_) -> + ?assert(emqx_cm:set_conn_stats(<<"conn1">>, [{count, 1}, {max, 2}])), + ?assert(emqx_cm:set_conn_stats(<<"conn2">>, self(), [{count, 1}, {max, 2}])), + ?assertEqual([{count, 1}, {max, 2}], emqx_cm:get_conn_stats(<<"conn1">>)), + ?assertEqual([{count, 1}, {max, 2}], emqx_cm:get_conn_stats(<<"conn2">>, self())). + +t_lookup_conn_pid(_) -> + ?assertEqual(ok, emqx_cm:register_connection(<<"conn1">>, self())), + ?assertEqual(self(), emqx_cm:lookup_conn_pid(<<"conn1">>)). + +register_connection() -> + ?assertEqual(ok, emqx_cm:register_connection(<<"conn1">>)), + ?assertEqual(ok, emqx_cm:register_connection(<<"conn2">>, self())). + +unregister_connection() -> + ?assertEqual(ok, emqx_cm:unregister_connection(<<"conn1">>)), + ?assertEqual(ok, emqx_cm:unregister_connection(<<"conn2">>, self())). diff --git a/test/emqx_sm_SUITE.erl b/test/emqx_sm_SUITE.erl index 008d4b6e6..407e2c92b 100644 --- a/test/emqx_sm_SUITE.erl +++ b/test/emqx_sm_SUITE.erl @@ -14,34 +14,81 @@ -module(emqx_sm_SUITE). +-include("emqx.hrl"). +-include_lib("eunit/include/eunit.hrl"). + -include("emqx.hrl"). -compile(export_all). -compile(nowarn_export_all). -all() -> [t_open_close_session]. +-define(ATTRS, #{clean_start => true, + client_id => <<"client">>, + zone => internal, + username => <<"emqx">>, + expiry_interval => 0, + max_inflight => 0, + topic_alias_maximum => 0, + will_msg => undefined}). + +all() -> [{group, sm}]. + +groups() -> + [{sm, [non_parallel_tests], + [t_open_close_session, + t_resume_session, + t_discard_session, + t_register_unregister_session, + t_get_set_session_attrs, + t_get_set_session_stats, + t_lookup_session_pids]}]. + +init_per_suite(Config) -> + emqx_ct_broker_helpers:run_setup_steps(), + Config. + +end_per_suite(_Config) -> + emqx_ct_broker_helpers:run_teardown_steps(). t_open_close_session(_) -> - emqx_ct_broker_helpers:run_setup_steps(), {ok, ClientPid} = emqx_mock_client:start_link(<<"client">>), - Attrs = #{clean_start => true, - client_id => <<"client">>, - conn_pid => ClientPid, - zone => internal, - username => <<"emqx">>, - expiry_interval => 0, - max_inflight => 0, - topic_alias_maximum => 0, - will_msg => undefined}, - {ok, SPid} = emqx_sm:open_session(Attrs), - ?assertEqual([SPid], emqx_sm:lookup_session_pids(<<"client">>)), - {ok, NewConnPid} = emqx_mock_client:start_link(<<"client">>), - {ok, SPid, true} = emqx_sm:open_session(Attrs#{clean_start => false, conn_pid => NewConnPid}), - ?assertEqual([SPid], emqx_sm:lookup_session_pids(<<"client">>)), - SAttrs = emqx_sm:get_session_attrs(<<"client">>, SPid), - ?assertEqual(<<"client">>, proplists:get_value(client_id, SAttrs)), - emqx_sm:set_session_stats(<<"client">>, SPid, [{inflight, 10}]), - ?assertEqual([{inflight, 10}], emqx_sm:get_session_stats(<<"client">>, SPid)), - ok = emqx_sm:close_session(SPid), - ?assertEqual([], emqx_sm:lookup_session_pids(<<"client">>)), - emqx_ct_broker_helpers:run_teardown_steps(). + {ok, SPid} = emqx_sm:open_session(?ATTRS#{conn_pid => ClientPid}), + ?assertEqual(ok, emqx_sm:close_session(SPid)). + +t_resume_session(_) -> + {ok, ClientPid} = emqx_mock_client:start_link(<<"client">>), + {ok, SPid} = emqx_sm:open_session(?ATTRS#{conn_pid => ClientPid}), + ?assertEqual({ok, SPid}, emqx_sm:resume_session(<<"client">>, ?ATTRS#{conn_pid => ClientPid})). + +t_discard_session(_) -> + {ok, ClientPid} = emqx_mock_client:start_link(<<"client1">>), + {ok, _SPid} = emqx_sm:open_session(?ATTRS#{conn_pid => ClientPid}), + ?assertEqual(ok, emqx_sm:discard_session(<<"client1">>)). + +t_register_unregister_session(_) -> + Pid = self(), + {ok, _ClientPid} = emqx_mock_client:start_link(<<"client">>), + ?assertEqual(ok, emqx_sm:register_session(<<"client">>)), + ?assertEqual(ok, emqx_sm:register_session(<<"client">>, Pid)), + ?assertEqual(ok, emqx_sm:unregister_session(<<"client">>)), + ?assertEqual(ok, emqx_sm:unregister_session(<<"client">>), Pid). + +t_get_set_session_attrs(_) -> + {ok, ClientPid} = emqx_mock_client:start_link(<<"client">>), + {ok, SPid} = emqx_sm:open_session(?ATTRS#{conn_pid => ClientPid}), + ?assertEqual(true, emqx_sm:set_session_attrs(<<"client">>, [?ATTRS#{conn_pid => ClientPid}])), + ?assertEqual(true, emqx_sm:set_session_attrs(<<"client">>, SPid, [?ATTRS#{conn_pid => ClientPid}])), + [SAttr] = emqx_sm:get_session_attrs(<<"client">>, SPid), + ?assertEqual(<<"client">>, maps:get(client_id, SAttr)). + +t_get_set_session_stats(_) -> + {ok, ClientPid} = emqx_mock_client:start_link(<<"client">>), + {ok, SPid} = emqx_sm:open_session(?ATTRS#{conn_pid => ClientPid}), + ?assertEqual(true, emqx_sm:set_session_stats(<<"client">>, [{inflight, 10}])), + ?assertEqual(true, emqx_sm:set_session_stats(<<"client">>, SPid, [{inflight, 10}])), + ?assertEqual([{inflight, 10}], emqx_sm:get_session_stats(<<"client">>, SPid)). + +t_lookup_session_pids(_) -> + {ok, ClientPid} = emqx_mock_client:start_link(<<"client">>), + {ok, SPid} = emqx_sm:open_session(?ATTRS#{conn_pid => ClientPid}), + ?assertEqual([SPid], emqx_sm:lookup_session_pids(<<"client">>)).