summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Nilsson <hans@erlang.org>2020-01-10 10:27:01 +0100
committerHans Nilsson <hans@erlang.org>2020-01-10 15:07:17 +0100
commit3e1c5455d404180aa4362731098137ef2cc74b18 (patch)
tree33bb6c53f06735138861aca845f933becdb7063b
parente7bc4ae0fe0f260941343a27cef6df7a5d6a5d2f (diff)
downloaderlang-3e1c5455d404180aa4362731098137ef2cc74b18.tar.gz
ssh: Remove inet_port() from tests
-rw-r--r--lib/ssh/test/ssh_basic_SUITE.erl14
-rw-r--r--lib/ssh/test/ssh_relay.erl21
-rw-r--r--lib/ssh/test/ssh_sup_SUITE.erl33
-rw-r--r--lib/ssh/test/ssh_test_lib.erl16
-rw-r--r--lib/ssh/test/ssh_upgrade_SUITE.erl3
5 files changed, 36 insertions, 51 deletions
diff --git a/lib/ssh/test/ssh_basic_SUITE.erl b/lib/ssh/test/ssh_basic_SUITE.erl
index 30d03f842f..f8b883c643 100644
--- a/lib/ssh/test/ssh_basic_SUITE.erl
+++ b/lib/ssh/test/ssh_basic_SUITE.erl
@@ -866,7 +866,7 @@ daemon_already_started(Config) when is_list(Config) ->
%%% Test that a failed daemon start does not leave the port open
daemon_error_closes_port(Config) ->
GoodSystemDir = proplists:get_value(data_dir, Config),
- Port = ssh_test_lib:inet_port(),
+ Port = inet_port(),
{error,_} = ssh_test_lib:daemon(Port, []), % No system dir
case ssh_test_lib:daemon(Port, [{system_dir, GoodSystemDir}]) of
{error,eaddrinuse} ->
@@ -1681,9 +1681,7 @@ renegotiate1(Config) ->
{Pid, Host, DPort} = ssh_test_lib:std_daemon(Config,[{max_random_length_padding,0},
{preferred_algorithms,Algs}]),
- RPort = ssh_test_lib:inet_port(),
- {ok,RelayPid} = ssh_relay:start_link({0,0,0,0}, RPort, Host, DPort),
-
+ {ok,RelayPid,_,RPort} = ssh_relay:start_link({0,0,0,0}, 0, Host, DPort),
ConnectionRef = ssh_test_lib:std_connect(Config, Host, RPort, [{max_random_length_padding,0}]),
{ok, SftpPid} = ssh_sftp:start_channel(ConnectionRef),
@@ -1721,8 +1719,7 @@ renegotiate2(Config) ->
{Pid, Host, DPort} = ssh_test_lib:std_daemon(Config,[{max_random_length_padding,0},
{preferred_algorithms,Algs}]),
- RPort = ssh_test_lib:inet_port(),
- {ok,RelayPid} = ssh_relay:start_link({0,0,0,0}, RPort, Host, DPort),
+ {ok,RelayPid,_,RPort} = ssh_relay:start_link({0,0,0,0}, 0, Host, DPort),
ConnectionRef = ssh_test_lib:std_connect(Config, Host, RPort, [{max_random_length_padding,0}]),
{ok, SftpPid} = ssh_sftp:start_channel(ConnectionRef),
@@ -1931,3 +1928,8 @@ new_do_shell_prompt(IO, N, Op, Str, More) ->
new_do_shell(IO, N, [{Op,Str}|More]).
%%--------------------------------------------------------------------
+inet_port() ->
+ {ok, Socket} = gen_tcp:listen(0, [{reuseaddr, true}]),
+ {ok, Port} = inet:port(Socket),
+ gen_tcp:close(Socket),
+ Port.
diff --git a/lib/ssh/test/ssh_relay.erl b/lib/ssh/test/ssh_relay.erl
index 763130358b..3bb4cb2071 100644
--- a/lib/ssh/test/ssh_relay.erl
+++ b/lib/ssh/test/ssh_relay.erl
@@ -28,8 +28,7 @@
}).
-record(state, {
- local_addr,
- local_port,
+ sockname,
peer_addr,
peer_port,
lpid,
@@ -92,11 +91,17 @@ release_next(Srv, Dir, TriggerDir) ->
%% @doc
%% Starts the server
%%
-%% @spec start_link() -> {ok, Pid} | ignore | {error, Error}
+%% @spec start_link() -> {ok, Pid, Host, Port} | ignore | {error, Error}
%% @end
%%--------------------------------------------------------------------
start_link(ListenAddr, ListenPort, PeerAddr, PeerPort) ->
- gen_server:start_link(?MODULE, [ListenAddr, ListenPort, PeerAddr, PeerPort], []).
+ case gen_server:start_link(?MODULE, [ListenAddr, ListenPort, PeerAddr, PeerPort], []) of
+ {ok,Pid} ->
+ {ok,{Host,Port}} = gen_server:call(Pid, get_sockname),
+ {ok, Pid, Host, Port};
+ Other ->
+ Other
+ end.
stop(Srv) ->
unlink(Srv),
@@ -126,11 +131,11 @@ init([ListenAddr, ListenPort, PeerAddr, PeerPort | _Options]) ->
end,
case gen_tcp:listen(ListenPort, [{reuseaddr, true}, {backlog, 1}, {active, false}, binary | IfAddr]) of
{ok, LSock} ->
+ {ok, SName} = inet:sockname(LSock),
Parent = self(),
{LPid, _LMod} = spawn_monitor(fun() -> listen(Parent, LSock) end),
- S = #state{local_addr = ListenAddr,
- local_port = ListenPort,
- lpid = LPid,
+ S = #state{sockname = SName,
+ lpid = LPid,
peer_addr = ssh_test_lib:ntoa(
ssh_test_lib:mangle_connect_address(PeerAddr)),
peer_port = PeerPort
@@ -174,6 +179,8 @@ handle_call({release, Dir}, _From, State) ->
end;
handle_call({release_next, _Dir, _TriggerDir}, _From, State) ->
{reply, {error, nyi}, State};
+handle_call(get_sockname, _From, State) ->
+ {reply, {ok,State#state.sockname}, State};
handle_call(Request, _From, State) ->
Reply = {unhandled, Request},
diff --git a/lib/ssh/test/ssh_sup_SUITE.erl b/lib/ssh/test/ssh_sup_SUITE.erl
index a0e3d809be..73bfc13eef 100644
--- a/lib/ssh/test/ssh_sup_SUITE.erl
+++ b/lib/ssh/test/ssh_sup_SUITE.erl
@@ -58,11 +58,10 @@ end_per_group(_GroupName, Config) ->
init_per_suite(Config) ->
?CHECK_CRYPTO(
begin
- Port = ssh_test_lib:inet_port(node()),
PrivDir = proplists:get_value(priv_dir, Config),
UserDir = filename:join(PrivDir, nopubkey), % to make sure we don't use public-key-auth
file:make_dir(UserDir),
- [{userdir, UserDir},{port, Port}, {host, "localhost"}, {host_ip, any} | Config]
+ [{userdir, UserDir} | Config]
end).
end_per_suite(_) ->
@@ -136,13 +135,11 @@ sshc_subtree(Config) when is_list(Config) ->
sshd_subtree() ->
[{doc, "Make sure the sshd subtree is correct"}].
sshd_subtree(Config) when is_list(Config) ->
- HostIP = proplists:get_value(host_ip, Config),
- Port = proplists:get_value(port, Config),
SystemDir = proplists:get_value(data_dir, Config),
- {ok,Daemon} = ssh:daemon(HostIP, Port, [{system_dir, SystemDir},
- {failfun, fun ssh_test_lib:failfun/2},
- {user_passwords,
- [{?USER, ?PASSWD}]}]),
+ {Daemon, HostIP, Port} = ssh_test_lib:daemon([{system_dir, SystemDir},
+ {failfun, fun ssh_test_lib:failfun/2},
+ {user_passwords,
+ [{?USER, ?PASSWD}]}]),
ct:log("Expect HostIP=~p, Port=~p, Daemon=~p",[HostIP,Port,Daemon]),
?wait_match([{{server,ssh_system_sup, ListenIP, Port, ?DEFAULT_PROFILE},
@@ -151,7 +148,7 @@ sshd_subtree(Config) when is_list(Config) ->
supervisor:which_children(sshd_sup),
[ListenIP,Daemon]),
true = ssh_test_lib:match_ip(HostIP, ListenIP),
- check_sshd_system_tree(Daemon, Config),
+ check_sshd_system_tree(Daemon, HostIP, Port, Config),
ssh:stop_daemon(HostIP, Port),
ct:sleep(?WAIT_FOR_SHUTDOWN),
?wait_match([], supervisor:which_children(sshd_sup)).
@@ -160,16 +157,14 @@ sshd_subtree(Config) when is_list(Config) ->
sshd_subtree_profile() ->
[{doc, "Make sure the sshd subtree using profile option is correct"}].
sshd_subtree_profile(Config) when is_list(Config) ->
- HostIP = proplists:get_value(host_ip, Config),
- Port = proplists:get_value(port, Config),
Profile = proplists:get_value(profile, Config),
SystemDir = proplists:get_value(data_dir, Config),
- {ok, Daemon} = ssh:daemon(HostIP, Port, [{system_dir, SystemDir},
- {failfun, fun ssh_test_lib:failfun/2},
- {user_passwords,
- [{?USER, ?PASSWD}]},
- {profile, Profile}]),
+ {Daemon, HostIP, Port} = ssh_test_lib:daemon([{system_dir, SystemDir},
+ {failfun, fun ssh_test_lib:failfun/2},
+ {user_passwords,
+ [{?USER, ?PASSWD}]},
+ {profile, Profile}]),
ct:log("Expect HostIP=~p, Port=~p, Profile=~p, Daemon=~p",[HostIP,Port,Profile,Daemon]),
?wait_match([{{server,ssh_system_sup, ListenIP,Port,Profile},
Daemon, supervisor,
@@ -177,7 +172,7 @@ sshd_subtree_profile(Config) when is_list(Config) ->
supervisor:which_children(sshd_sup),
[ListenIP,Daemon]),
true = ssh_test_lib:match_ip(HostIP, ListenIP),
- check_sshd_system_tree(Daemon, Config),
+ check_sshd_system_tree(Daemon, HostIP, Port, Config),
ssh:stop_daemon(HostIP, Port, Profile),
ct:sleep(?WAIT_FOR_SHUTDOWN),
?wait_match([], supervisor:which_children(sshd_sup)).
@@ -354,9 +349,7 @@ chk_empty_con_daemon(Daemon) ->
%%-------------------------------------------------------------------------
%% Help functions
%%-------------------------------------------------------------------------
-check_sshd_system_tree(Daemon, Config) ->
- Host = proplists:get_value(host, Config),
- Port = proplists:get_value(port, Config),
+check_sshd_system_tree(Daemon, Host, Port, Config) ->
UserDir = proplists:get_value(userdir, Config),
{ok, Client} = ssh:connect(Host, Port, [{silently_accept_hosts, true},
{user_interaction, false},
diff --git a/lib/ssh/test/ssh_test_lib.erl b/lib/ssh/test/ssh_test_lib.erl
index 036820fa8d..a4794dde1b 100644
--- a/lib/ssh/test/ssh_test_lib.erl
+++ b/lib/ssh/test/ssh_test_lib.erl
@@ -353,12 +353,6 @@ receive_exec_result(Data, ConnectionRef, ChannelId) ->
expected = receive_exec_result(Closed).
-inet_port()->
- {ok, Socket} = gen_tcp:listen(0, [{reuseaddr, true}]),
- {ok, Port} = inet:port(Socket),
- gen_tcp:close(Socket),
- Port.
-
setup_ssh_auth_keys(RSAFile, DSAFile, Dir) ->
Entries = ssh_file_entry(RSAFile) ++ ssh_file_entry(DSAFile),
AuthKeys = public_key:ssh_encode(Entries , auth_keys),
@@ -611,16 +605,6 @@ del_dirs(Dir) ->
ok
end.
-inet_port(Node) ->
- {Port, Socket} = do_inet_port(Node),
- rpc:call(Node, gen_tcp, close, [Socket]),
- Port.
-
-do_inet_port(Node) ->
- {ok, Socket} = rpc:call(Node, gen_tcp, listen, [0, [{reuseaddr, true}]]),
- {ok, Port} = rpc:call(Node, inet, port, [Socket]),
- {Port, Socket}.
-
openssh_sanity_check(Config) ->
ssh:start(),
case ssh:connect("localhost", 22, [{password,""}]) of
diff --git a/lib/ssh/test/ssh_upgrade_SUITE.erl b/lib/ssh/test/ssh_upgrade_SUITE.erl
index 7b9b109fa1..de9d7b2b1c 100644
--- a/lib/ssh/test/ssh_upgrade_SUITE.erl
+++ b/lib/ssh/test/ssh_upgrade_SUITE.erl
@@ -149,8 +149,7 @@ setup_server_client(#state{config=Config} = State) ->
SFTP = ssh_sftpd:subsystem_spec([{root,FtpRootDir},{cwd,FtpRootDir}]),
- {Server,Host,Port} = ssh_test_lib:daemon(ssh_test_lib:inet_port(), % when lower rel is 18.x
- [{system_dir,DataDir},
+ {Server,Host,Port} = ssh_test_lib:daemon([{system_dir,DataDir},
{user_passwords,[{"hej","hopp"}]},
{subsystems,[SFTP]}]),