|
@@ -50,14 +50,18 @@ end_per_suite(_Config) ->
|
|
|
%%--------------------------------------------------------------------
|
|
%%--------------------------------------------------------------------
|
|
|
|
|
|
|
|
t_reg_unreg_channel(_) ->
|
|
t_reg_unreg_channel(_) ->
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
|
|
+ #{conninfo := ConnInfo} = ?ChanInfo,
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
|
|
+ ok = emqx_cm:insert_channel_info(<<"clientid">>, ?ChanInfo, []),
|
|
|
?assertEqual([self()], emqx_cm:lookup_channels(<<"clientid">>)),
|
|
?assertEqual([self()], emqx_cm:lookup_channels(<<"clientid">>)),
|
|
|
ok = emqx_cm:unregister_channel(<<"clientid">>),
|
|
ok = emqx_cm:unregister_channel(<<"clientid">>),
|
|
|
?assertEqual([], emqx_cm:lookup_channels(<<"clientid">>)).
|
|
?assertEqual([], emqx_cm:lookup_channels(<<"clientid">>)).
|
|
|
|
|
|
|
|
t_get_set_chan_info(_) ->
|
|
t_get_set_chan_info(_) ->
|
|
|
- Info = ?ChanInfo,
|
|
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, Info, []),
|
|
|
|
|
|
|
+ Info = #{conninfo := ConnInfo} = ?ChanInfo,
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
|
|
+ ok = emqx_cm:insert_channel_info(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
+
|
|
|
?assertEqual(Info, emqx_cm:get_chan_info(<<"clientid">>)),
|
|
?assertEqual(Info, emqx_cm:get_chan_info(<<"clientid">>)),
|
|
|
Info1 = Info#{proto_ver => 5},
|
|
Info1 = Info#{proto_ver => 5},
|
|
|
true = emqx_cm:set_chan_info(<<"clientid">>, Info1),
|
|
true = emqx_cm:set_chan_info(<<"clientid">>, Info1),
|
|
@@ -67,7 +71,10 @@ t_get_set_chan_info(_) ->
|
|
|
|
|
|
|
|
t_get_set_chan_stats(_) ->
|
|
t_get_set_chan_stats(_) ->
|
|
|
Stats = [{recv_oct, 10}, {send_oct, 8}],
|
|
Stats = [{recv_oct, 10}, {send_oct, 8}],
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, Stats),
|
|
|
|
|
|
|
+ Info = #{conninfo := ConnInfo} = ?ChanInfo,
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
|
|
+ ok = emqx_cm:insert_channel_info(<<"clientid">>, Info, Stats),
|
|
|
|
|
+
|
|
|
?assertEqual(Stats, emqx_cm:get_chan_stats(<<"clientid">>)),
|
|
?assertEqual(Stats, emqx_cm:get_chan_stats(<<"clientid">>)),
|
|
|
Stats1 = [{recv_oct, 10}|Stats],
|
|
Stats1 = [{recv_oct, 10}|Stats],
|
|
|
true = emqx_cm:set_chan_stats(<<"clientid">>, Stats1),
|
|
true = emqx_cm:set_chan_stats(<<"clientid">>, Stats1),
|
|
@@ -152,13 +159,16 @@ t_open_session_race_condition(_) ->
|
|
|
?assertEqual([], emqx_cm:lookup_channels(<<"clientid">>)).
|
|
?assertEqual([], emqx_cm:lookup_channels(<<"clientid">>)).
|
|
|
|
|
|
|
|
t_discard_session(_) ->
|
|
t_discard_session(_) ->
|
|
|
|
|
+ #{conninfo := ConnInfo} = ?ChanInfo,
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
|
|
+
|
|
|
ok = meck:new(emqx_connection, [passthrough, no_history]),
|
|
ok = meck:new(emqx_connection, [passthrough, no_history]),
|
|
|
ok = meck:expect(emqx_connection, call, fun(_, _) -> ok end),
|
|
ok = meck:expect(emqx_connection, call, fun(_, _) -> ok end),
|
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
|
ok = emqx_cm:unregister_channel(<<"clientid">>),
|
|
ok = emqx_cm:unregister_channel(<<"clientid">>),
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
|
ok = meck:expect(emqx_connection, call, fun(_, _) -> error(testing) end),
|
|
ok = meck:expect(emqx_connection, call, fun(_, _) -> error(testing) end),
|
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
ok = emqx_cm:discard_session(<<"clientid">>),
|
|
@@ -166,9 +176,10 @@ t_discard_session(_) ->
|
|
|
ok = meck:unload(emqx_connection).
|
|
ok = meck:unload(emqx_connection).
|
|
|
|
|
|
|
|
t_takeover_session(_) ->
|
|
t_takeover_session(_) ->
|
|
|
|
|
+ #{conninfo := ConnInfo} = ?ChanInfo,
|
|
|
{error, not_found} = emqx_cm:takeover_session(<<"clientid">>),
|
|
{error, not_found} = emqx_cm:takeover_session(<<"clientid">>),
|
|
|
erlang:spawn(fun() ->
|
|
erlang:spawn(fun() ->
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
receive
|
|
receive
|
|
|
{'$gen_call', From, {takeover, 'begin'}} ->
|
|
{'$gen_call', From, {takeover, 'begin'}} ->
|
|
|
gen_server:reply(From, test), ok
|
|
gen_server:reply(From, test), ok
|
|
@@ -179,13 +190,17 @@ t_takeover_session(_) ->
|
|
|
emqx_cm:unregister_channel(<<"clientid">>).
|
|
emqx_cm:unregister_channel(<<"clientid">>).
|
|
|
|
|
|
|
|
t_kick_session(_) ->
|
|
t_kick_session(_) ->
|
|
|
|
|
+ Info = #{conninfo := ConnInfo} = ?ChanInfo,
|
|
|
ok = meck:new(emqx_connection, [passthrough, no_history]),
|
|
ok = meck:new(emqx_connection, [passthrough, no_history]),
|
|
|
ok = meck:expect(emqx_connection, call, fun(_, _) -> test end),
|
|
ok = meck:expect(emqx_connection, call, fun(_, _) -> test end),
|
|
|
{error, not_found} = emqx_cm:kick_session(<<"clientid">>),
|
|
{error, not_found} = emqx_cm:kick_session(<<"clientid">>),
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
|
|
+ ok = emqx_cm:insert_channel_info(<<"clientid">>, Info, []),
|
|
|
test = emqx_cm:kick_session(<<"clientid">>),
|
|
test = emqx_cm:kick_session(<<"clientid">>),
|
|
|
erlang:spawn(fun() ->
|
|
erlang:spawn(fun() ->
|
|
|
- ok = emqx_cm:register_channel(<<"clientid">>, ?ChanInfo, []),
|
|
|
|
|
|
|
+ ok = emqx_cm:register_channel(<<"clientid">>, self(), ConnInfo),
|
|
|
|
|
+ ok = emqx_cm:insert_channel_info(<<"clientid">>, Info, []),
|
|
|
|
|
+
|
|
|
timer:sleep(1000)
|
|
timer:sleep(1000)
|
|
|
end),
|
|
end),
|
|
|
ct:sleep(100),
|
|
ct:sleep(100),
|