diff options
author | Siri Hansen <[email protected]> | 2013-05-02 12:10:00 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2013-05-03 10:12:31 +0200 |
commit | dca1c83d1f496817a709091576d29d2ad1b976d2 (patch) | |
tree | 2a1d4a7b1615a2f9c9f919d379b81343bee57c79 /lib/stdlib/test/gen_server_SUITE.erl | |
parent | 428ae2085c8f9df7364fbf5742aba0962bb9a3de (diff) | |
download | otp-dca1c83d1f496817a709091576d29d2ad1b976d2.tar.gz otp-dca1c83d1f496817a709091576d29d2ad1b976d2.tar.bz2 otp-dca1c83d1f496817a709091576d29d2ad1b976d2.zip |
Fix gen_server_SUITE:call_with_huge_message_queue
This test always fails when gen is native compiled, since the
optmization is not implemented then. The test is now skipped when
running with hipe.
The test does also quite often fail on one of the test hosts which
runs in a virtual machine. The reason is that the clock runs "in
bursts" on this host, which is outside of the control of the erlang VM
and probably due to the fact that the host runs as a virtual
machine. To overcome this problem, the echo message is now sent 10000
times instead of 10 times - i.e. the test run is prolonged in order to
even out the effect of the bursts.
Diffstat (limited to 'lib/stdlib/test/gen_server_SUITE.erl')
-rw-r--r-- | lib/stdlib/test/gen_server_SUITE.erl | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/stdlib/test/gen_server_SUITE.erl b/lib/stdlib/test/gen_server_SUITE.erl index 3b6a3f38bc..a360a0809b 100644 --- a/lib/stdlib/test/gen_server_SUITE.erl +++ b/lib/stdlib/test/gen_server_SUITE.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. +%% Copyright Ericsson AB 1996-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -1082,13 +1082,23 @@ replace_state(Config) when is_list(Config) -> %% Test that the time for a huge message queue is not %% significantly slower than with an empty message queue. call_with_huge_message_queue(Config) when is_list(Config) -> + case test_server:is_native(gen) of + true -> + {skip, + "gen is native - huge message queue optimization " + "is not implemented"}; + false -> + do_call_with_huge_message_queue() + end. + +do_call_with_huge_message_queue() -> ?line Pid = spawn_link(fun echo_loop/0), - ?line {Time,ok} = tc(fun() -> calls(10, Pid) end), + ?line {Time,ok} = tc(fun() -> calls(10000, Pid) end), ?line [self() ! {msg,N} || N <- lists:seq(1, 500000)], erlang:garbage_collect(), - ?line {NewTime,ok} = tc(fun() -> calls(10, Pid) end), + ?line {NewTime,ok} = tc(fun() -> calls(10000, Pid) end), io:format("Time for empty message queue: ~p", [Time]), io:format("Time for huge message queue: ~p", [NewTime]), |