diff options
| author | Hans Nilsson <[email protected]> | 2015-06-05 14:48:21 +0200 | 
|---|---|---|
| committer | Hans Nilsson <[email protected]> | 2015-06-05 14:48:21 +0200 | 
| commit | 3f58cd3cf433343b9eb33cc433a26e43995e75d7 (patch) | |
| tree | 2b47dda5099a67eae6aa3c12d2c67107b369f6ae /lib/ssh/test | |
| parent | df9965c331a173045658d5a00f0349170262bd5f (diff) | |
| parent | 04653b8c66c2b8d1453b32ca28d66ef1863dbd75 (diff) | |
| download | otp-3f58cd3cf433343b9eb33cc433a26e43995e75d7.tar.gz otp-3f58cd3cf433343b9eb33cc433a26e43995e75d7.tar.bz2 otp-3f58cd3cf433343b9eb33cc433a26e43995e75d7.zip | |
Merge branch 'hans/ssh/disconnectfun/OTP-12789'
* hans/ssh/disconnectfun/OTP-12789:
  ssh: make disconnectfun work for both server&client
Diffstat (limited to 'lib/ssh/test')
| -rw-r--r-- | lib/ssh/test/ssh_basic_SUITE.erl | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/lib/ssh/test/ssh_basic_SUITE.erl b/lib/ssh/test/ssh_basic_SUITE.erl index cff695681e..4b72c57cca 100644 --- a/lib/ssh/test/ssh_basic_SUITE.erl +++ b/lib/ssh/test/ssh_basic_SUITE.erl @@ -56,6 +56,8 @@ all() ->       ssh_daemon_minimal_remote_max_packet_size_option,       ssh_msg_debug_fun_option_client,       ssh_msg_debug_fun_option_server, +     disconnectfun_option_server, +     disconnectfun_option_client,       preferred_algorithms,       id_string_no_opt_client,       id_string_own_string_client, @@ -738,6 +740,75 @@ ssh_msg_debug_fun_option_server(Config) ->      end.  %%-------------------------------------------------------------------- +disconnectfun_option_server(Config) -> +    PrivDir = ?config(priv_dir, Config), +    UserDir = filename:join(PrivDir, nopubkey), % to make sure we don't use public-key-auth +    file:make_dir(UserDir), +    SysDir = ?config(data_dir, Config), + +    Parent = self(), +    DisConnFun = fun(Reason) -> Parent ! {disconnect,Reason} end, + +    {Pid, Host, Port} = ssh_test_lib:daemon([{system_dir, SysDir}, +					     {user_dir, UserDir}, +					     {password, "morot"}, +					     {failfun, fun ssh_test_lib:failfun/2}, +					     {disconnectfun, DisConnFun}]), +    ConnectionRef = +	ssh_test_lib:connect(Host, Port, [{silently_accept_hosts, true}, +					  {user, "foo"}, +					  {password, "morot"}, +					  {user_dir, UserDir}, +					  {user_interaction, false}]), +    ssh:close(ConnectionRef), +    receive +	{disconnect,Reason} -> +	    ct:log("Server detected disconnect: ~p",[Reason]), +	    ssh:stop_daemon(Pid), +	    ok +    after 3000 -> +	    receive +		X -> ct:log("received ~p",[X]) +	    after 0 -> ok +	    end, +	    {fail,"Timeout waiting for disconnect"} +    end. + +%%-------------------------------------------------------------------- +disconnectfun_option_client(Config) -> +    PrivDir = ?config(priv_dir, Config), +    UserDir = filename:join(PrivDir, nopubkey), % to make sure we don't use public-key-auth +    file:make_dir(UserDir), +    SysDir = ?config(data_dir, Config), + +    Parent = self(), +    DisConnFun = fun(Reason) -> Parent ! {disconnect,Reason} end, + +    {Pid, Host, Port} = ssh_test_lib:daemon([{system_dir, SysDir}, +					     {user_dir, UserDir}, +					     {password, "morot"}, +					     {failfun, fun ssh_test_lib:failfun/2}]), +    _ConnectionRef = +	ssh_test_lib:connect(Host, Port, [{silently_accept_hosts, true}, +					  {user, "foo"}, +					  {password, "morot"}, +					  {user_dir, UserDir}, +					  {user_interaction, false}, +					  {disconnectfun, DisConnFun}]), +    ssh:stop_daemon(Pid), +    receive +	{disconnect,Reason} -> +	    ct:log("Client detected disconnect: ~p",[Reason]), +	    ok +    after 3000 -> +	    receive +		X -> ct:log("received ~p",[X]) +	    after 0 -> ok +	    end, +	    {fail,"Timeout waiting for disconnect"} +    end. + +%%--------------------------------------------------------------------  known_hosts() ->      [{doc, "check that known_hosts is updated correctly"}].  known_hosts(Config) when is_list(Config) -> | 
