aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/test/statistics_SUITE.erl
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2016-08-30 15:23:13 +0200
committerRickard Green <[email protected]>2016-08-30 15:23:13 +0200
commita786167f801993995f2a1c6a5368a519cb341800 (patch)
tree3fee2b7435801b45924767595a06d6aff82d95de /erts/emulator/test/statistics_SUITE.erl
parentb63e2f1fd14e47c779f047d74d5e7d8b88602e6a (diff)
parent16f4bd5f6cb5fe6d6412ae219634902813bd9cce (diff)
downloadotp-a786167f801993995f2a1c6a5368a519cb341800.tar.gz
otp-a786167f801993995f2a1c6a5368a519cb341800.tar.bz2
otp-a786167f801993995f2a1c6a5368a519cb341800.zip
Merge branch 'maint'
* maint: Fix dirty_nif_SUITE:dirty_call_while_terminated test case Adjust process_SUITE:no_priority_inversion2 Allow larger timeout delay in driver_SUITE Ignore long time failures during high CPU utilization Cleanup in statistics_SUITE:runtime_update test Improve timer tests in driver_SUITE Fix statistics_SUITE:scheduler_wall_time test Fix scheduler_SUITE:scheduler_suspend test Fix scheduler_SUITE:scheduler_threads test Fix scheduler_SUITE:update_cpu_info test Skip nif_SUITE:consume_timeslice test when debug compiled Increase time margin in timer_bif_SUITE:start_timer_1 test
Diffstat (limited to 'erts/emulator/test/statistics_SUITE.erl')
-rw-r--r--erts/emulator/test/statistics_SUITE.erl17
1 files changed, 15 insertions, 2 deletions
diff --git a/erts/emulator/test/statistics_SUITE.erl b/erts/emulator/test/statistics_SUITE.erl
index 71ef003b25..a1f12ba93c 100644
--- a/erts/emulator/test/statistics_SUITE.erl
+++ b/erts/emulator/test/statistics_SUITE.erl
@@ -129,11 +129,15 @@ do_runtime_update(0) ->
{comment,"Never close enough"};
do_runtime_update(N) ->
{T1,Diff0} = statistics(runtime),
- spawn_link(fun cpu_heavy/0),
+ {CPUHog, CPUHogMon} = spawn_opt(fun cpu_heavy/0,[link,monitor]),
receive after 1000 -> ok end,
{T2,Diff} = statistics(runtime),
+ unlink(CPUHog),
+ exit(CPUHog, kill),
+
true = is_integer(T1+T2+Diff0+Diff),
io:format("T1 = ~p, T2 = ~p, Diff = ~p, T2-T1 = ~p", [T1,T2,Diff,T2-T1]),
+ receive {'DOWN',CPUHogMon,process,CPUHog,_} -> ok end,
if
T2 - T1 =:= Diff, 900 =< Diff, Diff =< 1500 -> ok;
true -> do_runtime_update(N-1)
@@ -311,8 +315,17 @@ scheduler_wall_time(Config) when is_list(Config) ->
true -> exit({fullload, FullLoad})
end,
- [exit(Pid, kill) || Pid <- [P1|HalfHogs++LastHogs]],
+ KillHog = fun (HP) ->
+ HPM = erlang:monitor(process, HP),
+ exit(HP, kill),
+ receive
+ {'DOWN', HPM, process, HP, killed} ->
+ ok
+ end
+ end,
+ [KillHog(Pid) || Pid <- [P1|HalfHogs++LastHogs]],
AfterLoad = get_load(),
+ io:format("AfterLoad=~p~n", [AfterLoad]),
{false,_} = {lists:any(fun(Load) -> Load > 25 end, AfterLoad),AfterLoad},
true = erlang:system_flag(scheduler_wall_time, false)
after