test: fix addrinuse errors in listeners API test SUITE
This commit is contained in:
parent
a71d983ff8
commit
3d6756cbe8
|
@ -20,6 +20,8 @@
|
||||||
|
|
||||||
-include_lib("eunit/include/eunit.hrl").
|
-include_lib("eunit/include/eunit.hrl").
|
||||||
|
|
||||||
|
-define(PORT, (20000 + ?LINE)).
|
||||||
|
|
||||||
all() ->
|
all() ->
|
||||||
emqx_common_test_helpers:all(?MODULE).
|
emqx_common_test_helpers:all(?MODULE).
|
||||||
|
|
||||||
|
@ -32,13 +34,38 @@ end_per_suite(_) ->
|
||||||
emqx_conf:remove([listeners, tcp, new1], #{override_to => local}),
|
emqx_conf:remove([listeners, tcp, new1], #{override_to => local}),
|
||||||
emqx_mgmt_api_test_util:end_suite([emqx_conf]).
|
emqx_mgmt_api_test_util:end_suite([emqx_conf]).
|
||||||
|
|
||||||
t_max_connection_default(_Config) ->
|
init_per_testcase(Case, Config) ->
|
||||||
|
try
|
||||||
|
?MODULE:Case({init, Config})
|
||||||
|
catch
|
||||||
|
error:function_clause ->
|
||||||
|
Config
|
||||||
|
end.
|
||||||
|
|
||||||
|
end_per_testcase(Case, Config) ->
|
||||||
|
try
|
||||||
|
?MODULE:Case({'end', Config})
|
||||||
|
catch
|
||||||
|
error:function_clause ->
|
||||||
|
ok
|
||||||
|
end.
|
||||||
|
|
||||||
|
t_max_connection_default({init, Config}) ->
|
||||||
emqx_mgmt_api_test_util:end_suite([emqx_conf]),
|
emqx_mgmt_api_test_util:end_suite([emqx_conf]),
|
||||||
Etc = filename:join(["etc", "emqx.conf.all"]),
|
Etc = filename:join(["etc", "emqx.conf.all"]),
|
||||||
|
TmpConfName = atom_to_list(?FUNCTION_NAME) ++ ".conf",
|
||||||
|
Inc = filename:join(["etc", TmpConfName]),
|
||||||
ConfFile = emqx_common_test_helpers:app_path(emqx_conf, Etc),
|
ConfFile = emqx_common_test_helpers:app_path(emqx_conf, Etc),
|
||||||
Bin = <<"listeners.tcp.max_connection_test {bind = \"0.0.0.0:3883\"}">>,
|
IncFile = emqx_common_test_helpers:app_path(emqx_conf, Inc),
|
||||||
ok = file:write_file(ConfFile, Bin, [append]),
|
Port = integer_to_binary(?PORT),
|
||||||
|
Bin = <<"listeners.tcp.max_connection_test {bind = \"0.0.0.0:", Port/binary, "\"}">>,
|
||||||
|
ok = file:write_file(IncFile, Bin),
|
||||||
|
ok = file:write_file(ConfFile, ["include \"", TmpConfName, "\""], [append]),
|
||||||
emqx_mgmt_api_test_util:init_suite([emqx_conf]),
|
emqx_mgmt_api_test_util:init_suite([emqx_conf]),
|
||||||
|
[{tmp_config_file, IncFile} | Config];
|
||||||
|
t_max_connection_default({'end', Config}) ->
|
||||||
|
ok = file:delete(proplists:get_value(tmp_config_file, Config));
|
||||||
|
t_max_connection_default(Config) when is_list(Config) ->
|
||||||
%% Check infinity is binary not atom.
|
%% Check infinity is binary not atom.
|
||||||
#{<<"listeners">> := Listeners} = emqx_mgmt_api_listeners:do_list_listeners(),
|
#{<<"listeners">> := Listeners} = emqx_mgmt_api_listeners:do_list_listeners(),
|
||||||
Target = lists:filter(
|
Target = lists:filter(
|
||||||
|
@ -51,7 +78,7 @@ t_max_connection_default(_Config) ->
|
||||||
emqx_conf:remove([listeners, tcp, max_connection_test], #{override_to => cluster}),
|
emqx_conf:remove([listeners, tcp, max_connection_test], #{override_to => cluster}),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_list_listeners(_) ->
|
t_list_listeners(Config) when is_list(Config) ->
|
||||||
Path = emqx_mgmt_api_test_util:api_path(["listeners"]),
|
Path = emqx_mgmt_api_test_util:api_path(["listeners"]),
|
||||||
Res = request(get, Path, [], []),
|
Res = request(get, Path, [], []),
|
||||||
#{<<"listeners">> := Expect} = emqx_mgmt_api_listeners:do_list_listeners(),
|
#{<<"listeners">> := Expect} = emqx_mgmt_api_listeners:do_list_listeners(),
|
||||||
|
@ -71,9 +98,10 @@ t_list_listeners(_) ->
|
||||||
?assertMatch({error, {"HTTP/1.1", 404, _}}, request(get, NewPath, [], [])),
|
?assertMatch({error, {"HTTP/1.1", 404, _}}, request(get, NewPath, [], [])),
|
||||||
|
|
||||||
OriginListener2 = maps:remove(<<"id">>, OriginListener),
|
OriginListener2 = maps:remove(<<"id">>, OriginListener),
|
||||||
|
Port = integer_to_binary(?PORT),
|
||||||
NewConf = OriginListener2#{
|
NewConf = OriginListener2#{
|
||||||
<<"name">> => <<"new">>,
|
<<"name">> => <<"new">>,
|
||||||
<<"bind">> => <<"0.0.0.0:2883">>,
|
<<"bind">> => <<"0.0.0.0:", Port/binary>>,
|
||||||
<<"max_connections">> := <<"infinity">>
|
<<"max_connections">> := <<"infinity">>
|
||||||
},
|
},
|
||||||
Create = request(post, Path, [], NewConf),
|
Create = request(post, Path, [], NewConf),
|
||||||
|
@ -89,7 +117,7 @@ t_list_listeners(_) ->
|
||||||
?assertMatch({error, {"HTTP/1.1", 404, _}}, request(get, NewPath, [], [])),
|
?assertMatch({error, {"HTTP/1.1", 404, _}}, request(get, NewPath, [], [])),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_tcp_crud_listeners_by_id(_) ->
|
t_tcp_crud_listeners_by_id(Config) when is_list(Config) ->
|
||||||
ListenerId = <<"tcp:default">>,
|
ListenerId = <<"tcp:default">>,
|
||||||
NewListenerId = <<"tcp:new">>,
|
NewListenerId = <<"tcp:new">>,
|
||||||
MinListenerId = <<"tcp:min">>,
|
MinListenerId = <<"tcp:min">>,
|
||||||
|
@ -97,7 +125,7 @@ t_tcp_crud_listeners_by_id(_) ->
|
||||||
Type = <<"tcp">>,
|
Type = <<"tcp">>,
|
||||||
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
||||||
|
|
||||||
t_ssl_crud_listeners_by_id(_) ->
|
t_ssl_crud_listeners_by_id(Config) when is_list(Config) ->
|
||||||
ListenerId = <<"ssl:default">>,
|
ListenerId = <<"ssl:default">>,
|
||||||
NewListenerId = <<"ssl:new">>,
|
NewListenerId = <<"ssl:new">>,
|
||||||
MinListenerId = <<"ssl:min">>,
|
MinListenerId = <<"ssl:min">>,
|
||||||
|
@ -105,7 +133,7 @@ t_ssl_crud_listeners_by_id(_) ->
|
||||||
Type = <<"ssl">>,
|
Type = <<"ssl">>,
|
||||||
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
||||||
|
|
||||||
t_ws_crud_listeners_by_id(_) ->
|
t_ws_crud_listeners_by_id(Config) when is_list(Config) ->
|
||||||
ListenerId = <<"ws:default">>,
|
ListenerId = <<"ws:default">>,
|
||||||
NewListenerId = <<"ws:new">>,
|
NewListenerId = <<"ws:new">>,
|
||||||
MinListenerId = <<"ws:min">>,
|
MinListenerId = <<"ws:min">>,
|
||||||
|
@ -113,7 +141,7 @@ t_ws_crud_listeners_by_id(_) ->
|
||||||
Type = <<"ws">>,
|
Type = <<"ws">>,
|
||||||
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
||||||
|
|
||||||
t_wss_crud_listeners_by_id(_) ->
|
t_wss_crud_listeners_by_id(Config) when is_list(Config) ->
|
||||||
ListenerId = <<"wss:default">>,
|
ListenerId = <<"wss:default">>,
|
||||||
NewListenerId = <<"wss:new">>,
|
NewListenerId = <<"wss:new">>,
|
||||||
MinListenerId = <<"wss:min">>,
|
MinListenerId = <<"wss:min">>,
|
||||||
|
@ -121,7 +149,7 @@ t_wss_crud_listeners_by_id(_) ->
|
||||||
Type = <<"wss">>,
|
Type = <<"wss">>,
|
||||||
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type).
|
||||||
|
|
||||||
t_api_listeners_list_not_ready(_Config) ->
|
t_api_listeners_list_not_ready(Config) when is_list(Config) ->
|
||||||
net_kernel:start(['listeners@127.0.0.1', longnames]),
|
net_kernel:start(['listeners@127.0.0.1', longnames]),
|
||||||
ct:timetrap({seconds, 120}),
|
ct:timetrap({seconds, 120}),
|
||||||
snabbkaffe:fix_ct_logging(),
|
snabbkaffe:fix_ct_logging(),
|
||||||
|
@ -151,16 +179,17 @@ t_api_listeners_list_not_ready(_Config) ->
|
||||||
emqx_common_test_helpers:stop_slave(Node2)
|
emqx_common_test_helpers:stop_slave(Node2)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
t_clear_certs(_) ->
|
t_clear_certs(Config) when is_list(Config) ->
|
||||||
ListenerId = <<"ssl:default">>,
|
ListenerId = <<"ssl:default">>,
|
||||||
NewListenerId = <<"ssl:clear">>,
|
NewListenerId = <<"ssl:clear">>,
|
||||||
|
|
||||||
OriginPath = emqx_mgmt_api_test_util:api_path(["listeners", ListenerId]),
|
OriginPath = emqx_mgmt_api_test_util:api_path(["listeners", ListenerId]),
|
||||||
NewPath = emqx_mgmt_api_test_util:api_path(["listeners", NewListenerId]),
|
NewPath = emqx_mgmt_api_test_util:api_path(["listeners", NewListenerId]),
|
||||||
ConfTempT = request(get, OriginPath, [], []),
|
ConfTempT = request(get, OriginPath, [], []),
|
||||||
|
Port = integer_to_binary(?PORT),
|
||||||
ConfTemp = ConfTempT#{
|
ConfTemp = ConfTempT#{
|
||||||
<<"id">> => NewListenerId,
|
<<"id">> => NewListenerId,
|
||||||
<<"bind">> => <<"0.0.0.0:2883">>
|
<<"bind">> => <<"0.0.0.0:", Port/binary>>
|
||||||
},
|
},
|
||||||
|
|
||||||
%% create, make sure the cert files are created
|
%% create, make sure the cert files are created
|
||||||
|
@ -245,9 +274,11 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) ->
|
||||||
%% create with full options
|
%% create with full options
|
||||||
?assertEqual({error, not_found}, is_running(NewListenerId)),
|
?assertEqual({error, not_found}, is_running(NewListenerId)),
|
||||||
?assertMatch({error, {"HTTP/1.1", 404, _}}, request(get, NewPath, [], [])),
|
?assertMatch({error, {"HTTP/1.1", 404, _}}, request(get, NewPath, [], [])),
|
||||||
|
Port1 = integer_to_binary(?PORT),
|
||||||
|
Port2 = integer_to_binary(?PORT),
|
||||||
NewConf = OriginListener#{
|
NewConf = OriginListener#{
|
||||||
<<"id">> => NewListenerId,
|
<<"id">> => NewListenerId,
|
||||||
<<"bind">> => <<"0.0.0.0:2883">>
|
<<"bind">> => <<"0.0.0.0:", Port1/binary>>
|
||||||
},
|
},
|
||||||
Create = request(post, NewPath, [], NewConf),
|
Create = request(post, NewPath, [], NewConf),
|
||||||
?assertEqual(lists:sort(maps:keys(OriginListener)), lists:sort(maps:keys(Create))),
|
?assertEqual(lists:sort(maps:keys(OriginListener)), lists:sort(maps:keys(Create))),
|
||||||
|
@ -271,7 +302,7 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) ->
|
||||||
} ->
|
} ->
|
||||||
#{
|
#{
|
||||||
<<"id">> => MinListenerId,
|
<<"id">> => MinListenerId,
|
||||||
<<"bind">> => <<"0.0.0.0:3883">>,
|
<<"bind">> => <<"0.0.0.0:", Port2/binary>>,
|
||||||
<<"type">> => Type,
|
<<"type">> => Type,
|
||||||
<<"ssl_options">> => #{
|
<<"ssl_options">> => #{
|
||||||
<<"cacertfile">> => CaCertFile,
|
<<"cacertfile">> => CaCertFile,
|
||||||
|
@ -282,7 +313,7 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) ->
|
||||||
_ ->
|
_ ->
|
||||||
#{
|
#{
|
||||||
<<"id">> => MinListenerId,
|
<<"id">> => MinListenerId,
|
||||||
<<"bind">> => <<"0.0.0.0:3883">>,
|
<<"bind">> => <<"0.0.0.0:", Port2/binary>>,
|
||||||
<<"type">> => Type
|
<<"type">> => Type
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
|
@ -296,7 +327,7 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) ->
|
||||||
BadPath = emqx_mgmt_api_test_util:api_path(["listeners", BadId]),
|
BadPath = emqx_mgmt_api_test_util:api_path(["listeners", BadId]),
|
||||||
BadConf = OriginListener#{
|
BadConf = OriginListener#{
|
||||||
<<"id">> => BadId,
|
<<"id">> => BadId,
|
||||||
<<"bind">> => <<"0.0.0.0:2883">>
|
<<"bind">> => <<"0.0.0.0:", Port1/binary>>
|
||||||
},
|
},
|
||||||
?assertMatch({error, {"HTTP/1.1", 400, _}}, request(post, BadPath, [], BadConf)),
|
?assertMatch({error, {"HTTP/1.1", 400, _}}, request(post, BadPath, [], BadConf)),
|
||||||
|
|
||||||
|
@ -332,12 +363,12 @@ crud_listeners_by_id(ListenerId, NewListenerId, MinListenerId, BadId, Type) ->
|
||||||
?assertEqual([], delete(NewPath)),
|
?assertEqual([], delete(NewPath)),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_delete_nonexistent_listener(_) ->
|
t_delete_nonexistent_listener(Config) when is_list(Config) ->
|
||||||
NonExist = emqx_mgmt_api_test_util:api_path(["listeners", "tcp:nonexistent"]),
|
NonExist = emqx_mgmt_api_test_util:api_path(["listeners", "tcp:nonexistent"]),
|
||||||
?assertEqual([], delete(NonExist)),
|
?assertEqual([], delete(NonExist)),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_action_listeners(_) ->
|
t_action_listeners(Config) when is_list(Config) ->
|
||||||
ID = "tcp:default",
|
ID = "tcp:default",
|
||||||
action_listener(ID, "stop", false),
|
action_listener(ID, "stop", false),
|
||||||
action_listener(ID, "start", true),
|
action_listener(ID, "start", true),
|
||||||
|
|
Loading…
Reference in New Issue