aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/test
diff options
context:
space:
mode:
authorSiri Hansen <[email protected]>2013-05-02 12:10:00 +0200
committerSiri Hansen <[email protected]>2013-05-03 10:12:31 +0200
commitdca1c83d1f496817a709091576d29d2ad1b976d2 (patch)
tree2a1d4a7b1615a2f9c9f919d379b81343bee57c79 /lib/stdlib/test
parent428ae2085c8f9df7364fbf5742aba0962bb9a3de (diff)
downloadotp-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')
-rw-r--r--lib/stdlib/test/gen_server_SUITE.erl16
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]),