Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
4132-erts-Check-for-leaking-peer-nodes-after-te...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 4132-erts-Check-for-leaking-peer-nodes-after-tests.patch of Package erlang
From a10af0c854bfb300ff3262ebed7d06e61ce88560 Mon Sep 17 00:00:00 2001 From: Sverker Eriksson <sverker@erlang.org> Date: Mon, 27 Jun 2022 23:13:35 +0200 Subject: [PATCH 2/4] erts: Check for leaking peer nodes after tests --- erts/emulator/test/alloc_SUITE.erl | 7 ++++++- erts/emulator/test/bif_SUITE.erl | 7 ++++++- erts/emulator/test/dirty_bif_SUITE.erl | 7 ++++++- erts/emulator/test/distribution_SUITE.erl | 21 +++++++++++++++++-- erts/emulator/test/driver_SUITE.erl | 10 ++++++++- erts/emulator/test/dump_SUITE.erl | 9 ++++++-- erts/emulator/test/efile_SUITE.erl | 12 +++++++++++ erts/emulator/test/erl_link_SUITE.erl | 7 ++++++- erts/emulator/test/erts_debug_SUITE.erl | 11 ++++++++++ erts/emulator/test/exception_SUITE.erl | 11 ++++++++++ erts/emulator/test/float_SUITE.erl | 11 ++++++++++ erts/emulator/test/fun_SUITE.erl | 12 +++++++++++ erts/emulator/test/hash_SUITE.erl | 10 +++++++++ .../test/hash_property_test_SUITE.erl | 16 ++++++++++++-- erts/emulator/test/list_bif_SUITE.erl | 13 +++++++++++- erts/emulator/test/lttng_SUITE.erl | 7 ++++++- erts/emulator/test/map_SUITE.erl | 11 ++++++++++ erts/emulator/test/match_spec_SUITE.erl | 11 ++++++++++ .../test/message_queue_data_SUITE.erl | 11 ++++++++++ erts/emulator/test/monitor_SUITE.erl | 11 ++++++++++ erts/emulator/test/node_container_SUITE.erl | 7 ++++++- erts/emulator/test/port_SUITE.erl | 7 ++++++- erts/emulator/test/process_SUITE.erl | 7 ++++++- erts/emulator/test/ref_SUITE.erl | 7 ++++++- erts/emulator/test/scheduler_SUITE.erl | 7 ++++++- erts/emulator/test/signal_SUITE.erl | 7 ++++++- erts/emulator/test/smoke_test_SUITE.erl | 7 ++++++- erts/emulator/test/system_info_SUITE.erl | 7 ++++++- erts/emulator/test/time_SUITE.erl | 7 ++++++- erts/emulator/test/timer_bif_SUITE.erl | 7 ++++++- erts/emulator/test/trace_SUITE.erl | 8 ++++++- erts/emulator/test/unique_SUITE.erl | 11 ++++++++++ 32 files changed, 280 insertions(+), 24 deletions(-) diff --git a/erts/emulator/test/alloc_SUITE.erl b/erts/emulator/test/alloc_SUITE.erl index cd03af6bfb..db0022a558 100644 --- a/erts/emulator/test/alloc_SUITE.erl +++ b/erts/emulator/test/alloc_SUITE.erl @@ -66,7 +66,12 @@ init_per_testcase(Case, Config) when is_list(Config) -> [{testcase, Case},{debug,false}|Config]. end_per_testcase(_Case, Config) when is_list(Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% diff --git a/erts/emulator/test/bif_SUITE.erl b/erts/emulator/test/bif_SUITE.erl index c5be79528b..7eb473abf7 100644 --- a/erts/emulator/test/bif_SUITE.erl +++ b/erts/emulator/test/bif_SUITE.erl @@ -71,7 +71,12 @@ init_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> Config. end_per_testcase(_Func, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %% erl_bif_types comes from dialyzer which some test runs skip building, so %% we'll skip the tests that use it as the result shouldn't vary based on diff --git a/erts/emulator/test/dirty_bif_SUITE.erl b/erts/emulator/test/dirty_bif_SUITE.erl index 8aefc394a2..7c7b6db2d7 100644 --- a/erts/emulator/test/dirty_bif_SUITE.erl +++ b/erts/emulator/test/dirty_bif_SUITE.erl @@ -83,7 +83,12 @@ init_per_testcase(Case, Config) -> [{testcase, Case} | Config]. end_per_testcase(_Case, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. dirty_bif(Config) when is_list(Config) -> dirty_cpu = erts_debug:dirty_cpu(scheduler,type), diff --git a/erts/emulator/test/distribution_SUITE.erl b/erts/emulator/test/distribution_SUITE.erl index f16ba15bf8..c8ec6adccf 100644 --- a/erts/emulator/test/distribution_SUITE.erl +++ b/erts/emulator/test/distribution_SUITE.erl @@ -40,6 +40,7 @@ -export([all/0, suite/0, groups/0, init_per_suite/1, end_per_suite/1, init_per_group/2, end_per_group/2, + init_per_testcase/2, end_per_testcase/2, ping/1, bulk_send_small/1, group_leader/1, optimistic_dflags/1, @@ -157,6 +158,17 @@ init_per_group(_, Config) -> end_per_group(_, Config) -> Config. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, Config) -> + case wait_until(fun() -> nodes(connected) == [] end, 10_000) of + ok -> ok; + timeout -> + Nodes = nodes(connected), + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% Tests pinging a node in different ways. ping(Config) when is_list(Config) -> Times = 1024, @@ -3365,6 +3377,20 @@ derr_sender(Main, Nodes) -> id(X) -> X. +wait_until(Fun) -> + wait_until(Fun, 24*60*60*1000). + +wait_until(Fun, Timeout) when Timeout < 0 -> + timeout; +wait_until(Fun, Timeout) -> + case catch Fun() of + true -> + ok; + _ -> + receive after 50 -> ok end, + wait_until(Fun, Timeout-50) + end. + timestamp() -> erlang:monotonic_time(millisecond). diff --git a/erts/emulator/test/driver_SUITE.erl b/erts/emulator/test/driver_SUITE.erl index 902b3824f0..94754e7848 100644 --- a/erts/emulator/test/driver_SUITE.erl +++ b/erts/emulator/test/driver_SUITE.erl @@ -189,7 +189,15 @@ init_per_suite(Config) -> end_per_suite(_Config) -> logger:remove_handler_filter(default, checkio_filter), - catch erts_debug:set_internal_state(available_internal_state, false). + catch erts_debug:set_internal_state(available_internal_state, false), + + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + io:format("LEAKED connections: ~p\n", [Nodes]) + end. + init_per_group(poll_thread, Config) -> [{node_args, "+IOt 2"} | Config]; diff --git a/erts/emulator/test/dump_SUITE.erl b/erts/emulator/test/dump_SUITE.erl index 3cb943705c..625800fdf6 100644 --- a/erts/emulator/test/dump_SUITE.erl +++ b/erts/emulator/test/dump_SUITE.erl @@ -54,8 +54,13 @@ init_per_testcase(_, Config) -> Config. -end_per_testcase(_, Config) -> - Config. +end_per_testcase(_, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %%% %%% The test cases ------------------------------------------------------------- diff --git a/erts/emulator/test/efile_SUITE.erl b/erts/emulator/test/efile_SUITE.erl index 1bc69332cb..413d804298 100644 --- a/erts/emulator/test/efile_SUITE.erl +++ b/erts/emulator/test/efile_SUITE.erl @@ -19,6 +19,7 @@ -module(efile_SUITE). -export([all/0, suite/0]). +-export([init_per_testcase/2, end_per_testcase/2]). -export([iter_max_files/1, proc_zero_sized_files/1]). -export([do_iter_max_files/2]). @@ -31,6 +32,17 @@ suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> [iter_max_files, proc_zero_sized_files]. + +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% %% Open as many files as possible. Do this several times and check %% that we get the same number of files every time. diff --git a/erts/emulator/test/erl_link_SUITE.erl b/erts/emulator/test/erl_link_SUITE.erl index 8e1a2b937d..8037fdbc36 100644 --- a/erts/emulator/test/erl_link_SUITE.erl +++ b/erts/emulator/test/erl_link_SUITE.erl @@ -92,7 +92,12 @@ init_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> Config. end_per_testcase(_Func, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. init_per_suite(Config) -> Config. diff --git a/erts/emulator/test/erts_debug_SUITE.erl b/erts/emulator/test/erts_debug_SUITE.erl index 24d2d99c2e..01221de8b5 100644 --- a/erts/emulator/test/erts_debug_SUITE.erl +++ b/erts/emulator/test/erts_debug_SUITE.erl @@ -23,6 +23,7 @@ -include_lib("common_test/include/ct_event.hrl"). -export([all/0, suite/0, groups/0, + init_per_testcase/2, end_per_testcase/2, test_size/1,flat_size_big/1,df/1,term_type/1, instructions/1, stack_check/1, alloc_blocks_size/1, t_copy_shared/1, @@ -43,6 +44,16 @@ all() -> groups() -> [{interpreter_size_bench, [], [interpreter_size_bench]}]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + interpreter_size_bench(_Config) -> Size = erts_debug:interpreter_size(), ct_event:notify(#event{name=benchmark_data, diff --git a/erts/emulator/test/exception_SUITE.erl b/erts/emulator/test/exception_SUITE.erl index f81a4b51a5..5cce5d1491 100644 --- a/erts/emulator/test/exception_SUITE.erl +++ b/erts/emulator/test/exception_SUITE.erl @@ -21,6 +21,7 @@ -module(exception_SUITE). -export([all/0, suite/0, + init_per_testcase/2, end_per_testcase/2, badmatch/1, pending_errors/1, nil_arith/1, top_of_stacktrace/1, stacktrace/1, nested_stacktrace/1, raise/1, gunilla/1, per/1, change_exception_class/1, @@ -51,6 +52,16 @@ all() -> error_3, error_info, no_line_numbers, line_numbers]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + -define(try_match(E), catch ?MODULE:bar(), {'EXIT', {{badmatch, nomatch}, _}} = (catch E = id(nomatch))). diff --git a/erts/emulator/test/float_SUITE.erl b/erts/emulator/test/float_SUITE.erl index bda859a9ac..470c82487a 100644 --- a/erts/emulator/test/float_SUITE.erl +++ b/erts/emulator/test/float_SUITE.erl @@ -23,6 +23,7 @@ -include_lib("common_test/include/ct.hrl"). -export([all/0, suite/0, groups/0, + init_per_testcase/2, end_per_testcase/2, fpe/1,fp_drv/1,fp_drv_thread/1,denormalized/1,match/1, t_mul_add_ops/1,negative_zero/1, bad_float_unpack/1, write/1, cmp_zero/1, cmp_integer/1, cmp_bignum/1]). @@ -43,6 +44,16 @@ all() -> groups() -> [{comparison, [parallel], [cmp_zero, cmp_integer, cmp_bignum]}]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% %% OTP-7178, list_to_float on very small numbers should give 0.0 %% instead of exception, i.e. ignore underflow. diff --git a/erts/emulator/test/fun_SUITE.erl b/erts/emulator/test/fun_SUITE.erl index 89725b5eb2..e6d079019c 100644 --- a/erts/emulator/test/fun_SUITE.erl +++ b/erts/emulator/test/fun_SUITE.erl @@ -21,6 +21,7 @@ -module(fun_SUITE). -export([all/0, suite/0, + init_per_testcase/2, end_per_testcase/2, bad_apply/1,bad_fun_call/1,badarity/1,ext_badarity/1, bad_arglist/1, equality/1,ordering/1, @@ -46,6 +47,17 @@ all() -> const_propagation, t_arity, t_is_function2, t_fun_info, t_fun_info_mfa,t_fun_to_list]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + + %% Test that the correct EXIT code is returned for all types of bad funs. bad_apply(Config) when is_list(Config) -> bad_apply_fc(42, [0]), diff --git a/erts/emulator/test/hash_SUITE.erl b/erts/emulator/test/hash_SUITE.erl index 539606a82d..d98fea3791 100644 --- a/erts/emulator/test/hash_SUITE.erl +++ b/erts/emulator/test/hash_SUITE.erl @@ -95,6 +95,7 @@ notify(X) -> test_basic/1,test_cmp/1,test_range/1,test_spread/1, test_phash2/1,otp_5292/1,bit_level_binaries/1,otp_7127/1, test_hash_zero/1, init_per_suite/1, end_per_suite/1, + init_per_testcase/2, end_per_testcase/2, init_per_group/2, end_per_group/2]). suite() -> @@ -169,6 +170,15 @@ init_per_group(_, Config) -> end_per_group(_, Config) -> Config. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %% Tests basic functionality of erlang:phash and that the %% hashes has not changed (neither hash nor phash) diff --git a/erts/emulator/test/hash_property_test_SUITE.erl b/erts/emulator/test/hash_property_test_SUITE.erl index 679e7f59f8..23abacab34 100644 --- a/erts/emulator/test/hash_property_test_SUITE.erl +++ b/erts/emulator/test/hash_property_test_SUITE.erl @@ -30,8 +30,10 @@ -module(hash_property_test_SUITE). --export([suite/0,all/0,groups/0,init_per_suite/1, - end_per_suite/1,init_per_group/2,end_per_group/2]). +-export([suite/0,all/0,groups/0, + init_per_testcase/2, end_per_testcase/2, + init_per_suite/1, end_per_suite/1, + init_per_group/2, end_per_group/2]). -export([test_phash2_no_diff/1, test_phash2_no_diff_long/1, @@ -69,6 +71,16 @@ init_per_group(_, Config) -> end_per_group(_, Config) -> Config. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + test_phash2_no_diff(Config) when is_list(Config) -> true = ct_property_test:quickcheck( phash2_properties:prop_phash2_same_with_same_input(), diff --git a/erts/emulator/test/list_bif_SUITE.erl b/erts/emulator/test/list_bif_SUITE.erl index 1455c483d8..5c59872ba9 100644 --- a/erts/emulator/test/list_bif_SUITE.erl +++ b/erts/emulator/test/list_bif_SUITE.erl @@ -21,7 +21,8 @@ -module(list_bif_SUITE). -include_lib("common_test/include/ct.hrl"). --export([all/0, suite/0]). +-export([all/0, suite/0, + init_per_testcase/2, end_per_testcase/2]). -export([hd_test/1,tl_test/1,t_length/1,t_list_to_pid/1, t_list_to_ref/1, t_list_to_ext_pidportref/1, t_list_to_port/1,t_list_to_float/1,t_list_to_integer/1]). @@ -37,6 +38,16 @@ all() -> t_list_to_ref, t_list_to_ext_pidportref, t_list_to_float, t_list_to_integer]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% Tests list_to_integer and string:to_integer t_list_to_integer(Config) when is_list(Config) -> {'EXIT',{badarg,_}} = (catch list_to_integer("12373281903728109372810937209817320981321ABC")), diff --git a/erts/emulator/test/lttng_SUITE.erl b/erts/emulator/test/lttng_SUITE.erl index b6f3283d8e..56641ff937 100644 --- a/erts/emulator/test/lttng_SUITE.erl +++ b/erts/emulator/test/lttng_SUITE.erl @@ -74,7 +74,12 @@ init_per_testcase(Case, Config) -> end_per_testcase(Case, _Config) -> Name = atom_to_list(Case), ok = ensure_lttng_stopped(Name), - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %% Not tested yet %% org_erlang_otp:driver_process_exit diff --git a/erts/emulator/test/map_SUITE.erl b/erts/emulator/test/map_SUITE.erl index b6ffcd6985..18f86684d7 100644 --- a/erts/emulator/test/map_SUITE.erl +++ b/erts/emulator/test/map_SUITE.erl @@ -18,6 +18,7 @@ %% -module(map_SUITE). -export([all/0, suite/0, init_per_suite/1, end_per_suite/1, + init_per_testcase/2, end_per_testcase/2, groups/0]). -export([t_build_and_match_literals/1, t_build_and_match_literals_large/1, @@ -196,6 +197,16 @@ end_per_suite(Config) -> lists:foreach(fun (A) -> application:stop(A) end, As), Config. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% tests t_build_and_match_literals(Config) when is_list(Config) -> diff --git a/erts/emulator/test/match_spec_SUITE.erl b/erts/emulator/test/match_spec_SUITE.erl index 5f789707f3..317de48239 100644 --- a/erts/emulator/test/match_spec_SUITE.erl +++ b/erts/emulator/test/match_spec_SUITE.erl @@ -21,6 +21,7 @@ -module(match_spec_SUITE). -export([all/0, suite/0]). +-export([init_per_testcase/2, end_per_testcase/2]). -export([test_1/1, test_2/1, test_3/1, caller_and_return_to/1, bad_match_spec_bin/1, trace_control_word/1, silent/1, silent_no_ms/1, silent_test/1, ms_trace2/1, ms_trace3/1, ms_trace_dead/1, boxed_and_small/1, @@ -57,6 +58,16 @@ all() -> otp_9422, maps]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + test_1(Config) when is_list(Config) -> tr(fun() -> ?MODULE:f1(a) end, {?MODULE, f1, 1}, diff --git a/erts/emulator/test/message_queue_data_SUITE.erl b/erts/emulator/test/message_queue_data_SUITE.erl index c59e043474..effd4c1370 100644 --- a/erts/emulator/test/message_queue_data_SUITE.erl +++ b/erts/emulator/test/message_queue_data_SUITE.erl @@ -21,6 +21,7 @@ -module(message_queue_data_SUITE). -export([all/0, suite/0, init_per_suite/1, end_per_suite/1]). +-export([init_per_testcase/2, end_per_testcase/2]). -export([basic/1, process_info_messages/1, total_heap_size/1, change_to_off_heap/1, change_to_off_heap_gc/1]). @@ -40,6 +41,16 @@ end_per_suite(_Config) -> erts_debug:set_internal_state(available_internal_state, false), ok. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + all() -> [basic, process_info_messages, total_heap_size, change_to_off_heap, change_to_off_heap_gc]. diff --git a/erts/emulator/test/monitor_SUITE.erl b/erts/emulator/test/monitor_SUITE.erl index 2f8082ebea..a2574a2dbe 100644 --- a/erts/emulator/test/monitor_SUITE.erl +++ b/erts/emulator/test/monitor_SUITE.erl @@ -24,6 +24,7 @@ -include_lib("eunit/include/eunit.hrl"). -export([all/0, suite/0, groups/0, + init_per_testcase/2, end_per_testcase/2, case_1/1, case_1a/1, case_2/1, case_2a/1, mon_e_1/1, demon_e_1/1, demon_1/1, demon_2/1, demon_3/1, demonitor_flush/1, gh_5225_demonitor_alias/1, local_remove_monitor/1, remote_remove_monitor/1, mon_1/1, mon_2/1, @@ -51,6 +52,16 @@ groups() -> [{remove_monitor, [], [local_remove_monitor, remote_remove_monitor]}]. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% A monitors B, B kills A and then exits (yielded core dump) case_1(Config) when is_list(Config) -> process_flag(trap_exit, true), diff --git a/erts/emulator/test/node_container_SUITE.erl b/erts/emulator/test/node_container_SUITE.erl index 0e0c353aea..1dc9b0ffbe 100644 --- a/erts/emulator/test/node_container_SUITE.erl +++ b/erts/emulator/test/node_container_SUITE.erl @@ -81,7 +81,12 @@ init_per_testcase(_Case, Config) when is_list(Config) -> Config. end_per_testcase(_Case, Config) when is_list(Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %%% %%% The test cases ------------------------------------------------------------- diff --git a/erts/emulator/test/port_SUITE.erl b/erts/emulator/test/port_SUITE.erl index 4a3ecef397..94911a9e08 100644 --- a/erts/emulator/test/port_SUITE.erl +++ b/erts/emulator/test/port_SUITE.erl @@ -227,7 +227,12 @@ init_per_testcase(Case, Config) -> [{testcase, Case} |Config]. end_per_testcase(_Case, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. init_per_suite(Config) when is_list(Config) -> ignore_cores:init(Config). diff --git a/erts/emulator/test/process_SUITE.erl b/erts/emulator/test/process_SUITE.erl index 2389ae2dfd..b247022a61 100644 --- a/erts/emulator/test/process_SUITE.erl +++ b/erts/emulator/test/process_SUITE.erl @@ -199,7 +199,12 @@ end_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> #{size => 0, kill => true, error_logger => true}), - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. fun_spawn(Fun) -> spawn_link(erlang, apply, [Fun, []]). diff --git a/erts/emulator/test/ref_SUITE.erl b/erts/emulator/test/ref_SUITE.erl index ad5a962611..002c39abd0 100644 --- a/erts/emulator/test/ref_SUITE.erl +++ b/erts/emulator/test/ref_SUITE.erl @@ -39,7 +39,12 @@ init_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> [{testcase, Func}|Config]. end_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. all() -> [wrap_1, compare_list, compare_ets, internal_size, external_size]. diff --git a/erts/emulator/test/scheduler_SUITE.erl b/erts/emulator/test/scheduler_SUITE.erl index 44000667a0..4f179c9c07 100644 --- a/erts/emulator/test/scheduler_SUITE.erl +++ b/erts/emulator/test/scheduler_SUITE.erl @@ -123,7 +123,12 @@ init_per_tc(Case, Config) -> [{testcase, Case}, {ok_res, OkRes} |Config]. end_per_testcase(_Case, Config) when is_list(Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. -define(ERTS_RUNQ_CHECK_BALANCE_REDS_PER_SCHED, (2000*2000)). -define(DEFAULT_TEST_REDS_PER_SCHED, 200000000). diff --git a/erts/emulator/test/signal_SUITE.erl b/erts/emulator/test/signal_SUITE.erl index c6f7b1fc8d..348e10c933 100644 --- a/erts/emulator/test/signal_SUITE.erl +++ b/erts/emulator/test/signal_SUITE.erl @@ -53,7 +53,12 @@ init_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> [{testcase, Func}|Config]. end_per_testcase(_Func, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. init_per_suite(Config) -> Config. diff --git a/erts/emulator/test/smoke_test_SUITE.erl b/erts/emulator/test/smoke_test_SUITE.erl index 60ce4c2bfe..a7c6fef6b4 100644 --- a/erts/emulator/test/smoke_test_SUITE.erl +++ b/erts/emulator/test/smoke_test_SUITE.erl @@ -49,7 +49,12 @@ init_per_tc(Case, Config) -> [{testcase, Case}|Config]. end_per_testcase(_Case, Config) when is_list(Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %%% %%% The test cases ------------------------------------------------------------- diff --git a/erts/emulator/test/system_info_SUITE.erl b/erts/emulator/test/system_info_SUITE.erl index 7c543a64e4..92f36ad1ea 100644 --- a/erts/emulator/test/system_info_SUITE.erl +++ b/erts/emulator/test/system_info_SUITE.erl @@ -63,7 +63,12 @@ init_per_testcase(_, Config) -> end_per_testcase(procs_bug, Config) -> procs_bug(end_per_testcase, Config); end_per_testcase(_, _) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %%% %%% The test cases ------------------------------------------------------------- diff --git a/erts/emulator/test/time_SUITE.erl b/erts/emulator/test/time_SUITE.erl index d1bd884b82..17a8e16f69 100644 --- a/erts/emulator/test/time_SUITE.erl +++ b/erts/emulator/test/time_SUITE.erl @@ -70,7 +70,12 @@ init_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> [{testcase, Func}|Config]. end_per_testcase(_Func, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. suite() -> [{ct_hooks,[ts_install_cth]}]. diff --git a/erts/emulator/test/timer_bif_SUITE.erl b/erts/emulator/test/timer_bif_SUITE.erl index f66edc275e..0824bb97c4 100644 --- a/erts/emulator/test/timer_bif_SUITE.erl +++ b/erts/emulator/test/timer_bif_SUITE.erl @@ -48,7 +48,12 @@ init_per_testcase(_Case, Config) -> Config. end_per_testcase(_Case, _Config) -> - ok. + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. init_per_suite(Config) -> erts_debug:set_internal_state(available_internal_state, true), diff --git a/erts/emulator/test/trace_SUITE.erl b/erts/emulator/test/trace_SUITE.erl index 071e2a2961..ac2fa23ed0 100644 --- a/erts/emulator/test/trace_SUITE.erl +++ b/erts/emulator/test/trace_SUITE.erl @@ -73,7 +73,13 @@ end_per_testcase(_Case, Config) -> Receiver = proplists:get_value(receiver, Config), unlink(Receiver), exit(Receiver, die), - ok. + + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. %% No longer testing anything, just reporting whether cpu_timestamp %% is enabled or not. diff --git a/erts/emulator/test/unique_SUITE.erl b/erts/emulator/test/unique_SUITE.erl index b47464b7f1..bd932a2c54 100644 --- a/erts/emulator/test/unique_SUITE.erl +++ b/erts/emulator/test/unique_SUITE.erl @@ -21,6 +21,7 @@ -module(unique_SUITE). -export([all/0, suite/0, init_per_suite/1, end_per_suite/1]). +-export([init_per_testcase/2, end_per_testcase/2]). -export([unique_monotonic_integer_white_box/1, unique_integer_white_box/1]). @@ -47,6 +48,16 @@ end_per_suite(_Config) -> erts_debug:set_internal_state(available_internal_state, false), ok. +init_per_testcase(_TestCase, Config) -> + Config. +end_per_testcase(_TestCase, _Config) -> + case nodes(connected) of + [] -> ok; + Nodes -> + [net_kernel:disconnect(N) || N <- Nodes], + {fail, {"Leaked connections", Nodes}} + end. + %% %% %% Unique counter white box test case -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor