summaryrefslogtreecommitdiff
path: root/lib/kernel/test/socket_test_evaluator.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/test/socket_test_evaluator.erl')
-rw-r--r--lib/kernel/test/socket_test_evaluator.erl42
1 files changed, 30 insertions, 12 deletions
diff --git a/lib/kernel/test/socket_test_evaluator.erl b/lib/kernel/test/socket_test_evaluator.erl
index c2bd9d44b8..49b529461f 100644
--- a/lib/kernel/test/socket_test_evaluator.erl
+++ b/lib/kernel/test/socket_test_evaluator.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2018-2022. All Rights Reserved.
+%% Copyright Ericsson AB 2018-2023. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
@@ -134,6 +134,11 @@ loop(ID, [#{desc := Desc,
"~n ~p", [ID, Reason]),
exit({command_failed, ID, Reason, State})
catch
+ error:notsup = Reason:Stack ->
+ ?SEV_IPRINT("command ~w skip: "
+ "~n ~p"
+ "~n ~p", [ID, Reason, Stack]),
+ exit({skip, Reason});
C:{skip, command} = E:_ when ((C =:= throw) orelse (C =:= exit)) ->
%% Secondary skip
exit(E);
@@ -176,14 +181,14 @@ await_finish(Evs, OK, Fails) ->
%% The evaluator can skip the test case:
{'DOWN', _MRef, process, Pid, {skip, Reason}} ->
- %% ?SEV_IPRINT("await_finish -> skip (down) received: "
- %% "~n Pid: ~p"
- %% "~n Reason: ~p", [Pid, Reason]),
+ ?SEV_IPRINT("await_finish -> skip (down) received: "
+ "~n Pid: ~p"
+ "~n Reason: ~p", [Pid, Reason]),
await_finish_skip(Pid, Reason, Evs, OK);
{'EXIT', Pid, {skip, Reason}} ->
- %% ?SEV_IPRINT("await_finish -> skip (exit) received: "
- %% "~n Pid: ~p"
- %% "~n Reason: ~p", [Pid, Reason]),
+ ?SEV_IPRINT("await_finish -> skip (exit) received: "
+ "~n Pid: ~p"
+ "~n Reason: ~p", [Pid, Reason]),
await_finish_skip(Pid, Reason, Evs, OK);
%% Evaluator failed
@@ -242,7 +247,9 @@ await_finish_skip(Pid, Reason, Evs, OK) ->
end,
Evs
end,
+ ?SEV_IPRINT("ensure (~w) evaluator(s) are terminated", [length(Evs)]),
await_evs_terminated(Evs2),
+ ?SEV_IPRINT("issue skip"),
?LIB:skip(Reason).
await_evs_terminated(Evs) ->
@@ -576,7 +583,7 @@ await(ExpPid, Name, Announcement, Slogan, OtherPids)
{'DOWN', _, process, Pid, {skip, SkipReason}} when (Pid =:= ExpPid) ->
iprint("Unexpected SKIP from ~w (~p): "
"~n ~p", [Name, Pid, SkipReason]),
- ?LIB:skip({Name, SkipReason});
+ ?LIB:skip(SkipReason);
{'DOWN', _, process, Pid, Reason} when (Pid =:= ExpPid) ->
eprint("Unexpected DOWN from ~w (~p): "
"~n ~p", [Name, Pid, Reason]),
@@ -590,10 +597,16 @@ await(ExpPid, Name, Announcement, Slogan, OtherPids)
"~n OtherPids: "
"~n ~p", [OtherPid, Reason, OtherPids]),
await(ExpPid, Name, Announcement, Slogan, OtherPids);
+ {skip, SkipName, SkipReason} ->
+ iprint("Unexpected other SKIP from ~w (~p): "
+ "~n ~p", [SkipName, OtherPid, SkipReason]),
+ ?LIB:skip(SkipReason);
{error, _} = ERROR ->
ERROR
end
- after infinity -> % For easy debugging, just change to some valid time (5000)
+
+ %% For easy debugging, just change to some valid time (5000)
+ after infinity ->
iprint("await -> timeout for msg from ~p (~w): "
"~n Announcement: ~p"
"~n Slogan: ~p"
@@ -613,9 +626,14 @@ pi(Pid, Item) ->
check_down(Pid, DownReason, Pids) ->
case lists:keysearch(Pid, 2, Pids) of
{value, {Name, _}} ->
- eprint("Unexpected DOWN from ~w (~p): "
- "~n ~p", [Name, Pid, DownReason]),
- {error, {unexpected_exit, Name, DownReason}};
+ case DownReason of
+ {skip, Reason} ->
+ {skip, Name, Reason};
+ _ ->
+ eprint("Unexpected DOWN from ~w (~p): "
+ "~n ~p", [Name, Pid, DownReason]),
+ {error, {unexpected_exit, Name, DownReason}}
+ end;
false ->
ok
end.