summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-02-23 12:52:55 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2011-02-23 12:52:55 +0000
commitbe6363321e67964fde51f4147e75237c71170394 (patch)
treecec3b930b6e5fe297da5c618c2c500c084045876 /src
parent32ab9db898718f0644f8e17941ff5903e429c6de (diff)
downloadrabbitmq-server-git-be6363321e67964fde51f4147e75237c71170394.tar.gz
Added test to assert receiving messages in the order they're sent. Other cosmetics
Diffstat (limited to 'src')
-rw-r--r--src/gm_tests.erl30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/gm_tests.erl b/src/gm_tests.erl
index 8724415326..65e9cff041 100644
--- a/src/gm_tests.erl
+++ b/src/gm_tests.erl
@@ -20,6 +20,7 @@
test_broadcast/0,
test_confirmed_broadcast/0,
test_member_death/0,
+ test_receive_in_order/0,
all_tests/0]).
-export([joined/2, members_changed/3, handle_msg/3, terminate/2]).
@@ -60,6 +61,7 @@ all_tests() ->
passed = test_broadcast(),
passed = test_confirmed_broadcast(),
passed = test_member_death(),
+ passed = test_receive_in_order(),
passed.
test_join_leave() ->
@@ -83,6 +85,8 @@ test_member_death() ->
unlink(Pid3),
exit(Pid3, kill),
+ %% Have to do some broadcasts to ensure that all members
+ %% find out about the death.
passed = (test_broadcast_fun(fun gm:confirmed_broadcast/2))(
Pid, Pid2),
@@ -92,6 +96,23 @@ test_member_death() ->
passed
end).
+test_receive_in_order() ->
+ with_two_members(
+ fun (Pid, Pid2) ->
+ Numbers = lists:seq(1,1000),
+ [begin ok = gm:broadcast(Pid, N), ok = gm:broadcast(Pid2, N) end
+ || N <- Numbers],
+ passed = receive_numbers(
+ Pid, Pid, {timeout_for_msgs, Pid, Pid}, Numbers),
+ passed = receive_numbers(
+ Pid, Pid2, {timeout_for_msgs, Pid, Pid2}, Numbers),
+ passed = receive_numbers(
+ Pid2, Pid, {timeout_for_msgs, Pid2, Pid}, Numbers),
+ passed = receive_numbers(
+ Pid2, Pid2, {timeout_for_msgs, Pid2, Pid2}, Numbers),
+ passed
+ end).
+
test_broadcast(Fun) ->
with_two_members(test_broadcast_fun(Fun)).
@@ -112,7 +133,6 @@ with_two_members(Fun) ->
{ok, Pid2} = gm:start_link(?MODULE, ?MODULE, self()),
passed = receive_joined(Pid2, [Pid, Pid2], timeout_joining_gm_group_2),
-
passed = receive_birth(Pid, Pid2, timeout_waiting_for_birth_2),
passed = Fun(Pid, Pid2),
@@ -152,3 +172,11 @@ receive_termination(From, Reason, Error) ->
?RECEIVE_OR_THROW({termination, From, Reason1},
Reason == Reason1,
Error).
+
+receive_numbers(_Pid, _Sender, _Error, []) ->
+ passed;
+receive_numbers(Pid, Sender, Error, [N | Numbers]) ->
+ ?RECEIVE_OR_THROW({msg, Pid, Sender, M},
+ M == N,
+ Error),
+ receive_numbers(Pid, Sender, Error, Numbers).