summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-08-16 12:02:29 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-08-16 12:02:29 +0100
commitad9abe5c9106d468bcc369118bcf69dfb8815f14 (patch)
treeadfb0356655c65b58a4275137d8ed37095956dae /src
parentb384571346491b87b77609fe50dfc6cccd25e831 (diff)
downloadrabbitmq-server-git-ad9abe5c9106d468bcc369118bcf69dfb8815f14.tar.gz
Don't drain events, instead get rabbit_tests_event_receiver to only forward on events we care about.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_tests.erl13
-rw-r--r--src/rabbit_tests_event_receiver.erl35
2 files changed, 23 insertions, 25 deletions
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl
index e02b862db0..cf477a16eb 100644
--- a/src/rabbit_tests.erl
+++ b/src/rabbit_tests.erl
@@ -1400,7 +1400,7 @@ test_statistics() ->
QPid = Q#amqqueue.pid,
X = rabbit_misc:r(<<"/">>, exchange, <<"">>),
- rabbit_tests_event_receiver:start(self(), [node()]),
+ rabbit_tests_event_receiver:start(self(), [node()], [channel_stats]),
%% Check stats empty
Event = test_statistics_receive_event(Ch, fun (_) -> true end),
@@ -1444,10 +1444,8 @@ test_statistics() ->
passed.
test_refresh_events(SecondaryNode) ->
- %% Just make sure we don't have some other events ready to consume...
- drain_mbx(),
-
- rabbit_tests_event_receiver:start(self(), [node(), SecondaryNode]),
+ rabbit_tests_event_receiver:start(self(), [node(), SecondaryNode],
+ [channel_created, queue_created]),
{_Writer, Ch} = test_spawn(),
expect_events(Ch, channel_created),
@@ -1475,11 +1473,6 @@ expect_event(Pid, Type) ->
after 1000 -> throw({failed_to_receive_event, Type})
end.
-drain_mbx() ->
- receive _ -> drain_mbx()
- after 0 -> ok
- end.
-
test_delegates_async(SecondaryNode) ->
Self = self(),
Sender = fun (Pid) -> Pid ! {invoked, Self} end,
diff --git a/src/rabbit_tests_event_receiver.erl b/src/rabbit_tests_event_receiver.erl
index dba03fddbd..abcbe0b6d5 100644
--- a/src/rabbit_tests_event_receiver.erl
+++ b/src/rabbit_tests_event_receiver.erl
@@ -16,38 +16,43 @@
-module(rabbit_tests_event_receiver).
--export([start/2, stop/0]).
+-export([start/3, stop/0]).
-export([init/1, handle_call/2, handle_event/2, handle_info/2,
terminate/2, code_change/3]).
-start(Pid, Nodes) ->
+-include("rabbit.hrl").
+
+start(Pid, Nodes, Types) ->
Oks = [ok || _ <- Nodes],
{Oks, _} = rpc:multicall(Nodes, gen_event, add_handler,
- [rabbit_event, ?MODULE, [Pid]]).
+ [rabbit_event, ?MODULE, [Pid, Types]]).
stop() ->
gen_event:delete_handler(rabbit_event, ?MODULE, []).
%%----------------------------------------------------------------------------
-init([Pid]) ->
- {ok, Pid}.
+init([Pid, Types]) ->
+ {ok, {Pid, Types}}.
-handle_call(_Request, Pid) ->
- {ok, not_understood, Pid}.
+handle_call(_Request, State) ->
+ {ok, not_understood, State}.
-handle_event(Event, Pid) ->
- Pid ! Event,
- {ok, Pid}.
+handle_event(Event = #event{type = Type}, State = {Pid, Types}) ->
+ case lists:member(Type, Types) of
+ true -> Pid ! Event;
+ false -> ok
+ end,
+ {ok, State}.
-handle_info(_Info, Pid) ->
- {ok, Pid}.
+handle_info(_Info, State) ->
+ {ok, State}.
-terminate(_Arg, _Pid) ->
+terminate(_Arg, _State) ->
ok.
-code_change(_OldVsn, Pid, _Extra) ->
- {ok, Pid}.
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.
%%----------------------------------------------------------------------------