summaryrefslogtreecommitdiff
path: root/erts/emulator/test/process_SUITE.erl
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2021-04-22 19:00:11 +0200
committerRickard Green <rickard@erlang.org>2021-04-22 19:00:11 +0200
commitec045d80b87887c9657b33591671f3712021e906 (patch)
tree1f35b74da9cfa1707689748b897961371432afc3 /erts/emulator/test/process_SUITE.erl
parentda589e59f2dbfe2ddad67d484db098d026828ba8 (diff)
parent1a68663cde280a24cee5073f48f3876dfbc3eb75 (diff)
downloaderlang-ec045d80b87887c9657b33591671f3712021e906.tar.gz
Merge branch 'rickard/signal-order-fix/22/OTP-17291' into rickard/signal-order-fix/23/OTP-17291
* rickard/signal-order-fix/22/OTP-17291: Ensure is_process_alive() and process_info() respect signal order Ensure reply signals from ports respect signal order Ensure GC and CPC signals respect signal order
Diffstat (limited to 'erts/emulator/test/process_SUITE.erl')
-rw-r--r--erts/emulator/test/process_SUITE.erl59
1 files changed, 32 insertions, 27 deletions
diff --git a/erts/emulator/test/process_SUITE.erl b/erts/emulator/test/process_SUITE.erl
index 5619807791..cef80b34ce 100644
--- a/erts/emulator/test/process_SUITE.erl
+++ b/erts/emulator/test/process_SUITE.erl
@@ -3558,6 +3558,8 @@ do_otp_7738_test(Type) ->
gor(Reds, Stop) ->
receive
+ drop_me ->
+ gor(Reds+1, Stop);
{From, reds} ->
From ! {reds, Reds, self()},
gor(Reds+1, Stop);
@@ -3570,7 +3572,11 @@ gor(Reds, Stop) ->
garb_other_running(Config) when is_list(Config) ->
Stop = make_ref(),
{Pid, Mon} = spawn_monitor(fun () -> gor(0, Stop) end),
- Reds = lists:foldl(fun (_, OldReds) ->
+ Reds = lists:foldl(fun (N, OldReds) ->
+ case N rem 2 of
+ 0 -> Pid ! drop_me;
+ _ -> ok
+ end,
erlang:garbage_collect(Pid),
receive after 1 -> ok end,
Pid ! {self(), reds},
@@ -3645,18 +3651,18 @@ no_priority_inversion2(Config) when is_list(Config) ->
tok_loop()
end,
[{priority, low}, monitor, link]),
- RL = request_gc(PL, low),
- RN = request_gc(PL, normal),
- RH = request_gc(PL, high),
+ RL = request_test(PL, low),
+ RN = request_test(PL, normal),
+ RH = request_test(PL, high),
receive
- {garbage_collect, _, _} ->
- ct:fail(unexpected_gc)
+ {system_task_test, _, _} ->
+ ct:fail(unexpected_system_task_completed)
after 1000 ->
ok
end,
- RM = request_gc(PL, max),
+ RM = request_test(PL, max),
receive
- {garbage_collect, RM, true} ->
+ {system_task_test, RM, true} ->
ok
end,
lists:foreach(fun ({P, _}) ->
@@ -3670,15 +3676,15 @@ no_priority_inversion2(Config) when is_list(Config) ->
end
end, MTLs),
receive
- {garbage_collect, RH, true} ->
+ {system_task_test, RH, true} ->
ok
end,
receive
- {garbage_collect, RN, true} ->
+ {system_task_test, RN, true} ->
ok
end,
receive
- {garbage_collect, RL, true} ->
+ {system_task_test, RL, true} ->
ok
end,
unlink(PL),
@@ -3690,18 +3696,18 @@ no_priority_inversion2(Config) when is_list(Config) ->
process_flag(priority, Prio),
ok.
-request_gc(Pid, Prio) ->
+request_test(Pid, Prio) ->
Ref = make_ref(),
- erts_internal:request_system_task(Pid, Prio, {garbage_collect, Ref, major}),
+ erts_internal:request_system_task(Pid, Prio, {system_task_test, Ref}),
Ref.
system_task_blast(Config) when is_list(Config) ->
Me = self(),
GCReq = fun () ->
- RL = gc_req(Me, 100),
+ RL = test_req(Me, 100),
lists:foreach(fun (R) ->
receive
- {garbage_collect, R, true} ->
+ {system_task_test, R, true} ->
ok
end
end, RL),
@@ -3716,14 +3722,14 @@ system_task_blast(Config) when is_list(Config) ->
end, HTLs),
ok.
-gc_req(_Pid, 0) ->
+test_req(_Pid, 0) ->
[];
-gc_req(Pid, N) ->
- R0 = request_gc(Pid, low),
- R1 = request_gc(Pid, normal),
- R2 = request_gc(Pid, high),
- R3 = request_gc(Pid, max),
- [R0, R1, R2, R3 | gc_req(Pid, N-1)].
+test_req(Pid, N) ->
+ R0 = request_test(Pid, low),
+ R1 = request_test(Pid, normal),
+ R2 = request_test(Pid, high),
+ R3 = request_test(Pid, max),
+ [R0, R1, R2, R3 | test_req(Pid, N-1)].
system_task_on_suspended(Config) when is_list(Config) ->
{P, M} = spawn_monitor(fun () ->
@@ -3888,17 +3894,16 @@ otp_16642(Config) when is_list(Config) ->
erts_internal:request_system_task(
Pid,
Prio,
- {check_process_code,
- {Prio, N},
- '__non_existing_module__'})
+ {system_task_test,
+ {Prio, N}})
end,
lists:seq(Start, Stop))
end,
MkResList = fun (Prio, Start, Stop) ->
lists:map(fun (N) ->
- {check_process_code,
+ {system_task_test,
{Prio, N},
- false}
+ true}
end,
lists:seq(Start, Stop))
end,