aboutsummaryrefslogtreecommitdiffstats
path: root/lib/common_test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common_test')
-rw-r--r--lib/common_test/src/ct_netconfc.erl8
-rw-r--r--lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl25
-rw-r--r--lib/common_test/test/ct_netconfc_SUITE_data/ns.erl9
3 files changed, 33 insertions, 9 deletions
diff --git a/lib/common_test/src/ct_netconfc.erl b/lib/common_test/src/ct_netconfc.erl
index 7f10e1db09..64fe8b4bb0 100644
--- a/lib/common_test/src/ct_netconfc.erl
+++ b/lib/common_test/src/ct_netconfc.erl
@@ -1129,10 +1129,14 @@ handle_msg({Ref,timeout},
ct_gen_conn:return(Caller,{error,{hello_session_failed,timeout}}),
{stop,State#state{hello_status={error,timeout}}};
handle_msg({Ref,timeout},#state{pending=Pending} = State) ->
- {value,#pending{caller=Caller},Pending1} =
+ {value,#pending{op=Op,caller=Caller},Pending1} =
lists:keytake(Ref,#pending.ref,Pending),
ct_gen_conn:return(Caller,{error,timeout}),
- {noreply,State#state{pending=Pending1}}.
+ R = case Op of
+ close_session -> stop;
+ _ -> noreply
+ end,
+ {R,State#state{pending=Pending1}}.
%% @private
%% Called by ct_util_server to close registered connections before terminate.
diff --git a/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl b/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl
index 6ee7fdd6f6..2bcfeeec0c 100644
--- a/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl
+++ b/lib/common_test/test/ct_netconfc_SUITE_data/netconfc1_SUITE.erl
@@ -84,7 +84,9 @@ all() ->
no_host,
no_port,
invalid_opt,
+ timeout_close_session,
get,
+ timeout_get,
get_xpath,
get_config,
get_config_xpath,
@@ -143,11 +145,10 @@ init_per_suite(Config) ->
end.
end_per_suite(Config) ->
- PrivDir = ?config(priv_dir, Config),
?NS:stop(?config(server,Config)),
ssh:stop(),
crypto:stop(),
- remove_id_keys(PrivDir),
+ remove_id_keys(Config),
Config.
hello(Config) ->
@@ -344,6 +345,15 @@ invalid_opt(Config) ->
{error,{invalid_option,{some_other_opt,true}}} = ct_netconfc:open(Opts2),
ok.
+timeout_close_session(Config) ->
+ DataDir = ?config(data_dir,Config),
+ {ok,Client} = open_success(DataDir),
+ ?NS:expect('close-session'),
+ true = erlang:is_process_alive(Client),
+ {error,timeout} = ct_netconfc:close_session(Client,1000),
+ false = erlang:is_process_alive(Client),
+ ok.
+
get(Config) ->
DataDir = ?config(data_dir,Config),
{ok,Client} = open_success(DataDir),
@@ -354,6 +364,15 @@ get(Config) ->
?ok = ct_netconfc:close_session(Client),
ok.
+timeout_get(Config) ->
+ DataDir = ?config(data_dir,Config),
+ {ok,Client} = open_success(DataDir),
+ ?NS:expect('get'),
+ {error,timeout} = ct_netconfc:get(Client,{server,[{xmlns,"myns"}],[]},1000),
+ ?NS:expect_do_reply('close-session',close,ok),
+ ?ok = ct_netconfc:close_session(Client),
+ ok.
+
get_xpath(Config) ->
DataDir = ?config(data_dir,Config),
{ok,Client} = open_success(DataDir),
@@ -698,7 +717,7 @@ timeout_receive_chunked_data(Config) ->
?ok = ct_netconfc:close_session(Client),
ok.
-%% Same as receive_chunked_data, but timeout waiting for last part.
+%% Same as receive_chunked_data, but close while waiting for last part.
close_while_waiting_for_chunked_data(Config) ->
DataDir = ?config(data_dir,Config),
{ok,Client} = open_success(DataDir),
diff --git a/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl b/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl
index 09217f60a3..fb0734d48e 100644
--- a/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl
+++ b/lib/common_test/test/ct_netconfc_SUITE_data/ns.erl
@@ -98,8 +98,9 @@ start(Dir) ->
%% Stop the netconf server
stop(Pid) ->
- Pid ! {stop,self()},
- receive stopped -> ok end.
+ Ref = erlang:monitor(process,Pid),
+ Pid ! stop,
+ receive {'DOWN',Ref,process,Pid,_} -> ok end.
%% Set the session id for the hello message.
%% If this is not called prior to starting the session, no hello
@@ -177,9 +178,9 @@ init_server(Dir) ->
loop(Daemon) ->
receive
- {stop,From} ->
+ stop ->
ssh:stop_daemon(Daemon),
- From ! stopped;
+ ok;
{table_trans,Fun,Args,From} ->
%% Simple transaction mechanism for ets table
R = apply(Fun,Args),