diff options
author | Rickard Green <[email protected]> | 2016-08-30 15:22:40 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-08-30 15:22:40 +0200 |
commit | 16f4bd5f6cb5fe6d6412ae219634902813bd9cce (patch) | |
tree | 76a2609df5f8604769315cd23502d566f133a67e /erts/emulator/test/statistics_SUITE.erl | |
parent | a74e538f5fa73aed871a62f4f25efe06c1df19e6 (diff) | |
parent | 93fb8ecb7ed41e7c441b1c72901d6db76c24fd8d (diff) | |
download | otp-16f4bd5f6cb5fe6d6412ae219634902813bd9cce.tar.gz otp-16f4bd5f6cb5fe6d6412ae219634902813bd9cce.tar.bz2 otp-16f4bd5f6cb5fe6d6412ae219634902813bd9cce.zip |
Merge branch 'rickard/test-cuddle' into maint
* rickard/test-cuddle:
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.erl | 17 |
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 |