aboutsummaryrefslogtreecommitdiffstats
path: root/lib/observer/test
diff options
context:
space:
mode:
authorAndrzej Telezynski <[email protected]>2011-07-21 13:08:28 +0200
committerHenrik Nord <[email protected]>2011-08-30 15:22:19 +0200
commit2d319d3fcdc9bf7b8ac7d389ce5ee0a38645882f (patch)
tree779cfe9868ad88c8d93110370d816bb31ca949a2 /lib/observer/test
parent4e3b8ccfa74785ca78f70e4d745c123037aada7f (diff)
downloadotp-2d319d3fcdc9bf7b8ac7d389ce5ee0a38645882f.tar.gz
otp-2d319d3fcdc9bf7b8ac7d389ce5ee0a38645882f.tar.bz2
otp-2d319d3fcdc9bf7b8ac7d389ce5ee0a38645882f.zip
It is safe to change cwd on control node or remote nodes while tracing
Diffstat (limited to 'lib/observer/test')
-rw-r--r--lib/observer/test/ttb_SUITE.erl64
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/observer/test/ttb_SUITE.erl b/lib/observer/test/ttb_SUITE.erl
index 0c154a796c..93319d16c8 100644
--- a/lib/observer/test/ttb_SUITE.erl
+++ b/lib/observer/test/ttb_SUITE.erl
@@ -65,6 +65,8 @@ all() ->
trace_to_remote_files_on_localhost_with_different_pwd,
trace_to_local_files_on_localhost_with_different_pwd,
trace_to_remote_files_on_localhost_with_different_pwd_abs,
+ changing_cwd_on_control_node, changing_cwd_on_remote_node,
+ changing_cwd_on_control_node_with_local_trace,
one_command_trace_setup, dbg_style_fetch, shell_tracing_init,
only_one_state_for_format_handler, only_one_state_with_default_format_handler,
only_one_state_with_initial_format_handler, run_trace_with_shortcut1,
@@ -1002,6 +1004,8 @@ format_on_trace_stop(Config) when is_list(Config) ->
?line true = filelib:is_file("HANDLER_OK"),
?line ok = file:delete("HANDLER_OK").
+%% The following three tests are for the issue "fixes fetch fail when nodes on the same host
+%% have different cwd"
trace_to_remote_files_on_localhost_with_different_pwd(suite) ->
[];
trace_to_remote_files_on_localhost_with_different_pwd(doc) ->
@@ -1043,6 +1047,66 @@ trace_to_remote_files_on_localhost_with_different_pwd_abs(Config) when is_list(C
?line ?t:stop_node(ClientNode),
?line ok = file:set_cwd(OldDir).
+%% Trace is not affected by changes of cwd on control node or remote nodes during tracing
+%% (three tests)
+changing_cwd_on_control_node(suite) ->
+ [];
+changing_cwd_on_control_node(doc) ->
+ ["Changing cwd on control node during tracing is safe"];
+changing_cwd_on_control_node(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {ServerNode, ClientNode} = start_client_and_server(),
+ ?line begin_trace(ServerNode, ClientNode, ?FNAME),
+ ?line NumMsgs = 3,
+ ?line ttb_helper:msgs(NumMsgs),
+ ?line ok = file:set_cwd(".."),
+ ?line ttb_helper:msgs(NumMsgs),
+ ?line {_, D} = ttb:stop([fetch, return]),
+ ?line ttb:format(D, [{out, ?OUTPUT}, {handler, simple_call_handler()}]),
+ ?line {ok, Ret} = file:consult(?OUTPUT),
+ ?line true = (2*(NumMsgs + 1) == length(Ret)),
+ ?line ?t:stop_node(ServerNode),
+ ?line ?t:stop_node(ClientNode),
+ ?line ok = file:set_cwd(OldDir).
+
+changing_cwd_on_control_node_with_local_trace(suite) ->
+ [];
+changing_cwd_on_control_node_with_local_trace(doc) ->
+ ["Changing cwd on control node during local tracing is safe"];
+changing_cwd_on_control_node_with_local_trace(Config) when is_list(Config) ->
+ ?line {ok, OldDir} = file:get_cwd(),
+ ?line {ServerNode, ClientNode} = start_client_and_server(),
+ ?line begin_trace(ServerNode, ClientNode, {local, ?FNAME}),
+ ?line NumMsgs = 3,
+ ?line ttb_helper:msgs(NumMsgs),
+ ?line ok = file:set_cwd(".."),
+ ?line ttb_helper:msgs(NumMsgs),
+ ?line {_, D} = ttb:stop([fetch, return]),
+ ?line ttb:format(D, [{out, ?OUTPUT}, {handler, simple_call_handler()}]),
+ ?line {ok, Ret} = file:consult(?OUTPUT),
+ ?line true = (2*(NumMsgs + 1) == length(Ret)),
+ ?line ?t:stop_node(ServerNode),
+ ?line ?t:stop_node(ClientNode),
+ ?line ok = file:set_cwd(OldDir).
+
+changing_cwd_on_remote_node(suite) ->
+ [];
+changing_cwd_on_remote_node(doc) ->
+ ["Changing cwd on remote node during tracing is safe"];
+changing_cwd_on_remote_node(Config) when is_list(Config) ->
+ ?line {ServerNode, ClientNode} = start_client_and_server(),
+ ?line begin_trace(ServerNode, ClientNode, ?FNAME),
+ ?line NumMsgs = 2,
+ ?line ttb_helper:msgs(NumMsgs),
+ ?line ok = rpc:call(ClientNode, file, set_cwd, [".."]),
+ ?line ttb_helper:msgs(NumMsgs),
+ ?line {_, D} = ttb:stop([fetch, return]),
+ ?line ttb:format(D, [{out, ?OUTPUT}, {handler, simple_call_handler()}]),
+ ?line {ok, Ret} = file:consult(?OUTPUT),
+ ?line true = (2*(NumMsgs + 1) == length(Ret)),
+ ?line ?t:stop_node(ServerNode),
+ ?line ?t:stop_node(ClientNode).
+
one_command_trace_setup(suite) ->
[];
one_command_trace_setup(doc) ->