diff options
author | Rickard Green <rickard@erlang.org> | 2021-04-22 19:00:11 +0200 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2021-04-22 19:00:11 +0200 |
commit | ec045d80b87887c9657b33591671f3712021e906 (patch) | |
tree | 1f35b74da9cfa1707689748b897961371432afc3 /erts/emulator/test/process_SUITE.erl | |
parent | da589e59f2dbfe2ddad67d484db098d026828ba8 (diff) | |
parent | 1a68663cde280a24cee5073f48f3876dfbc3eb75 (diff) | |
download | erlang-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.erl | 59 |
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, |