diff options
author | Rickard Green <[email protected]> | 2019-07-04 18:05:44 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-07-08 11:01:03 +0200 |
commit | 91b25395276b2cb2467087133b57fbac795fde97 (patch) | |
tree | d694ae8eca7463b431e6406aa4a5f1b0d02bd0cf | |
parent | db6059a9217767a6e42e93cec05089c0ec977d20 (diff) | |
download | otp-91b25395276b2cb2467087133b57fbac795fde97.tar.gz otp-91b25395276b2cb2467087133b57fbac795fde97.tar.bz2 otp-91b25395276b2cb2467087133b57fbac795fde97.zip |
Fix unstable tests process_SUITE:no_priority_inversion{,2}
Sometimes processes have not had the time to spread
from one scheduler. Force spread by using the undocumented
'scheduler' option.
-rw-r--r-- | erts/emulator/test/process_SUITE.erl | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/erts/emulator/test/process_SUITE.erl b/erts/emulator/test/process_SUITE.erl index a8bcfac84d..cafab983ad 100644 --- a/erts/emulator/test/process_SUITE.erl +++ b/erts/emulator/test/process_SUITE.erl @@ -2394,14 +2394,20 @@ garb_other_running(Config) when is_list(Config) -> no_priority_inversion(Config) when is_list(Config) -> Prio = process_flag(priority, max), - HTLs = lists:map(fun (_) -> + Master = self(), + Executing = make_ref(), + HTLs = lists:map(fun (Sched) -> spawn_opt(fun () -> + Master ! {self(), Executing}, tok_loop() end, - [{priority, high}, monitor, link]) + [{priority, high}, + {scheduler, Sched}, + monitor, + link]) end, - lists:seq(1, 2*erlang:system_info(schedulers))), - receive after 500 -> ok end, + lists:seq(1, erlang:system_info(schedulers_online))), + lists:foreach(fun ({P, _}) -> receive {P,Executing} -> ok end end, HTLs), LTL = spawn_opt(fun () -> tok_loop() end, @@ -2423,14 +2429,19 @@ no_priority_inversion(Config) when is_list(Config) -> no_priority_inversion2(Config) when is_list(Config) -> Prio = process_flag(priority, max), - MTLs = lists:map(fun (_) -> + Master = self(), + Executing = make_ref(), + MTLs = lists:map(fun (Sched) -> spawn_opt(fun () -> + Master ! {self(), Executing}, tok_loop() end, - [{priority, max}, monitor, link]) + [{priority, max}, + {scheduler, Sched}, + monitor, link]) end, - lists:seq(1, 2*erlang:system_info(schedulers))), - receive after 2000 -> ok end, + lists:seq(1, erlang:system_info(schedulers_online))), + lists:foreach(fun ({P, _}) -> receive {P,Executing} -> ok end end, MTLs), {PL, ML} = spawn_opt(fun () -> tok_loop() end, |