diff options
author | Micael Karlberg <[email protected]> | 2019-04-08 15:06:34 +0200 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2019-04-17 16:56:33 +0200 |
commit | 4f8a3fee7e76e9b3632b573658e5356cf7d91beb (patch) | |
tree | 1984e3637a00c569a6bf50a530ce21b403020f6c /erts/emulator/test/socket_SUITE.erl | |
parent | 94fff0ec8e8a4cd47281a9a1628ddf56e638ca10 (diff) | |
download | otp-4f8a3fee7e76e9b3632b573658e5356cf7d91beb.tar.gz otp-4f8a3fee7e76e9b3632b573658e5356cf7d91beb.tar.bz2 otp-4f8a3fee7e76e9b3632b573658e5356cf7d91beb.zip |
[socket|test] Make sure all evaluators are terminated
When an evaluator skips (issue a exit or throw skip),
we must make sure all the other also terminates, before
the TC can end.
This was not done which cause the TC to fail when one
of the other evaluators (tester) terminated later.
Diffstat (limited to 'erts/emulator/test/socket_SUITE.erl')
-rw-r--r-- | erts/emulator/test/socket_SUITE.erl | 44 |
1 files changed, 33 insertions, 11 deletions
diff --git a/erts/emulator/test/socket_SUITE.erl b/erts/emulator/test/socket_SUITE.erl index 042214adc7..487b53a584 100644 --- a/erts/emulator/test/socket_SUITE.erl +++ b/erts/emulator/test/socket_SUITE.erl @@ -11366,7 +11366,7 @@ traffic_ping_pong_send_and_receive_udp2(InitState) -> end}, #{desc => "order handler to recv", cmd => fun(#{handler := Handler, - sock := Sock} = _State) -> + sock := _Sock} = _State) -> %% socket:setopt(Sock, otp, debug, true), ?SEV_ANNOUNCE_CONTINUE(Handler, recv), ok @@ -17974,11 +17974,15 @@ set_tc_name(N) when is_list(N) -> %% get(tc_name). tc_begin(TC) -> + OldVal = process_flag(trap_exit, true), + put(old_trap_exit, OldVal), set_tc_name(TC), tc_print("begin ***", "~n----------------------------------------------------~n", ""). tc_end(Result) when is_list(Result) -> + OldVal = erase(old_trap_exit), + process_flag(trap_exit, OldVal), tc_print("done: ~s", [Result], "", "----------------------------------------------------~n~n"), ok. @@ -18010,25 +18014,43 @@ tc_try(Case, TCCondFun, TCFun) end catch C:{skip, _} = SKIP when ((C =:= throw) orelse (C =:= exit)) -> - tc_end("skipping"), + %% i("catched[tc] (skip): " + %% "~n C: ~p" + %% "~n SKIP: ~p" + %% "~n", [C, SKIP]), + tc_end( f("skipping(catched,~w,tc)", [C]) ), SKIP; - Class:Error:Stack -> - tc_end("failed"), - erlang:raise(Class, Error, Stack) + C:E:S -> + %% i("catched[tc]: " + %% "~n C: ~p" + %% "~n E: ~p" + %% "~n S: ~p" + %% "~n", [C, E, S]), + tc_end( f("failed(catched,~w,tc)", [C]) ), + erlang:raise(C, E, S) end; {skip, _} = SKIP -> - tc_end("skipping"), + tc_end("skipping(tc)"), SKIP; {error, Reason} -> - tc_end("failed"), + tc_end("failed(tc)"), exit({tc_cond_failed, Reason}) catch C:{skip, _} = SKIP when ((C =:= throw) orelse (C =:= exit)) -> - tc_end("skipping"), + %% i("catched[cond] (skip): " + %% "~n C: ~p" + %% "~n SKIP: ~p" + %% "~n", [C, SKIP]), + tc_end( f("skipping(catched,~w,cond)", [C]) ), SKIP; - Class:Error:Stack -> - tc_end("failed"), - erlang:raise(Class, Error, Stack) + C:E:S -> + %% i("catched[cond]: " + %% "~n C: ~p" + %% "~n E: ~p" + %% "~n S: ~p" + %% "~n", [C, E, S]), + tc_end( f("failed(catched,~w,cond)", [C]) ), + erlang:raise(C, E, S) end. |