aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/test')
-rw-r--r--lib/kernel/test/application_SUITE.erl1543
-rw-r--r--lib/kernel/test/disk_log_SUITE.erl4
-rw-r--r--lib/kernel/test/file_SUITE.erl29
-rw-r--r--lib/kernel/test/gen_sctp_SUITE.erl3
-rw-r--r--lib/kernel/test/global_SUITE_data/global_trace.erl9
-rw-r--r--lib/kernel/test/inet_sockopt_SUITE.erl8
-rw-r--r--lib/kernel/test/interactive_shell_SUITE.erl13
-rw-r--r--lib/kernel/test/os_SUITE.erl45
8 files changed, 864 insertions, 790 deletions
diff --git a/lib/kernel/test/application_SUITE.erl b/lib/kernel/test/application_SUITE.erl
index 0452202467..1ff291be54 100644
--- a/lib/kernel/test/application_SUITE.erl
+++ b/lib/kernel/test/application_SUITE.erl
@@ -21,8 +21,10 @@
-include_lib("test_server/include/test_server.hrl").
-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,
- init_per_group/2,end_per_group/2,
- failover/1, failover_comp/1, permissions/1, load/1,
+ init_per_group/2,end_per_group/2
+ ]).
+
+-export([failover/1, failover_comp/1, permissions/1, load/1,
load_use_cache/1,
otp_1586/1, otp_2078/1, otp_2012/1, otp_2718/1, otp_2973/1,
otp_3002/1, otp_3184/1, otp_4066/1, otp_4227/1, otp_5363/1,
@@ -33,6 +35,7 @@
-export([config_change/1,
distr_changed_tc1/1, distr_changed_tc2/1,
+ ensure_started/1,
shutdown_func/1, do_shutdown/1, shutdown_timeout/1]).
-define(TESTCASE, testcase_name).
@@ -47,7 +50,7 @@ suite() -> [{ct_hooks,[ts_install_cth]}].
all() ->
[failover, failover_comp, permissions, load,
- load_use_cache, {group, reported_bugs}, start_phases,
+ load_use_cache, ensure_started, {group, reported_bugs}, start_phases,
script_start, nodedown_start, permit_false_start_local,
permit_false_start_dist, get_key, get_env,
{group, distr_changed}, config_change, shutdown_func, shutdown_timeout].
@@ -76,10 +79,10 @@ end_per_group(_GroupName, Config) ->
init_per_testcase(otp_2973=Case, Config) ->
code:add_path(?config(data_dir,Config)),
- ?line Dog = test_server:timetrap(?default_timeout),
+ Dog = test_server:timetrap(?default_timeout),
[{?TESTCASE, Case}, {watchdog, Dog}|Config];
init_per_testcase(Case, Config) ->
- ?line Dog = test_server:timetrap(?default_timeout),
+ Dog = test_server:timetrap(?default_timeout),
[{?TESTCASE, Case}, {watchdog, Dog}|Config].
end_per_testcase(otp_2973, Config) ->
@@ -121,92 +124,92 @@ failover(doc) ->
failover(Conf) when is_list(Conf) ->
%% start a help process to check the start type
StPid = spawn_link(?MODULE, start_type, []),
- ?line yes = global:register_name(st_type, StPid),
+ yes = global:register_name(st_type, StPid),
NodeNames = [Ncp1, Ncp2, Ncp3] = node_names([cp1, cp2, cp3], Conf),
NoSyncTime = config_fun_fast(config_fo(NodeNames)),
WithSyncTime = config_fun(config_fo(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
Cps = [Cp1, Cp2, Cp3],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
% Start app1 and make sure cp1 starts it
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app1, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
+ ok = get_start_type(#st{normal = 3}),
% Stop cp1 and make sure cp2 starts app1
stop_node_nice(Cp1),
- ?line ?UNTIL(is_started(app1, Cp2)),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app1, Cp2)),
+ ok = get_start_type(#st{normal = 3}),
% Restart cp1 and make sure it restarts app1
- ?line {ok, Cp1_2} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp1_2, application, load, [app1()]),
- ?line ok = rpc:call(Cp1_2, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line ?UNTIL(not is_started(app1, Cp2)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ {ok, Cp1_2} = start_node_config(Ncp1, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp1_2, application, load, [app1()]),
+ ok = rpc:call(Cp1_2, application, start, [app1, permanent]),
+ ?UNTIL(is_started(app1, Cp1)),
+ ?UNTIL(not is_started(app1, Cp2)),
+ ok = get_start_type(#st{takeover = 3}),
% Test [{cp1, cp2}, cp3]
% Start app_sp and make sure cp2 starts it (cp1 has more apps started)
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1_2, Cp2, Cp3], application, load, [app_sp()]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1_2, Cp2, Cp3], application, start,[app_sp,permanent]),
- ?line ?UNTIL(is_started(app_sp, Cp2)),
- ?line false = is_started(app_sp, Cp1),
- ?line false = is_started(app_sp, Cp3),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app_sp, Cp2)),
+ false = is_started(app_sp, Cp1),
+ false = is_started(app_sp, Cp3),
+ ok = get_start_type(#st{normal = 3}),
% Stop cp2 and make sure cp1 starts app_sp
stop_node_nice(Cp2),
- ?line ?UNTIL(is_started(app_sp, Cp1_2)),
- ?line ok = get_start_type(#st{failover = 3}),
+ ?UNTIL(is_started(app_sp, Cp1_2)),
+ ok = get_start_type(#st{failover = 3}),
% Stop cp1 and make sure cp3 starts app_sp
stop_node_nice(Cp1_2),
- ?line ?UNTIL(is_started(app_sp, Cp3)),
- ?line ok = get_start_type(#st{normal = 3, failover = 3}),
+ ?UNTIL(is_started(app_sp, Cp3)),
+ ok = get_start_type(#st{normal = 3, failover = 3}),
% Restart cp2 and make sure it restarts app_sp
- ?line {ok, Cp2_2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp2_2, application, load, [app_sp()]),
- ?line ok = rpc:call(Cp2_2, application, start, [app_sp, permanent]),
- ?line ?UNTIL(is_started(app_sp, Cp2_2)),
- ?line ?UNTIL(not is_started(app_sp, Cp3)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ {ok, Cp2_2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp2_2, application, load, [app_sp()]),
+ ok = rpc:call(Cp2_2, application, start, [app_sp, permanent]),
+ ?UNTIL(is_started(app_sp, Cp2_2)),
+ ?UNTIL(not is_started(app_sp, Cp3)),
+ ok = get_start_type(#st{takeover = 3}),
% Restart cp1 and make sure it doesn't restart app_sp
- ?line {ok, Cp1_3} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp1_3, application, load, [app_sp()]),
- ?line ok = rpc:call(Cp1_3, application, start, [app_sp, permanent]),
+ {ok, Cp1_3} = start_node_config(Ncp1, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp1_3, application, load, [app_sp()]),
+ ok = rpc:call(Cp1_3, application, start, [app_sp, permanent]),
test_server:sleep(500),
- ?line false = is_started(app_sp, Cp1_3),
- ?line true = is_started(app_sp, Cp2_2),
+ false = is_started(app_sp, Cp1_3),
+ true = is_started(app_sp, Cp2_2),
% Force takeover to cp1
- ?line ok = rpc:call(Cp1_3, application, takeover, [app_sp, permanent]),
- ?line ?UNTIL(is_started(app_sp, Cp1_3)),
- ?line ?UNTIL(not is_started(app_sp, Cp2_2)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ ok = rpc:call(Cp1_3, application, takeover, [app_sp, permanent]),
+ ?UNTIL(is_started(app_sp, Cp1_3)),
+ ?UNTIL(not is_started(app_sp, Cp2_2)),
+ ok = get_start_type(#st{takeover = 3}),
%% Kill one child process and see that it is started with type local
PP = global:whereis_name({ch,3}),
exit(PP, kill),
- ?line ok = get_start_type(#st{local = 1}),
+ ok = get_start_type(#st{local = 1}),
global:send(st_type, kill),
@@ -227,96 +230,96 @@ failover_comp(doc) ->
failover_comp(Conf) when is_list(Conf) ->
%% start a help process to check the start type
StPid = spawn_link(?MODULE, start_type, []),
- ?line yes = global:register_name(st_type, StPid),
+ yes = global:register_name(st_type, StPid),
NodeNames = [Ncp1, Ncp2, Ncp3] = node_names([cp1, cp2, cp3], Conf),
NoSyncTime = config_fun_fast(config(NodeNames)),
WithSyncTime = config_fun(config(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
Cps = [Cp1, Cp2, Cp3],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
% Start app1 and make sure cp1 starts it
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app1, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
+ ok = get_start_type(#st{normal = 3}),
% Stop cp1 and make sure cp2 starts app1
stop_node_nice(Cp1),
- ?line ?UNTIL(is_started(app1, Cp2)),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app1, Cp2)),
+ ok = get_start_type(#st{normal = 3}),
% Restart cp1 and make sure it restarts app1
- ?line {ok, Cp1_2} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp1_2, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cp1_2)),
- ?line ok = rpc:call(Cp1_2, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1_2)),
- ?line ?UNTIL(not is_started(app1, Cp2)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ {ok, Cp1_2} = start_node_config(Ncp1, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp1_2, application, load, [app1()]),
+ ?UNTIL(is_loaded(app1, Cp1_2)),
+ ok = rpc:call(Cp1_2, application, start, [app1, permanent]),
+ ?UNTIL(is_started(app1, Cp1_2)),
+ ?UNTIL(not is_started(app1, Cp2)),
+ ok = get_start_type(#st{takeover = 3}),
% Test [{cp1, cp2}, cp3]
% Start app3 and make sure cp2 starts it (cp1 has more apps started)
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1_2, Cp2, Cp3], application, load, [app3()]),
- ?line ?UNTIL(is_loaded(app3, [Cp1_2, Cp2, Cp3])),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app3, [Cp1_2, Cp2, Cp3])),
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1_2, Cp2, Cp3], application, start,[app3,permanent]),
- ?line ?UNTIL(is_started(app3, Cp2)),
- ?line false = is_started(app3, Cp1),
- ?line false = is_started(app3, Cp3),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app3, Cp2)),
+ false = is_started(app3, Cp1),
+ false = is_started(app3, Cp3),
+ ok = get_start_type(#st{normal = 3}),
% Stop cp2 and make sure cp1 starts app3
stop_node_nice(Cp2),
- ?line ?UNTIL(is_started(app3, Cp1_2)),
- ?line ok = get_start_type(#st{normal = 3}),
+ ?UNTIL(is_started(app3, Cp1_2)),
+ ok = get_start_type(#st{normal = 3}),
% Stop cp1 and make sure cp3 starts app3
stop_node_nice(Cp1_2),
- ?line ?UNTIL(is_started(app3, Cp3)),
- ?line ok = get_start_type(#st{normal = 6}),
+ ?UNTIL(is_started(app3, Cp3)),
+ ok = get_start_type(#st{normal = 6}),
% Restart cp2 and make sure it restarts app3
- ?line {ok, Cp2_2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp2_2, application, load, [app3()]),
- ?line ?UNTIL(is_loaded(app3, Cp2_2)),
- ?line ok = rpc:call(Cp2_2, application, start, [app3, permanent]),
- ?line ?UNTIL(is_started(app3, Cp2_2)),
- ?line ?UNTIL(not is_started(app3, Cp3)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ {ok, Cp2_2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp2_2, application, load, [app3()]),
+ ?UNTIL(is_loaded(app3, Cp2_2)),
+ ok = rpc:call(Cp2_2, application, start, [app3, permanent]),
+ ?UNTIL(is_started(app3, Cp2_2)),
+ ?UNTIL(not is_started(app3, Cp3)),
+ ok = get_start_type(#st{takeover = 3}),
% Restart cp1 and make sure it doesn't restart app3
- ?line {ok, Cp1_3} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp1_3, application, load, [app3()]),
- ?line true = is_loaded(app3, Cp1_3),
- ?line ok = rpc:call(Cp1_3, application, start, [app3, permanent]),
+ {ok, Cp1_3} = start_node_config(Ncp1, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp1_3, application, load, [app3()]),
+ true = is_loaded(app3, Cp1_3),
+ ok = rpc:call(Cp1_3, application, start, [app3, permanent]),
test_server:sleep(5000),
- ?line false = is_started(app3, Cp1_3),
- ?line true = is_started(app3, Cp2_2),
+ false = is_started(app3, Cp1_3),
+ true = is_started(app3, Cp2_2),
% Force takeover to cp1
- ?line ok = rpc:call(Cp1_3, application, takeover, [app3, permanent]),
- ?line ?UNTIL(is_started(app3, Cp1_3)),
- ?line ?UNTIL(not is_started(app3, Cp2_2)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ ok = rpc:call(Cp1_3, application, takeover, [app3, permanent]),
+ ?UNTIL(is_started(app3, Cp1_3)),
+ ?UNTIL(not is_started(app3, Cp2_2)),
+ ok = get_start_type(#st{takeover = 3}),
%% Kill one child process and see that it is started with type local
PP = global:whereis_name({ch,3}),
exit(PP, kill),
- ?line ok = get_start_type(#st{local = 1}),
+ ok = get_start_type(#st{local = 1}),
global:send(st_type, kill),
@@ -339,67 +342,67 @@ permissions(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config2(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
Cps = [Cp1, Cp2, Cp3],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
% Start app1 and make sure cp1 starts it
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app1, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
% Unpermit app1 on cp1, make sure cp2 starts it
- ?line ok = rpc:call(Cp1, application, permit, [app1, false]),
- ?line false = is_started(app1, Cp1),
- ?line true = is_started(app1, Cp2),
+ ok = rpc:call(Cp1, application, permit, [app1, false]),
+ false = is_started(app1, Cp1),
+ true = is_started(app1, Cp2),
% Unpermit app1 on cp2, make sure cp3 starts it
- ?line ok = rpc:call(Cp2, application, permit, [app1, false]),
- ?line false = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
- ?line true = is_started(app1, Cp3),
+ ok = rpc:call(Cp2, application, permit, [app1, false]),
+ false = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
+ true = is_started(app1, Cp3),
% Permit cp2 again
- ?line ok = rpc:call(Cp2, application, permit, [app1, true]),
- ?line false = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp3),
- ?line true = is_started(app1, Cp2),
+ ok = rpc:call(Cp2, application, permit, [app1, true]),
+ false = is_started(app1, Cp1),
+ false = is_started(app1, Cp3),
+ true = is_started(app1, Cp2),
% Start app3, make sure noone starts it
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app3()]),
- ?line ?UNTIL(is_loaded(app3, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app3, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app3, permanent]),
test_server:sleep(1000),
- ?line false = is_started(app3, Cp1),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ false = is_started(app3, Cp1),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
% Permit app3 on Cp3
- ?line ok = rpc:call(Cp3, application, permit, [app3, true]),
- ?line true = is_started(app3, Cp3),
+ ok = rpc:call(Cp3, application, permit, [app3, true]),
+ true = is_started(app3, Cp3),
% Permit app3 on Cp2, make sure it starts it
- ?line ok = rpc:call(Cp2, application, permit, [app3, true]),
- ?line true = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ ok = rpc:call(Cp2, application, permit, [app3, true]),
+ true = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
% Permit app3 on Cp1, make sure it doesn't start it
- ?line ok = rpc:call(Cp1, application, permit, [app3, true]),
- ?line false = is_started(app3, Cp1),
- ?line true = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app3, true]),
+ false = is_started(app3, Cp1),
+ true = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
% Stop Cp2, make sure Cp1 starts app3
stop_node_nice(Cp2),
- ?line ?UNTIL(is_started(app3, Cp1)),
+ ?UNTIL(is_started(app3, Cp1)),
stop_node_nice(Cp1),
stop_node_nice(Cp3),
@@ -418,25 +421,25 @@ load(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config3(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
Cps = [Cp1, Cp2, Cp3],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1(), d1(NodeNames)]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app1, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Load app1 with different specs and make sure we get an error
- ?line {[{error,_},{error,_}],[]} =
+ {[{error,_},{error,_}],[]} =
rpc:multicall([Cp1, Cp2], application, load, [app1(), d1(NodeNames)]),
- ?line {error, _} = rpc:call(Cp3, application, load, [app1(), d2(NodeNames)]),
+ {error, _} = rpc:call(Cp3, application, load, [app1(), d2(NodeNames)]),
stop_node_nice(Cp1),
stop_node_nice(Cp2),
@@ -455,24 +458,24 @@ load_use_cache(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config3(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_with_cache(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_with_cache(Ncp2, NoSyncTime, Conf),
- ?line {ok, Cp3} = start_node_with_cache(Ncp3, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_with_cache(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_with_cache(Ncp2, NoSyncTime, Conf),
+ {ok, Cp3} = start_node_with_cache(Ncp3, WithSyncTime, Conf),
Cps = [Cp1, Cp2, Cp3],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1(), d1(NodeNames)]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app1, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
% Load app1 with different specs and make sure we get an error
- ?line {[{error,_},{error,_}],[]} =
+ {[{error,_},{error,_}],[]} =
rpc:multicall([Cp1, Cp2], application, load, [app1(), d1(NodeNames)]),
- ?line {error, _} = rpc:call(Cp3, application, load, [app1(), d2(NodeNames)]),
+ {error, _} = rpc:call(Cp3, application, load, [app1(), d2(NodeNames)]),
stop_node_nice(Cp1),
stop_node_nice(Cp2),
@@ -489,57 +492,57 @@ start_phases(doc) ->
start_phases(Conf) when is_list(Conf) ->
%% start a help process to check the start type
SpPid = spawn_link(?MODULE, start_phase, []),
- ?line yes = global:register_name(start_phase, SpPid),
+ yes = global:register_name(start_phase, SpPid),
NodeNames = [Ncp1, _Ncp2, _Ncp3] = node_names([cp1, cp2, cp3], Conf),
WithSyncTime = config_fun(config_sf(NodeNames)),
- ?line {ok, Cp1} = start_node_config_sf(Ncp1, WithSyncTime, Conf),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node_config_sf(Ncp1, WithSyncTime, Conf),
+ wait_for_ready_net(),
%%=============================
%%Example 1 in the user's guide
%%=============================
- ?line ok = rpc:call(Cp1, application, load, [myApp,
+ ok = rpc:call(Cp1, application, load, [myApp,
d_any3(myApp, NodeNames)]),
- ?line ?UNTIL(is_loaded(myApp, Cp1)),
- ?line ok = rpc:call(Cp1, application, start, [myApp, permanent]),
- ?line ?UNTIL(is_started(myApp, Cp1)),
- ?line ok = get_start_phase({sp, 0, 1, 0, 0, 1}),
- ?line ok = rpc:call(Cp1, application, stop, [myApp]),
+ ?UNTIL(is_loaded(myApp, Cp1)),
+ ok = rpc:call(Cp1, application, start, [myApp, permanent]),
+ ?UNTIL(is_started(myApp, Cp1)),
+ ok = get_start_phase({sp, 0, 1, 0, 0, 1}),
+ ok = rpc:call(Cp1, application, stop, [myApp]),
%%=============================
%%Example 2 in the user's guide
%%=============================
- ?line ok = rpc:call(Cp1, application, load, [topApp,
+ ok = rpc:call(Cp1, application, load, [topApp,
d_any3(topApp, NodeNames)]),
- ?line ?UNTIL(is_loaded(topApp, Cp1)),
- ?line ok = rpc:call(Cp1, application, start, [topApp, permanent]),
- ?line ?UNTIL(is_started(topApp, Cp1)),
- ?line ok = get_start_phase({sp, 0, 1, 0, 0, 1}),
- ?line ok = rpc:call(Cp1, application, stop, [topApp]),
+ ?UNTIL(is_loaded(topApp, Cp1)),
+ ok = rpc:call(Cp1, application, start, [topApp, permanent]),
+ ?UNTIL(is_started(topApp, Cp1)),
+ ok = get_start_phase({sp, 0, 1, 0, 0, 1}),
+ ok = rpc:call(Cp1, application, stop, [topApp]),
%%=============================
%%Example 3 in the user's guide
%%=============================
- ?line ok = rpc:call(Cp1, application, load, [topApp2,
+ ok = rpc:call(Cp1, application, load, [topApp2,
d_any3(topApp2, NodeNames)]),
- ?line ?UNTIL(is_loaded(topApp2, Cp1)),
- ?line ok = rpc:call(Cp1, application, start, [topApp2, permanent]),
- ?line ?UNTIL(is_started(topApp2, Cp1)),
- ?line ok = get_start_phase({sp, 0, 2, 0, 0, 3}),
- ?line ok = rpc:call(Cp1, application, stop, [topApp2]),
+ ?UNTIL(is_loaded(topApp2, Cp1)),
+ ok = rpc:call(Cp1, application, start, [topApp2, permanent]),
+ ?UNTIL(is_started(topApp2, Cp1)),
+ ok = get_start_phase({sp, 0, 2, 0, 0, 3}),
+ ok = rpc:call(Cp1, application, stop, [topApp2]),
%%=============================
%%Example 4 in the user's guide
%%=============================
- ?line ok = rpc:call(Cp1, application, load, [topApp3,
+ ok = rpc:call(Cp1, application, load, [topApp3,
d_any3(topApp3, NodeNames)]),
- ?line ?UNTIL(is_loaded(topApp3, Cp1)),
- ?line ok = rpc:call(Cp1, application, start, [topApp3, permanent]),
- ?line ?UNTIL(is_started(topApp3, Cp1)),
- ?line ok = get_start_phase({sp, 1, 3, 3, 2, 4}),
- ?line ok = rpc:call(Cp1, application, stop, [topApp3]),
+ ?UNTIL(is_loaded(topApp3, Cp1)),
+ ok = rpc:call(Cp1, application, start, [topApp3, permanent]),
+ ?UNTIL(is_started(topApp3, Cp1)),
+ ok = get_start_phase({sp, 1, 3, 3, 2, 4}),
+ ok = rpc:call(Cp1, application, stop, [topApp3]),
global:send(start_phase, kill),
@@ -554,101 +557,101 @@ script_start(suite) -> [];
script_start(Conf) when is_list(Conf) ->
%% start a help process to check the start type
StPid = spawn_link(?MODULE, start_type, []),
- ?line yes = global:register_name(st_type, StPid),
+ yes = global:register_name(st_type, StPid),
% Create the .app files and the boot script
- ?line ok = create_app(),
- ?line {{KernelVer,StdlibVer}, _} = create_script("latest"),
- ?line case is_real_system(KernelVer, StdlibVer) of
+ ok = create_app(),
+ {{KernelVer,StdlibVer}, _} = create_script("latest"),
+ case is_real_system(KernelVer, StdlibVer) of
true ->
Options = [];
false ->
Options = [local]
end,
- ?line ok = systools:make_script("latest", Options),
+ ok = systools:make_script("latest", Options),
NodeNames = [Ncp1, Ncp2, Ncp3] = node_names([cp1, cp2, cp3], Conf),
NoSyncTime = config_fun_fast(config_fo(NodeNames)),
WithSyncTime = config_fun(config_fo(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_boot_config(Ncp1, NoSyncTime, Conf, latest),
- ?line {ok, Cp2} = start_node_boot_config(Ncp2, NoSyncTime, Conf, latest),
- ?line {ok, Cp3} = start_node_boot_config(Ncp3, WithSyncTime, Conf, latest),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node_boot_config(Ncp1, NoSyncTime, Conf, latest),
+ {ok, Cp2} = start_node_boot_config(Ncp2, NoSyncTime, Conf, latest),
+ {ok, Cp3} = start_node_boot_config(Ncp3, WithSyncTime, Conf, latest),
+ wait_for_ready_net(),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line ?UNTIL(is_started(app2, Cp1)),
- ?line ?UNTIL(is_started(app_sp, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line ok = get_start_type(#st{normal = 9}),
+ ?UNTIL(is_started(app1, Cp1)),
+ ?UNTIL(is_started(app2, Cp1)),
+ ?UNTIL(is_started(app_sp, Cp1)),
+ false = is_started(app1, Cp2),
+ ok = get_start_type(#st{normal = 9}),
% Stop cp1 and make sure cp2 starts app1, app2 normally (no
% start_phases defined) and app_sp as failover (start_phases
% defined)
stop_node_nice(Cp1),
- ?line ?UNTIL(is_started(app1, Cp2)),
- ?line ?UNTIL(is_started(app2, Cp2)),
- ?line ?UNTIL(is_started(app_sp, Cp2)),
- ?line ok = get_start_type(#st{normal = 6, failover = 3}),
+ ?UNTIL(is_started(app1, Cp2)),
+ ?UNTIL(is_started(app2, Cp2)),
+ ?UNTIL(is_started(app_sp, Cp2)),
+ ok = get_start_type(#st{normal = 6, failover = 3}),
% Restart cp1, Cp1 takesover app1 and app2
- ?line {ok, Cp1_2} = start_node_boot_config(Ncp1, NoSyncTime, Conf, latest),
- ?line global:sync(),
- ?line ?UNTIL(is_started(app1, Cp1_2)),
- ?line false = is_started(app1, Cp2),
- ?line ?UNTIL(is_started(app2, Cp1_2)),
- ?line true = is_started(app_sp, Cp2),
- ?line ?UNTIL(not is_started(app1, Cp2)),
- ?line ?UNTIL(not is_started(app2, Cp2)),
- ?line ok = get_start_type(#st{takeover = 6}),
+ {ok, Cp1_2} = start_node_boot_config(Ncp1, NoSyncTime, Conf, latest),
+ global:sync(),
+ ?UNTIL(is_started(app1, Cp1_2)),
+ false = is_started(app1, Cp2),
+ ?UNTIL(is_started(app2, Cp1_2)),
+ true = is_started(app_sp, Cp2),
+ ?UNTIL(not is_started(app1, Cp2)),
+ ?UNTIL(not is_started(app2, Cp2)),
+ ok = get_start_type(#st{takeover = 6}),
% Stop cp2 and make sure cp1 starts app_sp.
- ?line false = is_started(app_sp, Cp1_2),
+ false = is_started(app_sp, Cp1_2),
stop_node_nice(Cp2),
- ?line ?UNTIL(is_started(app_sp, Cp1_2)),
- ?line ok = get_start_type(#st{failover = 3}),
+ ?UNTIL(is_started(app_sp, Cp1_2)),
+ ok = get_start_type(#st{failover = 3}),
% Stop cp1 and make sure cp3 starts app1, app2 and app_sp
stop_node_nice(Cp1_2),
- ?line ?UNTIL(is_started(app_sp, Cp3)),
- ?line ?UNTIL(is_started(app1, Cp3)),
- ?line ?UNTIL(is_started(app2, Cp3)),
- ?line ok = get_start_type(#st{normal = 6, failover = 3}),
+ ?UNTIL(is_started(app_sp, Cp3)),
+ ?UNTIL(is_started(app1, Cp3)),
+ ?UNTIL(is_started(app2, Cp3)),
+ ok = get_start_type(#st{normal = 6, failover = 3}),
% Restart cp2 and make sure it takesover app1, app2 and app_sp
- ?line {ok, Cp2_2} = start_node_boot_config(Ncp2, NoSyncTime, Conf, latest),
- ?line global:sync(),
- ?line ?UNTIL(is_started(app_sp, Cp2_2)),
- ?line ?UNTIL(is_started(app1, Cp2_2)),
- ?line ?UNTIL(is_started(app2, Cp2_2)),
- ?line ?UNTIL(not is_started(app_sp, Cp3)),
- ?line ?UNTIL(not is_started(app1, Cp3)),
- ?line ?UNTIL(not is_started(app2, Cp3)),
- ?line ok = get_start_type(#st{takeover = 9}),
+ {ok, Cp2_2} = start_node_boot_config(Ncp2, NoSyncTime, Conf, latest),
+ global:sync(),
+ ?UNTIL(is_started(app_sp, Cp2_2)),
+ ?UNTIL(is_started(app1, Cp2_2)),
+ ?UNTIL(is_started(app2, Cp2_2)),
+ ?UNTIL(not is_started(app_sp, Cp3)),
+ ?UNTIL(not is_started(app1, Cp3)),
+ ?UNTIL(not is_started(app2, Cp3)),
+ ok = get_start_type(#st{takeover = 9}),
% Restart cp1 and make sure it takesover app1, app2
- ?line {ok, Cp1_3} = start_node_boot_config(Ncp1, NoSyncTime, Conf, latest),
- ?line global:sync(),
- ?line ?UNTIL(is_started(app1, Cp1_3)),
- ?line ?UNTIL(is_started(app2, Cp1_3)),
- ?line false = is_started(app_sp, Cp1_3),
- ?line true = is_started(app_sp, Cp2_2),
- ?line ?UNTIL(not is_started(app1, Cp2_2)),
- ?line ?UNTIL(not is_started(app2, Cp2_2)),
- ?line ok = get_start_type(#st{takeover = 6}),
+ {ok, Cp1_3} = start_node_boot_config(Ncp1, NoSyncTime, Conf, latest),
+ global:sync(),
+ ?UNTIL(is_started(app1, Cp1_3)),
+ ?UNTIL(is_started(app2, Cp1_3)),
+ false = is_started(app_sp, Cp1_3),
+ true = is_started(app_sp, Cp2_2),
+ ?UNTIL(not is_started(app1, Cp2_2)),
+ ?UNTIL(not is_started(app2, Cp2_2)),
+ ok = get_start_type(#st{takeover = 6}),
% Force takeover to cp1
- ?line ok = rpc:call(Cp1_3, application, takeover, [app_sp, permanent]),
- ?line ?UNTIL(is_started(app_sp, Cp1_3)),
- ?line ?UNTIL(not is_started(app_sp, Cp2_2)),
- ?line ok = get_start_type(#st{takeover = 3}),
+ ok = rpc:call(Cp1_3, application, takeover, [app_sp, permanent]),
+ ?UNTIL(is_started(app_sp, Cp1_3)),
+ ?UNTIL(not is_started(app_sp, Cp2_2)),
+ ok = get_start_type(#st{takeover = 3}),
%% Kill one child process and see that it is started with type local
PP = global:whereis_name({ch,3}),
exit(PP, kill),
- ?line ok = get_start_type(#st{local = 1}),
+ ok = get_start_type(#st{local = 1}),
global:send(st_type, kill),
@@ -656,9 +659,9 @@ script_start(Conf) when is_list(Conf) ->
stop_node_nice(Cp2_2),
stop_node_nice(Cp3),
- ?line ok = file:delete("latest.boot"),
- ?line ok = file:delete("latest.rel"),
- ?line ok = file:delete("latest.script"),
+ ok = file:delete("latest.boot"),
+ ok = file:delete("latest.rel"),
+ ok = file:delete("latest.script"),
ok.
@@ -672,119 +675,119 @@ permit_false_start_local(Conf) when is_list(Conf) ->
% Test [cp1, cp2, cp3]
[Ncp1, Ncp2, Ncp3] = node_names([cp1, cp2, cp3], Conf),
- ?line {ok, Cp1} = start_node(Ncp1, Config),
- ?line {ok, Cp2} = start_node(Ncp2, Config),
- ?line {ok, Cp3} = start_node(Ncp3, Config),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node(Ncp1, Config),
+ {ok, Cp2} = start_node(Ncp2, Config),
+ {ok, Cp3} = start_node(Ncp3, Config),
+ wait_for_ready_net(),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3], application, load, [app1()]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3], application, start, [app1, permanent]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3], application, load, [app2()]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3], application, start, [app2, permanent]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3], application, load, [app3()]),
test_server:sleep(1000),
- ?line false = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ false = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
%Permit a not started application
- ?line ok = rpc:call(Cp1, application, permit, [app3, true]),
+ ok = rpc:call(Cp1, application, permit, [app3, true]),
test_server:sleep(1000),
- ?line false = is_started(app3, Cp1),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ false = is_started(app3, Cp1),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
%Permit a not loaded application
- ?line {error,{not_loaded,app_notloaded}} =
+ {error,{not_loaded,app_notloaded}} =
rpc:call(Cp1, application, permit, [app_notloaded, true]),
test_server:sleep(1000),
- ?line false = is_started(app_notloaded, Cp1),
- ?line false = is_started(app_notloaded, Cp2),
- ?line false = is_started(app_notloaded, Cp3),
+ false = is_started(app_notloaded, Cp1),
+ false = is_started(app_notloaded, Cp2),
+ false = is_started(app_notloaded, Cp3),
%Unpermit a not started application
- ?line ok = rpc:call(Cp1, application, permit, [app3, false]),
+ ok = rpc:call(Cp1, application, permit, [app3, false]),
test_server:sleep(1000),
- ?line false = is_started(app3, Cp1),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ false = is_started(app3, Cp1),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
%Unpermit a not loaded application
- ?line {error,{not_loaded,app_notloaded}} =
+ {error,{not_loaded,app_notloaded}} =
rpc:call(Cp1, application, permit, [app_notloaded, false]),
test_server:sleep(1000),
- ?line false = is_started(app_notloaded, Cp1),
- ?line false = is_started(app_notloaded, Cp2),
- ?line false = is_started(app_notloaded, Cp3),
+ false = is_started(app_notloaded, Cp1),
+ false = is_started(app_notloaded, Cp2),
+ false = is_started(app_notloaded, Cp3),
% Permit app1 on CP1 and make sure it is started
- ?line ok = rpc:call(Cp1, application, permit, [app1, true]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app1, true]),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Permit it again
- ?line ok = rpc:call(Cp1, application, permit, [app1, true]),
+ ok = rpc:call(Cp1, application, permit, [app1, true]),
test_server:sleep(1000),
- ?line true = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ true = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Permit app2 on CP1 and make sure it is started
- ?line ok = rpc:call(Cp1, application, permit, [app2, true]),
- ?line ?UNTIL(is_started(app2, Cp1)),
- ?line false = is_started(app2, Cp2),
- ?line false = is_started(app2, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app2, true]),
+ ?UNTIL(is_started(app2, Cp1)),
+ false = is_started(app2, Cp2),
+ false = is_started(app2, Cp3),
% Permit app1 on CP2 and make sure it is started
- ?line ok = rpc:call(Cp2, application, permit, [app1, true]),
- ?line ?UNTIL(is_started(app1, Cp2)),
- ?line true = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp2, application, permit, [app1, true]),
+ ?UNTIL(is_started(app1, Cp2)),
+ true = is_started(app1, Cp1),
+ false = is_started(app1, Cp3),
% Unpermit app1 on CP1 and make sure it is stopped
- ?line ok = rpc:call(Cp1, application, permit, [app1, false]),
- ?line ?UNTIL(false =:= is_started(app1, Cp1)),
- ?line true = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app1, false]),
+ ?UNTIL(false =:= is_started(app1, Cp1)),
+ true = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Unpermit it agin
- ?line ok = rpc:call(Cp1, application, permit, [app1, false]),
+ ok = rpc:call(Cp1, application, permit, [app1, false]),
test_server:sleep(1000),
- ?line false = is_started(app1, Cp1),
- ?line true = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ false = is_started(app1, Cp1),
+ true = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Permit app1 on CP1 and make sure it is started
- ?line ok = rpc:call(Cp1, application, permit, [app1, true]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line true = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app1, true]),
+ ?UNTIL(is_started(app1, Cp1)),
+ true = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Unpermit app1 on CP1 and make sure it is stopped
- ?line ok = rpc:call(Cp1, application, permit, [app1, false]),
- ?line ?UNTIL(false =:= is_started(app1, Cp1)),
- ?line true = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app1, false]),
+ ?UNTIL(false =:= is_started(app1, Cp1)),
+ true = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Unpermit app1 on CP2 and make sure it is stopped
- ?line ok = rpc:call(Cp2, application, permit, [app1, false]),
+ ok = rpc:call(Cp2, application, permit, [app1, false]),
test_server:sleep(1000),
- ?line ?UNTIL(false =:= is_started(app1, Cp2)),
- ?line false = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp3),
+ ?UNTIL(false =:= is_started(app1, Cp2)),
+ false = is_started(app1, Cp1),
+ false = is_started(app1, Cp3),
% Unpermit app2 on CP1 and make sure it is stopped
- ?line ok = rpc:call(Cp1, application, permit, [app2, false]),
- ?line ?UNTIL(false =:= is_started(app2, Cp2)),
- ?line false = is_started(app2, Cp1),
- ?line false = is_started(app2, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app2, false]),
+ ?UNTIL(false =:= is_started(app2, Cp2)),
+ false = is_started(app2, Cp1),
+ false = is_started(app2, Cp3),
stop_node_nice(Cp1),
stop_node_nice(Cp2),
@@ -802,125 +805,125 @@ permit_false_start_dist(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config_perm2(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
- ?line {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, NoSyncTime, Conf),
+ {ok, Cp3} = start_node_config(Ncp3, WithSyncTime, Conf),
Cps = [Cp1, Cp2, Cp3],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app1, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app1, permanent]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app2()]),
test_server:sleep(1000),
- ?line false = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ false = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
%Permit a not started application
- ?line ok = rpc:call(Cp1, application, permit, [app2, true]),
+ ok = rpc:call(Cp1, application, permit, [app2, true]),
test_server:sleep(1000),
- ?line false = is_started(app2, Cp1),
- ?line false = is_started(app2, Cp2),
- ?line false = is_started(app2, Cp3),
+ false = is_started(app2, Cp1),
+ false = is_started(app2, Cp2),
+ false = is_started(app2, Cp3),
%Permit a not loaded application
- ?line {error,{not_loaded,app3}} =
+ {error,{not_loaded,app3}} =
rpc:call(Cp1, application, permit, [app3, true]),
test_server:sleep(1000),
- ?line false = is_started(app3, Cp1),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ false = is_started(app3, Cp1),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
%Unpermit a not started application
- ?line ok = rpc:call(Cp1, application, permit, [app2, false]),
- ?line {[ok,ok,ok],[]} =
+ ok = rpc:call(Cp1, application, permit, [app2, false]),
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3], application, start, [app2, permanent]),
test_server:sleep(1000),
- ?line false = is_started(app2, Cp1),
- ?line false = is_started(app2, Cp2),
- ?line false = is_started(app2, Cp3),
+ false = is_started(app2, Cp1),
+ false = is_started(app2, Cp2),
+ false = is_started(app2, Cp3),
%Unpermit a not loaded application
- ?line {error,{not_loaded,app3}} =
+ {error,{not_loaded,app3}} =
rpc:call(Cp1, application, permit, [app3, false]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, load, [app3()]),
- ?line ?UNTIL(is_loaded(app3, Cps)),
- ?line {[ok,ok,ok],[]} =
+ ?UNTIL(is_loaded(app3, Cps)),
+ {[ok,ok,ok],[]} =
rpc:multicall(Cps, application, start, [app3, permanent]),
test_server:sleep(1000),
- ?line false = is_started(app3, Cp1),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ false = is_started(app3, Cp1),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
% Permit app1 on CP1 and make sure it is started
- ?line ok = rpc:call(Cp1, application, permit, [app1, true]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app1, true]),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Permit it again
- ?line ok = rpc:call(Cp1, application, permit, [app1, true]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app1, true]),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Permit app2 on CP1 and make sure it is started
- ?line ok = rpc:call(Cp1, application, permit, [app2, true]),
- ?line ?UNTIL(is_started(app2, Cp1)),
- ?line false = is_started(app2, Cp2),
- ?line false = is_started(app2, Cp3),
+ ok = rpc:call(Cp1, application, permit, [app2, true]),
+ ?UNTIL(is_started(app2, Cp1)),
+ false = is_started(app2, Cp2),
+ false = is_started(app2, Cp3),
% Permit app1 on CP2 and make sure it is not started
- ?line ok = rpc:call(Cp2, application, permit, [app1, true]),
+ ok = rpc:call(Cp2, application, permit, [app1, true]),
test_server:sleep(1000),
- ?line true = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
- ?line false = is_started(app1, Cp3),
+ true = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
+ false = is_started(app1, Cp3),
% Crash CP1 and make sure app1, but not app2, is started on CP2
stop_node_nice(Cp1),
- ?line ?UNTIL(is_started(app1, Cp2)),
- ?line false = is_started(app2, Cp2),
+ ?UNTIL(is_started(app1, Cp2)),
+ false = is_started(app2, Cp2),
% Restart CP1 again, check nothing is running on it
- ?line {ok, Cp1_2} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line global:sync(),
- ?line ok = rpc:call(Cp1_2, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cp1_2)),
- ?line ok = rpc:call(Cp1_2, application, start, [app1, permanent]),
- ?line ok = rpc:call(Cp1_2, application, load, [app2()]),
- ?line ?UNTIL(is_loaded(app2, Cp1_2)),
- ?line ok = rpc:call(Cp1_2, application, start, [app2, permanent]),
- ?line ok = rpc:call(Cp1_2, application, load, [app3()]),
- ?line ?UNTIL(is_loaded(app3, Cp1_2)),
- ?line ok = rpc:call(Cp1_2, application, start, [app3, permanent]),
- ?line false = is_started(app1, Cp1_2),
- ?line false = is_started(app2, Cp1_2),
+ {ok, Cp1_2} = start_node_config(Ncp1, NoSyncTime, Conf),
+ global:sync(),
+ ok = rpc:call(Cp1_2, application, load, [app1()]),
+ ?UNTIL(is_loaded(app1, Cp1_2)),
+ ok = rpc:call(Cp1_2, application, start, [app1, permanent]),
+ ok = rpc:call(Cp1_2, application, load, [app2()]),
+ ?UNTIL(is_loaded(app2, Cp1_2)),
+ ok = rpc:call(Cp1_2, application, start, [app2, permanent]),
+ ok = rpc:call(Cp1_2, application, load, [app3()]),
+ ?UNTIL(is_loaded(app3, Cp1_2)),
+ ok = rpc:call(Cp1_2, application, start, [app3, permanent]),
+ false = is_started(app1, Cp1_2),
+ false = is_started(app2, Cp1_2),
% Permit app3 on CP3 and make sure it is started
- ?line ok = rpc:call(Cp3, application, permit, [app3, true]),
- ?line ?UNTIL(is_started(app3, Cp3)),
- ?line false = is_started(app3, Cp1_2),
- ?line false = is_started(app3, Cp2),
+ ok = rpc:call(Cp3, application, permit, [app3, true]),
+ ?UNTIL(is_started(app3, Cp3)),
+ false = is_started(app3, Cp1_2),
+ false = is_started(app3, Cp2),
% Permit app3 on CP1 and make sure it is moved there from CP3
- ?line ok = rpc:call(Cp1_2, application, permit, [app3, true]),
- ?line ?UNTIL(is_started(app3, Cp1_2)),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ ok = rpc:call(Cp1_2, application, permit, [app3, true]),
+ ?UNTIL(is_started(app3, Cp1_2)),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
% Unpermit app3 on CP3 and CP1 and make sure it is stopped
- ?line ok = rpc:call(Cp3, application, permit, [app3, false]),
- ?line ok = rpc:call(Cp1_2, application, permit, [app3, false]),
- ?line ?UNTIL(false =:= is_started(app3, Cp1_2)),
- ?line false = is_started(app3, Cp2),
- ?line false = is_started(app3, Cp3),
+ ok = rpc:call(Cp3, application, permit, [app3, false]),
+ ok = rpc:call(Cp1_2, application, permit, [app3, false]),
+ ?UNTIL(false =:= is_started(app3, Cp1_2)),
+ false = is_started(app3, Cp2),
+ false = is_started(app3, Cp3),
stop_node_nice(Cp1_2),
stop_node_nice(Cp2),
@@ -937,23 +940,45 @@ nodedown_start(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config4(NodeNames)),
% Test [cp1, cp2]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
+ wait_for_ready_net(),
% Start app1 and make sure cp1 starts it
- ?line {[ok,ok],[]} =
+ {[ok,ok],[]} =
rpc:multicall([Cp1, Cp2], application, load, [app1()]),
- ?line _ = rpc:cast(Cp2, application, start, [app1, permanent]),
+ _ = rpc:cast(Cp2, application, start, [app1, permanent]),
test_server:sleep(1000),
% Crash CP1 and make sure app1 is started on CP2
stop_node_nice(Cp1),
- ?line ?UNTIL(is_started(app1, Cp2)),
+ ?UNTIL(is_started(app1, Cp2)),
stop_node_nice(Cp2),
ok.
+
+ensure_started(suite) -> [];
+ensure_started(doc) -> ["Test application:ensure_started/1."];
+ensure_started(Conf) ->
+
+ {ok, Fd} = file:open("app1.app", [write]),
+ w_app1(Fd),
+ file:close(Fd),
+
+ ok = application:ensure_started(app1),
+ ok = application:ensure_started(app1),
+ {error, {already_started, app1}} = application:start(app1),
+ ok = application:stop(app1),
+ {error,{"no such file or directory", _ }} = application:ensure_started(hopefully_not_an_existing_app_file),
+
+ ok = application:ensure_started(app1, permanent),
+ ok = application:ensure_started(app1, permanent),
+ ok = application:stop(app1),
+ ok = application:unload(app1),
+ ok.
+
+
%%%-----------------------------------------------------------------
%%% Testing of reported bugs and other tickets.
%%%-----------------------------------------------------------------
@@ -970,9 +995,9 @@ otp_1586(Conf) when is_list(Conf) ->
{ok, Fd} = file:open(filename:join(Dir, "app5.app"), [write]),
w_app5(Fd),
file:close(Fd),
- ?line code:add_patha(Dir),
- ?line ok = application:load(app4()),
- ?line ok = application:unload(app4),
+ code:add_patha(Dir),
+ ok = application:load(app4()),
+ ok = application:unload(app4),
ok.
%%-----------------------------------------------------------------
@@ -989,24 +1014,24 @@ otp_2078(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config4(NodeNames)),
% Test [cp1, cp2]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
Cps = [Cp1, Cp2],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
% Start app1 and make sure cp1 starts it
- ?line {[ok,ok],[]} =
+ {[ok,ok],[]} =
rpc:multicall(Cps, application, load, [app1()]),
- ?line ?UNTIL(is_loaded(app1, Cps)),
- ?line ok = rpc:call(Cp1, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
+ ?UNTIL(is_loaded(app1, Cps)),
+ ok = rpc:call(Cp1, application, start, [app1, permanent]),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
% Start app1 on cp2; make sure it works (the bug was that this start
% returned error)
- ?line ok = rpc:call(Cp2, application, start, [app1, permanent]),
- ?line true = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
+ ok = rpc:call(Cp2, application, start, [app1, permanent]),
+ true = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
stop_node_nice(Cp1),
stop_node_nice(Cp2),
@@ -1018,7 +1043,7 @@ otp_2012(doc) ->
otp_2012(Conf) when is_list(Conf) ->
%% start a help process to check the config change
CcPid = spawn_link(?MODULE, conf_change, []),
- ?line yes = global:register_name(conf_change, CcPid),
+ yes = global:register_name(conf_change, CcPid),
% Write a .app file
{ok, Fd} = file:open("app1.app", [write]),
@@ -1029,19 +1054,19 @@ otp_2012(Conf) when is_list(Conf) ->
file:close(Fd2),
% Start app1
- ?line ok = application:load(app1()),
- ?line ok = application:start(app1, permanent),
+ ok = application:load(app1()),
+ ok = application:start(app1, permanent),
%% Read the current configuration parameters, and change them
EnvBefore = application_controller:prep_config_change(),
application_controller:test_change_apps([app1],[[{app1,[{new1, hi},
{new2, moi}]}]]),
- ?line ok = application_controller:config_change(EnvBefore),
- ?line ok = get_conf_change([{[], [{new1, hi}, {new2, moi}], []}]),
+ ok = application_controller:config_change(EnvBefore),
+ ok = get_conf_change([{[], [{new1, hi}, {new2, moi}], []}]),
% Start app2
- ?line ok = application:load(app2()),
- ?line ok = application:start(app2, permanent),
+ ok = application:load(app2()),
+ ok = application:start(app2, permanent),
%% Read the current configuration parameters, and change them again
EnvBefore2 = application_controller:prep_config_change(),
@@ -1050,13 +1075,13 @@ otp_2012(Conf) when is_list(Conf) ->
application_controller:test_change_apps([app2],[[{app2,[{new1, si},
{new2, no}]}]]),
_EnvBefore22 = application_controller:prep_config_change(),
- ?line ok = application_controller:config_change(EnvBefore2),
+ ok = application_controller:config_change(EnvBefore2),
- ?line ok = get_conf_change([{[],[{new1,si},{new2,no}],[]},
+ ok = get_conf_change([{[],[{new1,si},{new2,no}],[]},
{[{new1,hello}],[{new3,mors}],[new2]}]),
- ?line ok = application:stop(app1),
- ?line ok = application:stop(app2),
+ ok = application:stop(app1),
+ ok = application:stop(app2),
ok.
%%-----------------------------------------------------------------
@@ -1067,24 +1092,24 @@ otp_2718(suite) -> [];
otp_2718(doc) ->
["Test fail of transient app at start."];
otp_2718(Conf) when is_list(Conf) ->
- ?line {ok, Cp1} = start_node_args(cp1, "-pa " ++ ?config(data_dir,Conf)),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node_args(cp1, "-pa " ++ ?config(data_dir,Conf)),
+ wait_for_ready_net(),
%% normal exit from the application
- ?line ok = rpc:call(Cp1, application, load, [app_trans_normal()]),
- ?line ?UNTIL(is_loaded(trans_normal, Cp1)),
- ?line {error, {{'EXIT',normal},_}} =
+ ok = rpc:call(Cp1, application, load, [app_trans_normal()]),
+ ?UNTIL(is_loaded(trans_normal, Cp1)),
+ {error, {{'EXIT',normal},_}} =
rpc:call(Cp1, application, start, [trans_normal, transient]),
test_server:sleep(2000),
- ?line false = is_started(trans_normal, Cp1),
+ false = is_started(trans_normal, Cp1),
%% abnormal exit from the application
- ?line ok = rpc:call(Cp1, application, load, [app_trans_abnormal()]),
- ?line {error, {bad_return,{{trans_abnormal_sup,start,[normal,[]]},
+ ok = rpc:call(Cp1, application, load, [app_trans_abnormal()]),
+ {error, {bad_return,{{trans_abnormal_sup,start,[normal,[]]},
{'EXIT',abnormal}}}} =
rpc:call(Cp1, application, start, [trans_abnormal, transient]),
test_server:sleep(3000),
- ?line {badrpc,nodedown} = which_applications(Cp1),
+ {badrpc,nodedown} = which_applications(Cp1),
ok.
%%-----------------------------------------------------------------
@@ -1100,65 +1125,65 @@ otp_2973(Conf) when is_list(Conf) ->
w_app(Fd, app0()),
file:close(Fd),
- ?line Pid1 = spawn_link(?MODULE, init2973, []),
- ?line Pid2 = spawn_link(?MODULE, init2973, []),
+ Pid1 = spawn_link(?MODULE, init2973, []),
+ Pid2 = spawn_link(?MODULE, init2973, []),
- ?line Pid1 ! {start, self(), app0},
- ?line Pid2 ! {start, self(), app0},
+ Pid1 ! {start, self(), app0},
+ Pid2 ! {start, self(), app0},
- ?line {Res1, Res2} = receive
+ {Res1, Res2} = receive
{Pid1, res, Res1x} ->
receive
{Pid2, res, Res2x} ->
{Res1x, Res2x}
after 2000 ->
- ?line test_server:fail(timeout_pid2)
+ test_server:fail(timeout_pid2)
end;
{Pid2, res, Res2x} ->
receive
{Pid1, res, Res1x} ->
{Res1x, Res2x}
after 2000 ->
- ?line test_server:fail(timeout_pid1)
+ test_server:fail(timeout_pid1)
end
end,
%% Stop it. Inteferes with other global.
- ?line ok = application:stop(app0),
+ ok = application:stop(app0),
%% Test result.
case {Res1, Res2} of
{ok, ok} ->
ok;
_ ->
- ?line Txt = io_lib:format("Illegal results from start: ~p ~p ",
+ Txt = io_lib:format("Illegal results from start: ~p ~p ",
[Res1, Res2]),
- ?line test_server:fail(lists:flatten(Txt))
+ test_server:fail(lists:flatten(Txt))
end,
% Write a .app file
- ?line {ok, Fda} = file:open("app_start_error.app", [write]),
- ?line w_app_start_error(Fda),
- ?line file:close(Fda),
+ {ok, Fda} = file:open("app_start_error.app", [write]),
+ w_app_start_error(Fda),
+ file:close(Fda),
- ?line Pid1 ! {start, self(), app_start_error},
- ?line Pid2 ! {start, self(), app_start_error},
+ Pid1 ! {start, self(), app_start_error},
+ Pid2 ! {start, self(), app_start_error},
- ?line {Res1a, Res2a} = receive
+ {Res1a, Res2a} = receive
{Pid1, res, Res1y} ->
receive
{Pid2, res, Res2y} ->
{Res1y, Res2y}
after 2000 ->
- ?line test_server:fail(timeout_pid2)
+ test_server:fail(timeout_pid2)
end;
{Pid2, res, Res2y} ->
receive
{Pid1, res, Res1y} ->
{Res1y, Res2y}
after 2000 ->
- ?line test_server:fail(timeout_pid1)
+ test_server:fail(timeout_pid1)
end
end,
@@ -1167,8 +1192,8 @@ otp_2973(Conf) when is_list(Conf) ->
{error,{'start error',{app_start_error,start,[normal,[]]}}}} ->
ok;
_ ->
- ?line Txta = io_lib:format("Illegal results from start ~p ~p ",[Res1a, Res2a]),
- ?line test_server:fail(lists:flatten(Txta))
+ Txta = io_lib:format("Illegal results from start ~p ~p ",[Res1a, Res2a]),
+ test_server:fail(lists:flatten(Txta))
end,
ok.
@@ -1190,34 +1215,34 @@ otp_3184(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config3184(NodeNames)),
% Test [cp1, cp2]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
+ wait_for_ready_net(),
% Start app1 and make sure it is not started
- ?line {[ok,ok],[]} =
+ {[ok,ok],[]} =
rpc:multicall([Cp1, Cp2], application, load, [app1()]),
test_server:sleep(3000),
- ?line false = is_started(app1, Cp1),
- ?line false = is_started(app1, Cp2),
+ false = is_started(app1, Cp1),
+ false = is_started(app1, Cp2),
% Start app1 on cp1
- ?line ok = rpc:call(Cp1, application, permit, [app1, true]),
- ?line ok = rpc:call(Cp1, application, start, [app1, permanent]),
- ?line ok = rpc:call(Cp2, application, start, [app1, permanent]),
- ?line ?UNTIL(is_started(app1, Cp1)),
- ?line false = is_started(app1, Cp2),
+ ok = rpc:call(Cp1, application, permit, [app1, true]),
+ ok = rpc:call(Cp1, application, start, [app1, permanent]),
+ ok = rpc:call(Cp2, application, start, [app1, permanent]),
+ ?UNTIL(is_started(app1, Cp1)),
+ false = is_started(app1, Cp2),
% Check that the application is marked as running in application_controller
- ?line X = rpc:call(Cp1, application_controller, info, []),
- ?line {value, {running, Xrunning}} = lists:keysearch(running, 1, X),
- ?line {value, Xapp1} = lists:keysearch(app1, 1, Xrunning),
- ?line {app1, _Xpid} = Xapp1,
+ X = rpc:call(Cp1, application_controller, info, []),
+ {value, {running, Xrunning}} = lists:keysearch(running, 1, X),
+ {value, Xapp1} = lists:keysearch(app1, 1, Xrunning),
+ {app1, _Xpid} = Xapp1,
- ?line Y = rpc:call(Cp2, application_controller, info, []),
- ?line {value, {running, Yrunning}} = lists:keysearch(running, 1, Y),
- ?line {value, Yapp1} = lists:keysearch(app1, 1, Yrunning),
- ?line {app1, {distributed, Cp1}} = Yapp1,
+ Y = rpc:call(Cp2, application_controller, info, []),
+ {value, {running, Yrunning}} = lists:keysearch(running, 1, Y),
+ {value, Yapp1} = lists:keysearch(app1, 1, Yrunning),
+ {app1, {distributed, Cp1}} = Yapp1,
stop_node_nice(Cp1),
stop_node_nice(Cp2),
@@ -1232,26 +1257,26 @@ otp_3002(doc) ->
["crash the node if permanent appl has illegal env parameter values."];
otp_3002(Conf) when is_list(Conf) ->
% Create the boot script
- ?line {{KernelVer,StdlibVer}, {LatestDir, LatestName}} =
+ {{KernelVer,StdlibVer}, {LatestDir, LatestName}} =
create_script_3002("script_3002"),
?t:format(0, "LatestDir = ~p~n", [LatestDir]),
?t:format(0, "LatestName = ~p~n", [LatestName]),
- ?line case is_real_system(KernelVer, StdlibVer) of
+ case is_real_system(KernelVer, StdlibVer) of
true ->
Options = [];
false ->
Options = [local]
end,
- ?line ok = systools:make_script("script_3002", Options),
- ?line ok = systools:script2boot("script_3002"),
+ ok = systools:make_script("script_3002", Options),
+ ok = systools:script2boot("script_3002"),
- ?line {error, timeout} = start_node_boot_3002(cp1, "script_3002"),
+ {error, timeout} = start_node_boot_3002(cp1, "script_3002"),
- ?line ok = file:delete("script_3002.boot"),
- ?line ok = file:delete("script_3002.rel"),
- ?line ok = file:delete("script_3002.script"),
+ ok = file:delete("script_3002.boot"),
+ ok = file:delete("script_3002.rel"),
+ ok = file:delete("script_3002.script"),
ok.
%%-----------------------------------------------------------------
@@ -1273,51 +1298,51 @@ otp_4066(Conf) when is_list(Conf) ->
App1Nodes = {app1, AllNodes},
Dir = ?config(priv_dir,Conf),
- ?line {ok, FdC} = file:open(filename:join(Dir, "otp_4066.config"), [write]),
- ?line write_config(FdC, config_4066(AllNodes, 5000, [App1Nodes])),
- ?line file:close(FdC),
+ {ok, FdC} = file:open(filename:join(Dir, "otp_4066.config"), [write]),
+ write_config(FdC, config_4066(AllNodes, 5000, [App1Nodes])),
+ file:close(FdC),
% Write the app1.app file
- ?line {ok, FdA12} = file:open(filename:join(Dir, "app1.app"), [write]),
- ?line w_app1(FdA12),
- ?line file:close(FdA12),
+ {ok, FdA12} = file:open(filename:join(Dir, "app1.app"), [write]),
+ w_app1(FdA12),
+ file:close(FdA12),
Args1 = "-pa " ++ Dir ++ " -config " ++ filename:join(Dir, "otp_4066"),
Args2 = "-pa " ++ Dir ++ " -kernel start_dist_ac true",
- ?line {ok, Cp2} = start_node_args(Ncp2, Args2),
+ {ok, Cp2} = start_node_args(Ncp2, Args2),
%% Cp1 syncs with cp2 (which is known to be up).
- ?line {ok, Cp1} = start_node_args(Ncp1, Args1),
- ?line wait_for_ready_net(),
+ {ok, Cp1} = start_node_args(Ncp1, Args1),
+ wait_for_ready_net(),
- ?line ok = rpc:call(Cp1, application, start, [app1]),
- ?line wait_until_started(app1, [Cp1]),
- ?line test_server:format("--- App1 started at Cp1 ---~n", []),
- ?line print_dac_state(AllNodes),
+ ok = rpc:call(Cp1, application, start, [app1]),
+ wait_until_started(app1, [Cp1]),
+ test_server:format("--- App1 started at Cp1 ---~n", []),
+ print_dac_state(AllNodes),
% Cp2 previously crashed on this stop
- ?line ok = rpc:call(Cp1, application, stop, [app1]),
- ?line wait_until_stopped(app1, [Cp1]),
- ?line test_server:format("--- App1 stopped at Cp1 ---~n", []),
- ?line print_dac_state(AllNodes),
+ ok = rpc:call(Cp1, application, stop, [app1]),
+ wait_until_stopped(app1, [Cp1]),
+ test_server:format("--- App1 stopped at Cp1 ---~n", []),
+ print_dac_state(AllNodes),
- ?line ok = rpc:call(Cp1, application, start, [app1]),
- ?line wait_until_started(app1, [Cp1]),
- ?line test_server:format("--- App1 started at Cp1 ---~n", []),
- ?line print_dac_state(AllNodes),
+ ok = rpc:call(Cp1, application, start, [app1]),
+ wait_until_started(app1, [Cp1]),
+ test_server:format("--- App1 started at Cp1 ---~n", []),
+ print_dac_state(AllNodes),
- ?line ok = rpc:call(Cp2, application, load, [app1, App1Nodes]),
- ?line ok = rpc:call(Cp2, application, start, [app1]),
- ?line test_server:format("--- App1 started at Cp2 ---~n", []),
- ?line print_dac_state(AllNodes),
+ ok = rpc:call(Cp2, application, load, [app1, App1Nodes]),
+ ok = rpc:call(Cp2, application, start, [app1]),
+ test_server:format("--- App1 started at Cp2 ---~n", []),
+ print_dac_state(AllNodes),
- ?line stop_node_nice(Cp1),
- ?line wait_until_started(app1, [Cp2]),
- ?line test_server:format("--- Cp1 crashed; failover to Cp2 ---~n", []),
- ?line print_dac_state(Cp2),
+ stop_node_nice(Cp1),
+ wait_until_started(app1, [Cp2]),
+ test_server:format("--- Cp1 crashed; failover to Cp2 ---~n", []),
+ print_dac_state(Cp2),
- ?line stop_node_nice(Cp2),
+ stop_node_nice(Cp2),
ok.
config_4066(SyncNodesOptional, SyncNodesTimeout, Distributed) ->
@@ -1349,34 +1374,34 @@ otp_4227(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config_4227(NodeNames)),
%% Test [cp1, cp2]
- ?line {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
- ?line {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, NoSyncTime, Conf),
+ {ok, Cp2} = start_node_config(Ncp2, WithSyncTime, Conf),
Cps = [Cp1, Cp2],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
%% Try to start app10 which should fail since app9 is not started
- ?line {[ok,ok],[]} =
+ {[ok,ok],[]} =
rpc:multicall(Cps, application, load, [app9()]),
- ?line ?UNTIL(is_loaded(app9, Cps)),
- ?line {[ok,ok],[]} =
+ ?UNTIL(is_loaded(app9, Cps)),
+ {[ok,ok],[]} =
rpc:multicall(Cps, application, load, [app10_dep9()]),
- ?line {error, {not_started, app9}} =
+ {error, {not_started, app9}} =
rpc:call(Cp1, application, start, [app10]),
%% Start app9 and brutally kill it, then try to start app10
- ?line ok = rpc:call(Cp1, application, start, [app9]),
- ?line test_server:sleep(1000),
- ?line Pid9 = rpc:call(Cp1, erlang, whereis, [ch_sup19]),
- ?line true = erlang:is_pid(Pid9),
- ?line true = erlang:exit(Pid9, kill),
- ?line test_server:sleep(1000),
+ ok = rpc:call(Cp1, application, start, [app9]),
+ test_server:sleep(1000),
+ Pid9 = rpc:call(Cp1, erlang, whereis, [ch_sup19]),
+ true = erlang:is_pid(Pid9),
+ true = erlang:exit(Pid9, kill),
+ test_server:sleep(1000),
%% This gave {error, no_report} before the patch
- ?line {error, {not_running, app9}} =
+ {error, {not_running, app9}} =
rpc:call(Cp1, application, start, [app10]),
- ?line stop_node_nice(Cp1),
- ?line stop_node_nice(Cp2),
+ stop_node_nice(Cp1),
+ stop_node_nice(Cp2),
ok.
config_4227([Ncp1, Ncp2]) ->
@@ -1410,18 +1435,18 @@ otp_5363(Conf) when is_list(Conf) ->
OldPath = code:get_path(),
code:add_patha(?config(data_dir,Conf)),
try
- ?line ok = application:load(app_group_leader()),
- ?line ok = application:start(group_leader),
- ?line case whereis(nisse) of
+ ok = application:load(app_group_leader()),
+ ok = application:start(group_leader),
+ case whereis(nisse) of
Pid when is_pid(Pid) ->
- ?line Mref = erlang:monitor(process, Pid),
- ?line ok = application:stop(group_leader),
+ Mref = erlang:monitor(process, Pid),
+ ok = application:stop(group_leader),
receive
{'DOWN',Mref,_,_,_} -> ok
end,
- ?line undefined = whereis(nisse);
+ undefined = whereis(nisse);
Bad ->
- ?line io:format("~p\n", [Bad]),
+ io:format("~p\n", [Bad]),
?t:fail()
end
after
@@ -1448,25 +1473,25 @@ otp_5606(Conf) when is_list(Conf) ->
Config = filename:join(Dir, "sys"),
%% Test [cp1, cp2]
- ?line {ok, Cp1} = start_node(Ncp1, Config),
- ?line {ok, Cp2} = start_node(Ncp2, Config),
+ {ok, Cp1} = start_node(Ncp1, Config),
+ {ok, Cp2} = start_node(Ncp2, Config),
Cps = [Cp1, Cp2],
- ?line wait_for_ready_net(),
+ wait_for_ready_net(),
%% Load app1 on both nodes
- ?line {[ok, ok], []} =
+ {[ok, ok], []} =
rpc:multicall(Cps, application, load, [app1()]),
%% Attempt to start app1 from different processes simultaneously
- ?line Pid11 = spawn_link(Cp1, ?MODULE, loop5606, [self()]),
- ?line Pid12 = spawn_link(Cp1, ?MODULE, loop5606, [self()]),
- ?line Pid13 = spawn_link(Cp1, ?MODULE, loop5606, [self()]),
- ?line Pid2 = spawn_link(Cp2, ?MODULE, loop5606, [self()]),
+ Pid11 = spawn_link(Cp1, ?MODULE, loop5606, [self()]),
+ Pid12 = spawn_link(Cp1, ?MODULE, loop5606, [self()]),
+ Pid13 = spawn_link(Cp1, ?MODULE, loop5606, [self()]),
+ Pid2 = spawn_link(Cp2, ?MODULE, loop5606, [self()]),
- ?line Pid2 ! start,
- ?line Pid11 ! start,
- ?line Pid12 ! start,
- ?line Pid13 ! start,
+ Pid2 ! start,
+ Pid11 ! start,
+ Pid12 ! start,
+ Pid13 ! start,
ResL = otp_5606_loop([]),
@@ -1476,10 +1501,10 @@ otp_5606(Conf) when is_list(Conf) ->
[Res1, Res2, Res3, Res4] ->
Txt = io_lib:format("Illegal results from start ~p ~p ~p ~p",
[Res1, Res2, Res3, Res4]),
- ?line test_server:fail(lists:flatten(Txt))
+ test_server:fail(lists:flatten(Txt))
end,
- ?line {error, {already_started, app1}} =
+ {error, {already_started, app1}} =
rpc:call(Cp1, application, start, [app1]),
stop_node_nice(Cp1),
@@ -1491,7 +1516,7 @@ otp_5606_loop(ResL) when length(ResL)<4 ->
{_Pid, Res} ->
otp_5606_loop([Res|ResL])
after 5000 ->
- ?line test_server:fail(timeout_waiting_for_res)
+ test_server:fail(timeout_waiting_for_res)
end;
otp_5606_loop(ResL) ->
ResL.
@@ -1525,34 +1550,34 @@ get_key(Conf) when is_list(Conf) ->
WithSyncTime = config_fun(config_inc(NodeNames)),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_config(Ncp1, WithSyncTime, Conf),
+ {ok, Cp1} = start_node_config(Ncp1, WithSyncTime, Conf),
- ?line ok = rpc:call(Cp1, application, load, [appinc(), d3(NodeNames)]),
- ?line ?UNTIL(is_loaded(appinc, Cp1)),
- ?line ok = rpc:call(Cp1, application, start, [appinc, permanent]),
- ?line ?UNTIL(is_started(appinc, Cp1)),
+ ok = rpc:call(Cp1, application, load, [appinc(), d3(NodeNames)]),
+ ?UNTIL(is_loaded(appinc, Cp1)),
+ ok = rpc:call(Cp1, application, start, [appinc, permanent]),
+ ?UNTIL(is_started(appinc, Cp1)),
- ?line {ok, "Test of new app file, including appnew"} =
+ {ok, "Test of new app file, including appnew"} =
rpc:call(Cp1, application, get_key, [appinc, description]),
- ?line {ok, "CXC 138 ai"} = rpc:call(Cp1, application, get_key, [appinc ,id]),
- ?line {ok, "2.0"} = rpc:call(Cp1, application, get_key, [appinc, vsn]),
- ?line {ok, [kernel]} = rpc:call(Cp1, application, get_key, [appinc, applications]),
- ?line {ok, [appinc1, appinc2]} =
+ {ok, "CXC 138 ai"} = rpc:call(Cp1, application, get_key, [appinc ,id]),
+ {ok, "2.0"} = rpc:call(Cp1, application, get_key, [appinc, vsn]),
+ {ok, [kernel]} = rpc:call(Cp1, application, get_key, [appinc, applications]),
+ {ok, [appinc1, appinc2]} =
rpc:call(Cp1, application, get_key, [appinc, included_applications]),
- ?line {ok, []} = rpc:call(Cp1, application, get_key, [appinc, registered]),
- ?line {ok, [{init, [kalle]}, {takeover, []}, {go, [sune]}]} =
+ {ok, []} = rpc:call(Cp1, application, get_key, [appinc, registered]),
+ {ok, [{init, [kalle]}, {takeover, []}, {go, [sune]}]} =
rpc:call(Cp1, application, get_key, [appinc, start_phases]),
- ?line {ok, Env} = rpc:call(Cp1, application, get_key, [appinc ,env]),
- ?line [{included_applications,[appinc1,appinc2]},
+ {ok, Env} = rpc:call(Cp1, application, get_key, [appinc ,env]),
+ [{included_applications,[appinc1,appinc2]},
{own2,val2},{own_env1,value1}] = lists:sort(Env),
- ?line {ok, []} = rpc:call(Cp1, application, get_key, [appinc, modules]),
- ?line {ok, {application_starter, [ch_sup, {appinc, 41, 43}] }} =
+ {ok, []} = rpc:call(Cp1, application, get_key, [appinc, modules]),
+ {ok, {application_starter, [ch_sup, {appinc, 41, 43}] }} =
rpc:call(Cp1, application, get_key, [appinc, mod]),
- ?line {ok, infinity} = rpc:call(Cp1, application, get_key, [appinc, maxP]),
- ?line {ok, infinity} = rpc:call(Cp1, application, get_key, [appinc, maxT]),
- ?line undefined = rpc:call(Cp1, application, get_key, [appinc, very_unknown]),
+ {ok, infinity} = rpc:call(Cp1, application, get_key, [appinc, maxP]),
+ {ok, infinity} = rpc:call(Cp1, application, get_key, [appinc, maxT]),
+ undefined = rpc:call(Cp1, application, get_key, [appinc, very_unknown]),
- ?line {ok, [{description, "Test of new app file, including appnew"},
+ {ok, [{description, "Test of new app file, including appnew"},
{id, "CXC 138 ai"},
{vsn, "2.0"},
{modules, []},
@@ -1565,40 +1590,40 @@ get_key(Conf) when is_list(Conf) ->
{mod, {application_starter, [ch_sup, {appinc, 41, 43}] }},
{start_phases, [{init, [kalle]}, {takeover, []}, {go, [sune]}]}]} =
rpc:call(Cp1, application, get_all_key, [appinc]),
- ?line [{included_applications,[appinc1,appinc2]},
+ [{included_applications,[appinc1,appinc2]},
{own2,val2},{own_env1,value1}] = lists:sort(Env),
- ?line {ok, "Test of new app file, including appnew"} =
+ {ok, "Test of new app file, including appnew"} =
gen_server:call({global, {ch,41}}, {get_pid_key, description}),
- ?line {ok, "CXC 138 ai"} =
+ {ok, "CXC 138 ai"} =
gen_server:call({global, {ch,41}}, {get_pid_key, id}),
- ?line {ok, "2.0"} =
+ {ok, "2.0"} =
gen_server:call({global, {ch,41}}, {get_pid_key, vsn}),
- ?line {ok, [kernel]} =
+ {ok, [kernel]} =
gen_server:call({global, {ch,41}}, {get_pid_key, applications}),
- ?line {ok, [appinc1, appinc2]} =
+ {ok, [appinc1, appinc2]} =
gen_server:call({global, {ch,41}}, {get_pid_key, included_applications}),
- ?line {ok, []} =
+ {ok, []} =
gen_server:call({global, {ch,41}}, {get_pid_key, registered}),
- ?line {ok, [{init, [kalle]}, {takeover, []}, {go, [sune]}]} =
+ {ok, [{init, [kalle]}, {takeover, []}, {go, [sune]}]} =
gen_server:call({global, {ch,41}}, {get_pid_key, start_phases}),
- ?line {ok, Env} = gen_server:call({global, {ch,41}}, {get_pid_key, env}),
- ?line [{included_applications,[appinc1,appinc2]},
+ {ok, Env} = gen_server:call({global, {ch,41}}, {get_pid_key, env}),
+ [{included_applications,[appinc1,appinc2]},
{own2,val2},{own_env1,value1}] = lists:sort(Env),
- ?line {ok, []} =
+ {ok, []} =
gen_server:call({global, {ch,41}}, {get_pid_key, modules}),
- ?line {ok, {application_starter, [ch_sup, {appinc, 41, 43}] }} =
+ {ok, {application_starter, [ch_sup, {appinc, 41, 43}] }} =
gen_server:call({global, {ch,41}}, {get_pid_key, mod}),
- ?line {ok, infinity} =
+ {ok, infinity} =
gen_server:call({global, {ch,41}}, {get_pid_key, maxP}),
- ?line {ok, infinity} =
+ {ok, infinity} =
gen_server:call({global, {ch,41}}, {get_pid_key, maxT}),
- ?line undefined =
+ undefined =
gen_server:call({global, {ch,41}}, {get_pid_key, very_unknown}),
- ?line {ok, [{description, "Test of new app file, including appnew"},
+ {ok, [{description, "Test of new app file, including appnew"},
{id, "CXC 138 ai"},
{vsn, "2.0"},
{modules, []},
@@ -1611,7 +1636,7 @@ get_key(Conf) when is_list(Conf) ->
{mod, {application_starter, [ch_sup, {appinc, 41, 43}] }},
{start_phases, [{init, [kalle]}, {takeover, []}, {go, [sune]}]}]} =
gen_server:call({global, {ch,41}}, get_pid_all_key),
- ?line [{included_applications,[appinc1,appinc2]},
+ [{included_applications,[appinc1,appinc2]},
{own2,val2},{own_env1,value1}] = lists:sort(Env),
stop_node_nice(Cp1),
@@ -1628,81 +1653,81 @@ distr_changed_tc1(Conf) when is_list(Conf) ->
{OldKernel, OldEnv, {Cp1, Cp2, Cp3}, {_Ncp1, _Ncp2, _Ncp3}, _Config2} =
distr_changed_prep(Conf),
- ?line NewDist = {distributed, [{app1, [Cp3]},
+ NewDist = {distributed, [{app1, [Cp3]},
{app2, 5000, [Cp2]},
{app3, [Cp3, {Cp1, Cp2}]},
{app6, [Cp1, {Cp3, Cp2}]},
{app7, 1000, [Cp3]},
{app8, [Cp1, {Cp2, Cp3}]}]},
- ?line NewKernel = [{kernel, lists:keyreplace(distributed, 1, OldKernel, NewDist)}],
- ?line ok = rpc:call(Cp1, application_controller, test_change_apps,
+ NewKernel = [{kernel, lists:keyreplace(distributed, 1, OldKernel, NewDist)}],
+ ok = rpc:call(Cp1, application_controller, test_change_apps,
[[kernel], [NewKernel]]),
- ?line ok = rpc:call(Cp2, application_controller, test_change_apps,
+ ok = rpc:call(Cp2, application_controller, test_change_apps,
[[kernel], [NewKernel]]),
- ?line ok = rpc:call(Cp3, application_controller, test_change_apps,
+ ok = rpc:call(Cp3, application_controller, test_change_apps,
[[kernel], [NewKernel]]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3],
application_controller, config_change, [OldEnv]),
- ?line test_server:sleep(7000),
+ test_server:sleep(7000),
- ?line DcInfo1 = rpc:call(Cp1, dist_ac, info, []),
- ?line DcInfo2 = rpc:call(Cp2, dist_ac, info, []),
- ?line DcInfo3 = rpc:call(Cp3, dist_ac, info, []),
+ DcInfo1 = rpc:call(Cp1, dist_ac, info, []),
+ DcInfo2 = rpc:call(Cp2, dist_ac, info, []),
+ DcInfo3 = rpc:call(Cp3, dist_ac, info, []),
- ?line DcWa1 = which_applications(Cp1),
- ?line DcWa2 = which_applications(Cp2),
- ?line DcWa3 = which_applications(Cp3),
+ DcWa1 = which_applications(Cp1),
+ DcWa2 = which_applications(Cp2),
+ DcWa3 = which_applications(Cp3),
- ?line Wa1 = lists:foldl(fun({A1, _N1, _V1}, AccIn) -> [A1 | AccIn] end,
+ Wa1 = lists:foldl(fun({A1, _N1, _V1}, AccIn) -> [A1 | AccIn] end,
[], DcWa1),
- ?line Wa2 = lists:foldl(fun({A2, _N2, _V2}, AccIn) -> [A2 | AccIn] end,
+ Wa2 = lists:foldl(fun({A2, _N2, _V2}, AccIn) -> [A2 | AccIn] end,
[], DcWa2),
- ?line Wa3 = lists:foldl(fun({A3, _N3, _V3}, AccIn) -> [A3 | AccIn] end,
+ Wa3 = lists:foldl(fun({A3, _N3, _V3}, AccIn) -> [A3 | AccIn] end,
[], DcWa3),
- ?line case lists:sort(Wa1) of
+ case lists:sort(Wa1) of
[app1, app2, app3, kernel, stdlib] ->
ok;
EWa1 ->
X1 = io_lib:format("distribution error: Cp1 ~p ",[EWa1]),
- ?line test_server:fail(lists:flatten(X1))
+ test_server:fail(lists:flatten(X1))
end,
- ?line case lists:sort(Wa2) of
+ case lists:sort(Wa2) of
[app6, app8, kernel, stdlib] ->
ok;
EWa2 ->
X2 = io_lib:format("distribution error: Cp2 ~p ",[EWa2]),
- ?line test_server:fail(lists:flatten(X2))
+ test_server:fail(lists:flatten(X2))
end,
- ?line case lists:sort(Wa3) of
+ case lists:sort(Wa3) of
[app7, kernel, stdlib] ->
ok;
EWa3 ->
X3 = io_lib:format("distribution error: Cp3 ~p ",[EWa3]),
- ?line test_server:fail(lists:flatten(X3))
+ test_server:fail(lists:flatten(X3))
end,
- ?line DcInfo1n = rpc:call(Cp1, dist_ac, info, []),
- ?line DcInfo2n = rpc:call(Cp2, dist_ac, info, []),
- ?line DcInfo3n = rpc:call(Cp3, dist_ac, info, []),
+ DcInfo1n = rpc:call(Cp1, dist_ac, info, []),
+ DcInfo2n = rpc:call(Cp2, dist_ac, info, []),
+ DcInfo3n = rpc:call(Cp3, dist_ac, info, []),
%% Added afterwards. Got rid of some warnings for unused variables.
- ?line true = DcInfo1 =:= DcInfo1n,
- ?line true = DcInfo2 =:= DcInfo2n,
- ?line true = DcInfo3 =:= DcInfo3n,
+ true = DcInfo1 =:= DcInfo1n,
+ true = DcInfo2 =:= DcInfo2n,
+ true = DcInfo3 =:= DcInfo3n,
stop_node_nice(Cp1),
stop_node_nice(Cp2),
stop_node_nice(Cp3),
- ?line ok = file:delete("dc.boot"),
- ?line ok = file:delete("dc.rel"),
- ?line ok = file:delete("dc.script"),
+ ok = file:delete("dc.boot"),
+ ok = file:delete("dc.rel"),
+ ok = file:delete("dc.script"),
ok.
@@ -1714,103 +1739,103 @@ distr_changed_tc2(Conf) when is_list(Conf) ->
{OldKernel, OldEnv, {Cp1, Cp2, Cp3}, {Ncp1, _Ncp2, _Ncp3}, Config2} =
distr_changed_prep(Conf),
- ?line NewDist = {distributed, [{app1, [Cp3]},
+ NewDist = {distributed, [{app1, [Cp3]},
{app2, 5000, [Cp2]},
{app3, [Cp3, {Cp1, Cp2}]},
{app6, [Cp1, {Cp3, Cp2}]},
{app7, 1000, [Cp3]},
{app8, [Cp1, {Cp2, Cp3}]}]},
- ?line NewKernel = [{kernel, lists:keyreplace(distributed, 1, OldKernel, NewDist)}],
- ?line ok = rpc:call(Cp1, application_controller, test_change_apps,
+ NewKernel = [{kernel, lists:keyreplace(distributed, 1, OldKernel, NewDist)}],
+ ok = rpc:call(Cp1, application_controller, test_change_apps,
[[kernel], [NewKernel]]),
- ?line ok = rpc:call(Cp2, application_controller, test_change_apps,
+ ok = rpc:call(Cp2, application_controller, test_change_apps,
[[kernel], [NewKernel]]),
- ?line ok = rpc:call(Cp3, application_controller, test_change_apps,
+ ok = rpc:call(Cp3, application_controller, test_change_apps,
[[kernel], [NewKernel]]),
- ?line {[ok,ok,ok],[]} =
+ {[ok,ok,ok],[]} =
rpc:multicall([Cp1, Cp2, Cp3],
application_controller, config_change, [OldEnv]),
- ?line test_server:sleep(4000),
- ?line stop_node_nice(Cp1),
- ?line test_server:sleep(10000),
+ test_server:sleep(4000),
+ stop_node_nice(Cp1),
+ test_server:sleep(10000),
-% ?line _DcInfo1 = rpc:call(Cp1, dist_ac, info, []),
- ?line _DcInfo2 = rpc:call(Cp2, dist_ac, info, []),
- ?line _DcInfo3 = rpc:call(Cp3, dist_ac, info, []),
+% _DcInfo1 = rpc:call(Cp1, dist_ac, info, []),
+ _DcInfo2 = rpc:call(Cp2, dist_ac, info, []),
+ _DcInfo3 = rpc:call(Cp3, dist_ac, info, []),
% ?t:format(0,"#### DcInfo1 ~n~p~n",[_DcInfo1]),
-% ?line DcWa1 = which_applications(Cp1),
- ?line DcWa2 = which_applications(Cp2),
- ?line DcWa3 = which_applications(Cp3),
+% DcWa1 = which_applications(Cp1),
+ DcWa2 = which_applications(Cp2),
+ DcWa3 = which_applications(Cp3),
-% ?line Wa1 = lists:foldl(fun({A1, _N1, _V1}, AccIn) -> [A1 | AccIn] end,
+% Wa1 = lists:foldl(fun({A1, _N1, _V1}, AccIn) -> [A1 | AccIn] end,
% [], DcWa1),
- ?line Wa2 = lists:foldl(fun({A2, _N2, _V2}, AccIn) -> [A2 | AccIn] end,
+ Wa2 = lists:foldl(fun({A2, _N2, _V2}, AccIn) -> [A2 | AccIn] end,
[], DcWa2),
- ?line Wa3 = lists:foldl(fun({A3, _N3, _V3}, AccIn) -> [A3 | AccIn] end,
+ Wa3 = lists:foldl(fun({A3, _N3, _V3}, AccIn) -> [A3 | AccIn] end,
[], DcWa3),
- ?line case lists:sort(Wa2) of
+ case lists:sort(Wa2) of
[app2, app6, app8, kernel, stdlib] ->
ok;
EWa2 ->
X2 = io_lib:format("distribution error: Cp2 ~p ",[EWa2]),
- ?line test_server:fail(lists:flatten(X2))
+ test_server:fail(lists:flatten(X2))
end,
- ?line case lists:sort(Wa3) of
+ case lists:sort(Wa3) of
[app1, app3, app7, kernel, stdlib] ->
ok;
EWa3 ->
X3 = io_lib:format("distribution error: Cp3 ~p ",[EWa3]),
- ?line test_server:fail(lists:flatten(X3))
+ test_server:fail(lists:flatten(X3))
end,
- ?line {ok, Cp1} = start_node_boot(Ncp1, Config2, dc),
- ?line test_server:sleep(10000),
+ {ok, Cp1} = start_node_boot(Ncp1, Config2, dc),
+ test_server:sleep(10000),
- ?line _DcInfo1rs = rpc:call(Cp1, dist_ac, info, []),
- ?line _DcInfo2rs = rpc:call(Cp2, dist_ac, info, []),
- ?line _DcInfo3rs = rpc:call(Cp3, dist_ac, info, []),
+ _DcInfo1rs = rpc:call(Cp1, dist_ac, info, []),
+ _DcInfo2rs = rpc:call(Cp2, dist_ac, info, []),
+ _DcInfo3rs = rpc:call(Cp3, dist_ac, info, []),
- ?line DcWa1rs = which_applications(Cp1),
- ?line DcWa2rs = which_applications(Cp2),
- ?line DcWa3rs = which_applications(Cp3),
+ DcWa1rs = which_applications(Cp1),
+ DcWa2rs = which_applications(Cp2),
+ DcWa3rs = which_applications(Cp3),
- ?line Wa1rs = lists:foldl(fun({A1, _N1, _V1}, AccIn) -> [A1 | AccIn] end,
+ Wa1rs = lists:foldl(fun({A1, _N1, _V1}, AccIn) -> [A1 | AccIn] end,
[], DcWa1rs),
- ?line Wa2rs = lists:foldl(fun({A2, _N2, _V2}, AccIn) -> [A2 | AccIn] end,
+ Wa2rs = lists:foldl(fun({A2, _N2, _V2}, AccIn) -> [A2 | AccIn] end,
[], DcWa2rs),
- ?line Wa3rs = lists:foldl(fun({A3, _N3, _V3}, AccIn) -> [A3 | AccIn] end,
+ Wa3rs = lists:foldl(fun({A3, _N3, _V3}, AccIn) -> [A3 | AccIn] end,
[], DcWa3rs),
- ?line case lists:sort(Wa1rs) of
+ case lists:sort(Wa1rs) of
[app6, app8, kernel, stdlib] ->
ok;
EWa1rs ->
X1rs = io_lib:format("distribution error: Cp1 ~p ",[EWa1rs]),
- ?line test_server:fail(lists:flatten(X1rs))
+ test_server:fail(lists:flatten(X1rs))
end,
- ?line case lists:sort(Wa2rs) of
+ case lists:sort(Wa2rs) of
[app2, kernel, stdlib] ->
ok;
EWa2rs ->
X2rs = io_lib:format("distribution error: Cp2 ~p ",[EWa2rs]),
- ?line test_server:fail(lists:flatten(X2rs))
+ test_server:fail(lists:flatten(X2rs))
end,
- ?line case lists:sort(Wa3rs) of
+ case lists:sort(Wa3rs) of
[app1, app3, app7, kernel, stdlib] ->
ok;
EWa3rs ->
X3rs = io_lib:format("distribution error: Cp3 ~p ",[EWa3rs]),
- ?line test_server:fail(lists:flatten(X3rs))
+ test_server:fail(lists:flatten(X3rs))
end,
@@ -1818,9 +1843,9 @@ distr_changed_tc2(Conf) when is_list(Conf) ->
stop_node_nice(Cp2),
stop_node_nice(Cp3),
- ?line ok = file:delete("dc.boot"),
- ?line ok = file:delete("dc.rel"),
- ?line ok = file:delete("dc.script"),
+ ok = file:delete("dc.boot"),
+ ok = file:delete("dc.rel"),
+ ok = file:delete("dc.script"),
ok.
@@ -1836,36 +1861,36 @@ config_change(doc) ->
config_change(Conf) when is_list(Conf) ->
%% Change to data_dir
- ?line {ok, CWD} = file:get_cwd(),
- ?line DataDir = ?config(data_dir, Conf),
- ?line ok = file:set_cwd(DataDir),
+ {ok, CWD} = file:get_cwd(),
+ DataDir = ?config(data_dir, Conf),
+ ok = file:set_cwd(DataDir),
%% Find out application data from boot script
- ?line Boot = filename:join([code:root_dir(), "bin", "start.boot"]),
- ?line {ok, Bin} = file:read_file(Boot),
- ?line Appls = get_appls(binary_to_term(Bin)),
+ Boot = filename:join([code:root_dir(), "bin", "start.boot"]),
+ {ok, Bin} = file:read_file(Boot),
+ Appls = get_appls(binary_to_term(Bin)),
%% Simulate contents of "sys.config"
- ?line Config = [{stdlib, [{par1,sys},{par2,sys}]},
+ Config = [{stdlib, [{par1,sys},{par2,sys}]},
"t1",
"t2.config",
filename:join([DataDir, "subdir", "t3"]),
{stdlib, [{par6,sys}]}],
%% Order application_controller to update configuration
- ?line ok = application_controller:change_application_data(Appls,
+ ok = application_controller:change_application_data(Appls,
Config),
%% Check that stdlib parameters are correctly set
- ?line Env = application:get_all_env(stdlib),
- ?line {value, {par1,sys}} = lists:keysearch(par1, 1, Env),
- ?line {value, {par2,t1}} = lists:keysearch(par2, 1, Env),
- ?line {value, {par3,t1}} = lists:keysearch(par3, 1, Env),
- ?line {value, {par4,t2}} = lists:keysearch(par4, 1, Env),
- ?line {value, {par5,t3}} = lists:keysearch(par5, 1, Env),
- ?line {value, {par6,sys}} = lists:keysearch(par6, 1, Env),
+ Env = application:get_all_env(stdlib),
+ {value, {par1,sys}} = lists:keysearch(par1, 1, Env),
+ {value, {par2,t1}} = lists:keysearch(par2, 1, Env),
+ {value, {par3,t1}} = lists:keysearch(par3, 1, Env),
+ {value, {par4,t2}} = lists:keysearch(par4, 1, Env),
+ {value, {par5,t3}} = lists:keysearch(par5, 1, Env),
+ {value, {par6,sys}} = lists:keysearch(par6, 1, Env),
- ?line ok = file:set_cwd(CWD).
+ ok = file:set_cwd(CWD).
%% This function is stolen from SASL module release_handler, OTP R10B
get_appls({script, _, Script}) ->
@@ -1891,18 +1916,18 @@ shutdown_func(suite) ->
shutdown_func(doc) ->
["Tests the 'shutdown_func' kernel config parameter"];
shutdown_func(Config) when is_list(Config) ->
- ?line {ok,Cp1} = start_node(?MODULE_STRING++"_shutdown_func"),
- ?line wait_for_ready_net(),
- ?line Tag = make_ref(),
- ?line ok = rpc:call(Cp1, application, set_env,
+ {ok,Cp1} = start_node(?MODULE_STRING++"_shutdown_func"),
+ wait_for_ready_net(),
+ Tag = make_ref(),
+ ok = rpc:call(Cp1, application, set_env,
[kernel, shutdown_func, {?MODULE, do_shutdown}]),
- ?line ok = rpc:call(Cp1, application, set_env,
+ ok = rpc:call(Cp1, application, set_env,
[kernel, shutdown_func_test, {self(), Tag}]),
- ?line _ = rpc:call(Cp1, init, stop, []),
- ?line receive
+ _ = rpc:call(Cp1, init, stop, []),
+ receive
{Pid, Tag, shutting_down, shutdown} ->
- ?line Mref = erlang:monitor(process, Pid),
- ?line Pid ! {self(), Tag, ok},
+ Mref = erlang:monitor(process, Pid),
+ Pid ! {self(), Tag, ok},
receive
{'DOWN', Mref, _, Pid, noconnection} ->
ok
@@ -2488,9 +2513,9 @@ node_name(Name, Config) ->
lists:concat([Name,U,?testcase,U,U,L]).
stop_node_nice(Node) when is_atom(Node) ->
- ?line test_server:stop_node(Node);
+ test_server:stop_node(Node);
stop_node_nice(Nodes) when is_list(Nodes) ->
- ?line lists:foreach(fun (N) -> stop_node_nice(N) end, Nodes).
+ lists:foreach(fun (N) -> stop_node_nice(N) end, Nodes).
get_start_type(Expected) ->
@@ -2581,10 +2606,10 @@ get_conf_change(Expected) ->
{cc, Expected} ->
ok;
{cc, List} ->
- ?line test_server:format("====== ~p ======~n",[{cc, List}]),
- ?line test_server:fail(not_valid_conf_change)
+ test_server:format("====== ~p ======~n",[{cc, List}]),
+ test_server:fail(not_valid_conf_change)
after 5000 ->
- ?line test_server:fail(not_valid_conf_change_to)
+ test_server:fail(not_valid_conf_change_to)
end.
conf_change() ->
@@ -2604,75 +2629,75 @@ cc(List) ->
create_app() ->
- ?line Dir = "./",
- ?line App1 = Dir ++ "app1",
- ?line {ok, Fd1} = file:open(App1++".app",[write]),
- ?line io:format(Fd1, "~p. \n", [app1()]),
- ?line file:close(Fd1),
- ?line App2 = Dir ++ "app2",
- ?line {ok, Fd2} = file:open(App2++".app",[write]),
- ?line io:format(Fd2, "~p. \n", [app2()]),
- ?line file:close(Fd2),
- ?line App3 = Dir ++ "app_sp",
- ?line {ok, Fd3} = file:open(App3++".app",[write]),
- ?line io:format(Fd3, "~p. \n", [app_sp()]),
- ?line file:close(Fd3),
+ Dir = "./",
+ App1 = Dir ++ "app1",
+ {ok, Fd1} = file:open(App1++".app",[write]),
+ io:format(Fd1, "~p. \n", [app1()]),
+ file:close(Fd1),
+ App2 = Dir ++ "app2",
+ {ok, Fd2} = file:open(App2++".app",[write]),
+ io:format(Fd2, "~p. \n", [app2()]),
+ file:close(Fd2),
+ App3 = Dir ++ "app_sp",
+ {ok, Fd3} = file:open(App3++".app",[write]),
+ io:format(Fd3, "~p. \n", [app_sp()]),
+ file:close(Fd3),
ok.
create_script(ScriptName) ->
- ?line Dir = "./",
- ?line Name = Dir ++ ScriptName,
- ?line Apps = which_applications(),
- ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
- ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
- ?line {ok,Fd} = file:open(Name++".rel",[write]),
- ?line io:format(Fd,
+ Dir = "./",
+ Name = Dir ++ ScriptName,
+ Apps = which_applications(),
+ {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ {ok,Fd} = file:open(Name++".rel",[write]),
+ io:format(Fd,
"{release, {\"Test release 3\", \"LATEST\"}, \n"
" {erts, \"4.4\"}, \n"
" [{kernel, \"~s\"}, {stdlib, \"~s\"}, \n"
" {app1, \"2.0\"}, {app2, \"2.0\"}, {app_sp, \"2.0\"}]}.\n",
[KernelVer,StdlibVer]),
- ?line file:close(Fd),
+ file:close(Fd),
{{KernelVer,StdlibVer},
{filename:dirname(Name), filename:basename(Name)}}.
create_script_dc(ScriptName) ->
- ?line Dir = "./",
- ?line Name = Dir ++ ScriptName,
- ?line Apps = which_applications(),
- ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
- ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
- ?line {ok,Fd} = file:open(Name++".rel",[write]),
- ?line io:format(Fd,
+ Dir = "./",
+ Name = Dir ++ ScriptName,
+ Apps = which_applications(),
+ {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ {ok,Fd} = file:open(Name++".rel",[write]),
+ io:format(Fd,
"{release, {\"Test release 3\", \"LATEST\"}, \n"
" {erts, \"4.4\"}, \n"
" [{kernel, \"~s\"}, {stdlib, \"~s\"}, \n"
" {app1, \"2.0\"}, {app2, \"2.0\"}, {app3, \"2.0\"}, \n"
" {app6, \"2.0\"}, {app7, \"2.0\"}, {app8, \"2.0\"}]}.\n",
[KernelVer,StdlibVer]),
- ?line file:close(Fd),
+ file:close(Fd),
{{KernelVer,StdlibVer},
{filename:dirname(Name), filename:basename(Name)}}.
create_script_3002(ScriptName) ->
- ?line Dir = "./",
- ?line Name = Dir ++ ScriptName,
- ?line Apps = which_applications(),
- ?line {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
- ?line {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
- ?line {value,{_,_,SaslVer}} = lists:keysearch(sasl,1,Apps),
- ?line {ok,Fd} = file:open(Name++".rel",[write]),
- ?line io:format(Fd,
+ Dir = "./",
+ Name = Dir ++ ScriptName,
+ Apps = which_applications(),
+ {value,{_,_,KernelVer}} = lists:keysearch(kernel,1,Apps),
+ {value,{_,_,StdlibVer}} = lists:keysearch(stdlib,1,Apps),
+ {value,{_,_,SaslVer}} = lists:keysearch(sasl,1,Apps),
+ {ok,Fd} = file:open(Name++".rel",[write]),
+ io:format(Fd,
"{release, {\"Test release 3\", \"LATEST\"}, \n"
" {erts, \"4.4\"}, \n"
" [{kernel, \"~s\"}, {stdlib, \"~s\"}, \n"
" {sasl, \"~s\"}]}.\n",
[KernelVer, StdlibVer, SaslVer]),
- ?line file:close(Fd),
+ file:close(Fd),
{{KernelVer,StdlibVer},
{filename:dirname(Name), filename:basename(Name)}}.
@@ -2681,57 +2706,57 @@ create_script_3002(ScriptName) ->
distr_changed_prep(Conf) when is_list(Conf) ->
% Write .app files
- ?line {ok, Fd1} = file:open("app1.app", [write]),
- ?line w_app1(Fd1),
- ?line file:close(Fd1),
- ?line {ok, Fd2} = file:open("app2.app", [write]),
- ?line w_app2(Fd2),
- ?line file:close(Fd2),
- ?line {ok, Fd3} = file:open("app3.app", [write]),
- ?line w_app3(Fd3),
- ?line file:close(Fd3),
- ?line {ok, Fd4} = file:open("app6.app", [write]),
- ?line w_app6(Fd4),
- ?line file:close(Fd4),
- ?line {ok, Fd5} = file:open("app7.app", [write]),
- ?line w_app7(Fd5),
- ?line file:close(Fd5),
- ?line {ok, Fd6} = file:open("app8.app", [write]),
- ?line w_app8(Fd6),
- ?line file:close(Fd6),
+ {ok, Fd1} = file:open("app1.app", [write]),
+ w_app1(Fd1),
+ file:close(Fd1),
+ {ok, Fd2} = file:open("app2.app", [write]),
+ w_app2(Fd2),
+ file:close(Fd2),
+ {ok, Fd3} = file:open("app3.app", [write]),
+ w_app3(Fd3),
+ file:close(Fd3),
+ {ok, Fd4} = file:open("app6.app", [write]),
+ w_app6(Fd4),
+ file:close(Fd4),
+ {ok, Fd5} = file:open("app7.app", [write]),
+ w_app7(Fd5),
+ file:close(Fd5),
+ {ok, Fd6} = file:open("app8.app", [write]),
+ w_app8(Fd6),
+ file:close(Fd6),
% Create the .app files and the boot script
- ?line {{KernelVer,StdlibVer}, _} = create_script_dc("dc"),
+ {{KernelVer,StdlibVer}, _} = create_script_dc("dc"),
- ?line case is_real_system(KernelVer, StdlibVer) of
+ case is_real_system(KernelVer, StdlibVer) of
true ->
Options = [];
false ->
Options = [local]
end,
- ?line ok = systools:make_script("dc", Options),
+ ok = systools:make_script("dc", Options),
NodeNames = [Ncp1, Ncp2, Ncp3] = node_names([cp1, cp2, cp3], Conf),
NoSyncTime = config_fun_fast(config_dc(NodeNames)),
WithSyncTime = config_fun(config_dc(NodeNames)),
- ?line Dir = ?config(priv_dir,Conf),
- ?line {ok, Fd_dc2} = file:open(filename:join(Dir, "sys2.config"), [write]),
- ?line (config_dc2(NodeNames))(Fd_dc2),
- ?line file:close(Fd_dc2),
- ?line Config2 = filename:join(Dir, "sys2"),
+ Dir = ?config(priv_dir,Conf),
+ {ok, Fd_dc2} = file:open(filename:join(Dir, "sys2.config"), [write]),
+ (config_dc2(NodeNames))(Fd_dc2),
+ file:close(Fd_dc2),
+ Config2 = filename:join(Dir, "sys2"),
% Test [cp1, cp2, cp3]
- ?line {ok, Cp1} = start_node_boot_config(Ncp1, NoSyncTime, Conf, dc),
- ?line {ok, Cp2} = start_node_boot_config(Ncp2, NoSyncTime, Conf, dc),
- ?line {ok, Cp3} = start_node_boot_config(Ncp3, WithSyncTime, Conf, dc),
- ?line global:sync(),
+ {ok, Cp1} = start_node_boot_config(Ncp1, NoSyncTime, Conf, dc),
+ {ok, Cp2} = start_node_boot_config(Ncp2, NoSyncTime, Conf, dc),
+ {ok, Cp3} = start_node_boot_config(Ncp3, WithSyncTime, Conf, dc),
+ global:sync(),
%% Read the current configuration parameters, and change them
- ?line OldEnv = rpc:call(Cp1, application_controller, prep_config_change, []),
- ?line {value, {kernel, OldKernel}} = lists:keysearch(kernel, 1, OldEnv),
+ OldEnv = rpc:call(Cp1, application_controller, prep_config_change, []),
+ {value, {kernel, OldKernel}} = lists:keysearch(kernel, 1, OldEnv),
{OldKernel, OldEnv, {Cp1, Cp2, Cp3}, {Ncp1, Ncp2, Ncp3}, Config2}.
diff --git a/lib/kernel/test/disk_log_SUITE.erl b/lib/kernel/test/disk_log_SUITE.erl
index 0f811b8f73..f55af1e354 100644
--- a/lib/kernel/test/disk_log_SUITE.erl
+++ b/lib/kernel/test/disk_log_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1997-2012. All Rights Reserved.
+%% Copyright Ericsson AB 1997-2013. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -3205,7 +3205,7 @@ many_users(Conf) when is_list(Conf) ->
?line true = lists:duplicate(NoClients, {error, {full,"log.LOG"}}) == C2,
?line true = length(T2) > 0,
?line {C3, T3} = many(Fun2, NoClients, N, wrap, internal,
- {300*NoClients,20}, Dir),
+ {300*NoClients,200}, Dir),
?line true = lists:duplicate(NoClients, ok) == C3,
?line true = length(T3) == N*NoClients,
ok.
diff --git a/lib/kernel/test/file_SUITE.erl b/lib/kernel/test/file_SUITE.erl
index c604e7073f..4218cfa646 100644
--- a/lib/kernel/test/file_SUITE.erl
+++ b/lib/kernel/test/file_SUITE.erl
@@ -91,6 +91,8 @@
-export([standard_io/1,mini_server/1]).
+-export([old_io_protocol/1]).
+
%% Debug exports
-export([create_file_slow/2, create_file/2, create_bin/2]).
-export([verify_file/2, verify_bin/3]).
@@ -114,7 +116,7 @@ all() ->
delayed_write, read_ahead, segment_read, segment_write,
ipread, pid2name, interleaved_read_write, otp_5814, otp_10852,
large_file, large_write, read_line_1, read_line_2, read_line_3,
- read_line_4, standard_io].
+ read_line_4, standard_io, old_io_protocol].
groups() ->
[{dirs, [], [make_del_dir, cur_dir_0, cur_dir_1,
@@ -310,6 +312,31 @@ standard_io(Config) when is_list(Config) ->
Pid ! die,
receive after 1000 -> ok end.
+old_io_protocol(suite) ->
+ [];
+old_io_protocol(doc) ->
+ ["Test that the old file IO protocol =< R16B still works"];
+old_io_protocol(Config) when is_list(Config) ->
+ Dog = test_server:timetrap(test_server:seconds(5)),
+ RootDir = ?config(priv_dir,Config),
+ Name = filename:join(RootDir,
+ atom_to_list(?MODULE)
+ ++"old_io_protocol.fil"),
+ MyData = "0123456789abcdefghijklmnopqrstuvxyz",
+ ok = ?FILE_MODULE:write_file(Name, MyData),
+ {ok, Fd} = ?FILE_MODULE:open(Name, write),
+ Fd ! {file_request,self(),Fd,truncate},
+ receive
+ {file_reply,Fd,ok} -> ok
+ end,
+ ok = ?FILE_MODULE:close(Fd),
+ {ok, <<>>} = ?FILE_MODULE:read_file(Name),
+ test_server:timetrap_cancel(Dog),
+ [] = flush(),
+ ok.
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
read_write_file(suite) -> [];
diff --git a/lib/kernel/test/gen_sctp_SUITE.erl b/lib/kernel/test/gen_sctp_SUITE.erl
index 2a886b2efc..c5d8becfd3 100644
--- a/lib/kernel/test/gen_sctp_SUITE.erl
+++ b/lib/kernel/test/gen_sctp_SUITE.erl
@@ -1399,8 +1399,7 @@ s_req(S, Req) ->
{'DOWN',Mref,_,_,Error} ->
exit(Error);
{S,Mref,Reply} ->
- erlang:demonitor(Mref),
- receive {'DOWN',Mref,_,_,_} -> ok after 0 -> ok end,
+ erlang:demonitor(Mref, [flush]),
Reply
end.
diff --git a/lib/kernel/test/global_SUITE_data/global_trace.erl b/lib/kernel/test/global_SUITE_data/global_trace.erl
index 4f253baac4..ddbe608c0a 100644
--- a/lib/kernel/test/global_SUITE_data/global_trace.erl
+++ b/lib/kernel/test/global_SUITE_data/global_trace.erl
@@ -1,3 +1,4 @@
+%% -*- coding: utf-8 -*-
%%
%% %CopyrightBegin%
%%
@@ -122,12 +123,12 @@ state(Else) ->
%%% {ops,Ops}]
%%% NewKnown = Known ++ AddedNodes
%%% AddedNodes = NewNodes -- Known
-%%% NewNodes �r h�r den man f�rhandlat med plus de noder den k�nner till.
+%%% NewNodes är här den man förhandlat med plus de noder den känner till.
%%% {added, AddedNodes}, Extra = [{ops,Ops}]
%%% NewKnown = Known ++ AddedNodes
-%%% Den (passiva) noden f�r Nodes som �r NewNodes
-%%% hos den f�rhandlande. Sedan: AddedNodes = (Nodes -- Known) -- [node()].
-%%% Det �r som hos f�rhandlaren.
+%%% Den (passiva) noden får Nodes som är NewNodes
+%%% hos den förhandlande. Sedan: AddedNodes = (Nodes -- Known) -- [node()].
+%%% Det är som hos förhandlaren.
%%% {nodes_changed, {New,Old}}
%%% Every now and then the list [node() | nodes()] is checked for updates.
%%% New are the nodes that global does not know of (yet).
diff --git a/lib/kernel/test/inet_sockopt_SUITE.erl b/lib/kernel/test/inet_sockopt_SUITE.erl
index 75496ce745..185751fead 100644
--- a/lib/kernel/test/inet_sockopt_SUITE.erl
+++ b/lib/kernel/test/inet_sockopt_SUITE.erl
@@ -772,8 +772,10 @@ all_listen_options() ->
{mode,list,binary,true,true},
{deliver,term,port,true,true},
{exit_on_close, true, false, true, true},
- %{high_watermark,4096,8192,true,true},
- %{low_watermark,2048,4096,true,true},
+ {high_watermark,4096,8192,true,true},
+ {low_watermark,2048,4096,true,true},
+ {high_msgq_watermark,4096,8192,true,true},
+ {low_msgq_watermark,2048,4096,true,true},
{send_timeout,infinity,1000,true,true},
{send_timeout_close,false,true,true,true},
{delay_send,false,true,true,true},
@@ -797,6 +799,8 @@ all_connect_options() ->
{exit_on_close, true, false, true, true},
{high_watermark,4096,8192,false,true},
{low_watermark,2048,4096,false,true},
+ {high_msgq_watermark,4096,8192,true,true},
+ {low_msgq_watermark,2048,4096,true,true},
{send_timeout,infinity,1000,true,true},
{send_timeout_close,false,true,true,true},
{delay_send,false,true,true,true},
diff --git a/lib/kernel/test/interactive_shell_SUITE.erl b/lib/kernel/test/interactive_shell_SUITE.erl
index 36e13cec26..dac021c6c6 100644
--- a/lib/kernel/test/interactive_shell_SUITE.erl
+++ b/lib/kernel/test/interactive_shell_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2007-2012. All Rights Reserved.
+%% Copyright Ericsson AB 2007-2013. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
@@ -193,7 +193,7 @@ job_control_remote(Config) when is_list(Config) ->
{skip,"No new shell found"};
_ ->
?line RNode = create_nodename(),
- ?line MyNode = atom_to_list(node()),
+ ?line MyNode = atom2list(node()),
?line Pid = spawn_link(fun() ->
receive die ->
ok
@@ -254,7 +254,7 @@ job_control_remote_noshell(Config) when is_list(Config) ->
end),
?line PidStr = rpc:call(NSNode,erlang,pid_to_list,[Pid]),
?line true = rpc:call(NSNode,erlang,register,[kalaskula,Pid]),
- ?line NSNodeStr = atom_to_list(NSNode),
+ ?line NSNodeStr = atom2list(NSNode),
?line CookieString = lists:flatten(
io_lib:format("~w",
[erlang:get_cookie()])),
@@ -715,7 +715,10 @@ get_default_shell() ->
{putline, "whereis(user_drv)."},
{getline, "undefined"}],[]),
old
- catch E:R ->
- ?dbg({E,R}),
+ catch _E:_R ->
+ ?dbg({_E,_R}),
new
end.
+
+atom2list(A) ->
+ lists:flatten(io_lib:format("~w", [A])).
diff --git a/lib/kernel/test/os_SUITE.erl b/lib/kernel/test/os_SUITE.erl
index 382fd6f6a9..73ed704ae3 100644
--- a/lib/kernel/test/os_SUITE.erl
+++ b/lib/kernel/test/os_SUITE.erl
@@ -18,20 +18,21 @@
%%
-module(os_SUITE).
--export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,
+-export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,
init_per_group/2,end_per_group/2]).
-export([space_in_cwd/1, quoting/1, space_in_name/1, bad_command/1,
- find_executable/1, unix_comment_in_command/1, evil/1]).
+ find_executable/1, unix_comment_in_command/1, deep_list_command/1, evil/1]).
-include_lib("test_server/include/test_server.hrl").
suite() -> [{ct_hooks,[ts_install_cth]}].
-all() ->
+all() ->
[space_in_cwd, quoting, space_in_name, bad_command,
- find_executable, unix_comment_in_command, evil].
+ find_executable, unix_comment_in_command, deep_list_command,
+ evil].
-groups() ->
+groups() ->
[].
init_per_suite(Config) ->
@@ -117,9 +118,9 @@ space_in_name(Config) when is_list(Config) ->
?line ok = file:change_mode(Echo, 8#777), % Make it executable on Unix.
%% Run the echo program.
- %% Quoting on windows depends on if the full path of the executable
+ %% Quoting on windows depends on if the full path of the executable
%% contains special characters. Paths when running common_tests always
- %% include @, why Windows would always fail if we do not double the
+ %% include @, why Windows would always fail if we do not double the
%% quotes (this is the behaviour of cmd.exe, not Erlang's idea).
Quote = case os:type() of
{win32,_} ->
@@ -135,7 +136,7 @@ space_in_name(Config) when is_list(Config) ->
?t:sleep(5),
?line [] = receive_all(),
ok.
-
+
bad_command(doc) ->
"Check that a bad command doesn't crasch the server or the emulator (it used to).";
bad_command(suite) -> [];
@@ -153,17 +154,17 @@ find_executable(suite) -> [];
find_executable(doc) -> [];
find_executable(Config) when is_list(Config) ->
case os:type() of
- {win32, _} ->
+ {win32, _} ->
?line DataDir = filename:join(?config(data_dir, Config), "win32"),
?line ok = file:set_cwd(filename:join([DataDir, "current"])),
?line Bin = filename:join(DataDir, "bin"),
?line Abin = filename:join(DataDir, "abin"),
?line UsrBin = filename:join([DataDir, "usr", "bin"]),
?line {ok, Current} = file:get_cwd(),
-
+
?line Path = lists:concat([Bin, ";", Abin, ";", UsrBin]),
?line io:format("Path = ~s", [Path]),
-
+
%% Search for programs in Bin (second element in PATH).
?line find_exe(Abin, "my_ar", ".exe", Path),
?line find_exe(Abin, "my_ascii", ".com", Path),
@@ -175,18 +176,18 @@ find_executable(Config) when is_list(Config) ->
?line find_exe(Abin, "my_ar.EXE", "", Path),
?line find_exe(Abin, "my_ascii.COM", "", Path),
?line find_exe(Abin, "MY_ADB.BAT", "", Path),
-
+
%% Search for programs in Abin (second element in PATH).
?line find_exe(Abin, "my_ar", ".exe", Path),
?line find_exe(Abin, "my_ascii", ".com", Path),
?line find_exe(Abin, "my_adb", ".bat", Path),
-
+
%% Search for programs in the current working directory.
?line find_exe(Current, "my_program", ".exe", Path),
?line find_exe(Current, "my_command", ".com", Path),
?line find_exe(Current, "my_batch", ".bat", Path),
ok;
- {unix, _} ->
+ {unix, _} ->
DataDir = ?config(data_dir, Config),
%% Smoke test.
@@ -237,6 +238,21 @@ unix_comment_in_command(Config) when is_list(Config) ->
?line test_server:timetrap_cancel(Dog),
ok.
+deep_list_command(doc) ->
+ "Check that a deep list in command works equally on unix and on windows.";
+deep_list_command(suite) -> [];
+deep_list_command(Config) when is_list(Config) ->
+ %% As a 'io_lib' module description says: "There is no guarantee that the
+ %% character lists returned from some of the functions are flat, they can
+ %% be deep lists."
+ %% That's why os:cmd/1 can have arguments that are deep lists.
+ %% It is not a problem for unix, but for windows it is (in R15B02 for ex.).
+ Echo = os:cmd([$e, $c, "ho"]),
+ true = erlang:is_list(Echo),
+ %% FYI: [$e, $c, "ho"] =:= io_lib:format("ec~s", ["ho"])
+ ok.
+
+
-define(EVIL_PROCS, 100).
-define(EVIL_LOOPS, 100).
-define(PORT_CREATOR, os_cmd_port_creator).
@@ -303,4 +319,3 @@ receive_all() ->
X -> [X|receive_all()]
after 0 -> []
end.
-