diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2011-08-16 12:02:29 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2011-08-16 12:02:29 +0100 |
| commit | ad9abe5c9106d468bcc369118bcf69dfb8815f14 (patch) | |
| tree | adfb0356655c65b58a4275137d8ed37095956dae /src | |
| parent | b384571346491b87b77609fe50dfc6cccd25e831 (diff) | |
| download | rabbitmq-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.erl | 13 | ||||
| -rw-r--r-- | src/rabbit_tests_event_receiver.erl | 35 |
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}. %%---------------------------------------------------------------------------- |
